0

所以我们正在构建一个包含大约 10 个服务的非常核心的应用程序——我们应该如何最好地管理应用程序版本之间的依赖关系?

我们决定将事物拆分为服务,每个服务负责一个小的逻辑任务(词分析器只分析词,词服务允许其他服务获取有关词和特殊词的信息,分类器使用来自执行分类的世界分析器)

独立的应用程序都有定义良好的接口——但有时这些会发生变化(例如,需要一个新字段)。

当它们发生变化时,我们需要跟踪现在存在依赖关系的事实:分析器的 0.2 版现在需要 o.6 版的 word 服务。

其他人如何做到这一点?什么有效,什么是屁股痛?我们希望能够快速且经常地发布。我们已经让詹金斯辛勤地运行所有的规格。

4

1 回答 1

1

版本化您的协议并向后兼容。v 0.2 的分析器必须与新版本 0.6 的 word service以及现有部署的 v 0.5 的 word service 一起使用。解散永远是几个重叠版本的舞蹈。顺便说一句,接口永远不会改变。接口的新版本是发布的,客户端和实现者都必须能够区分正在使用的版本。您的服务必须优雅地降级为与其交互的协议的所有已部署版本。如果您可以确定不再部署,则可以停用不再部署的版本。如果服务/协议公开暴露,你应该保持向后兼容性很多更长。

REST 设计手册是关于这个主题的好读物。

于 2012-07-17T12:19:53.637 回答