2

只是好奇下面的场景会发生什么?

  1. 在最新的 thrift 服务定义中删除了定义的 API;
  2. 服务器端的实现升级到最新定义(即不再有关于被移除API的实现);
  3. 一些客户端可能仍然停留在过时的服务定义上,并且有流量到已删除的 API。

作为一个更普遍的问题,是否有最实用的方法来淘汰现有的 API(即,一旦在 .thrift 文件中定义)?

4

1 回答 1

0

这是软版本控制的好处之一,它不是 Thrift 独有的功能。API 可能会随着时间而改变,只要遵守特定的、非常少的规则集,就会有明确定义的应用程序行为方式。

关于 Thrift,这些规则包括永远不应该更改任何给定结构成员或参数的特定字段 ID 的类型。服务名称和方法名称也是如此。数字字段/参数 ID 和服务/方法名称是在线数据中使用的标识符。

因此,

  • 如果字段/参数的类型发生变化,数字 ID 也应更改
  • 应该对已弃用的字段和方法进行注释,而不是从 IDL 中删除(以防止它们以后被重用)

最后一点值得一提的是关于 的用法:由于所需语义的工作方式,required此属性可能不会从已发布的 API 结构成员中删除。

否则,当旧客户端调用新服务时,您将遇到兼容性问题,反之亦然。

于 2017-04-12T15:04:16.557 回答