只是好奇下面的场景会发生什么?
- 在最新的 thrift 服务定义中删除了定义的 API;
- 服务器端的实现升级到最新定义(即不再有关于被移除API的实现);
- 一些客户端可能仍然停留在过时的服务定义上,并且有流量到已删除的 API。
作为一个更普遍的问题,是否有最实用的方法来淘汰现有的 API(即,一旦在 .thrift 文件中定义)?
只是好奇下面的场景会发生什么?
作为一个更普遍的问题,是否有最实用的方法来淘汰现有的 API(即,一旦在 .thrift 文件中定义)?
这是软版本控制的好处之一,它不是 Thrift 独有的功能。API 可能会随着时间而改变,只要遵守特定的、非常少的规则集,就会有明确定义的应用程序行为方式。
关于 Thrift,这些规则包括永远不应该更改任何给定结构成员或参数的特定字段 ID 的类型。服务名称和方法名称也是如此。数字字段/参数 ID 和服务/方法名称是在线数据中使用的标识符。
因此,
最后一点值得一提的是关于 的用法:由于所需语义的工作方式,required
此属性可能不会从已发布的 API 结构成员中删除。
否则,当旧客户端调用新服务时,您将遇到兼容性问题,反之亦然。