1

我们正在尝试使用 MS 的 ServiceFabric 来做微服务。

场景:我们有一个 Service1 运行 version1 并准备升级到 v2。

其他三个服务依赖于 Service1 的接口。我们希望能够发布 Service1 的 v2,但保持 v1 运行,直到我们针对 v2 升级和测试这三个服务。

我找到的所有示例,v2 立即替换了 v1。这个可以配置吗?有没有一种方法可以告诉服务发现机制我依赖于给定服务的特定版本?

4

1 回答 1

2

正如您所提到的,应用程序升级工作流程将用 v2 替换 v1。但是,如果您希望 v1 和 v2 共存一段时间(以允许您进行测试,逐步将一些用户路由到新版本等),您可以通过稍微复杂的工作流程来完成此操作:

  1. 使用版本 v2 预配和创建新的服务实例。
  2. 对此实例 (v2) 执行测试。
  3. 一旦您对测试感到满意,请将您的依赖服务指向新实例 (v2)。
  4. 一旦不再使用 v1 实例,请将其删除。

由于需要自己管理此过程、处理依赖链等,这当然可能会给您带来额外的麻烦。这就是权衡 - 如果您想要更多地控制升级/推出过程,您必须自己处理更多细节。

或者,您可以考虑建立一个“暂存”集群,您可以在其中部署和测试服务的新版本,而不会影响您的生产服务,并且只有在阶段验证后才将部署部署到您的生产集群。我们的一些客户选择了这条路线,因为它使部署和验证工作流程更加简单,但代价是额外的资源。

于 2015-11-19T21:59:54.037 回答