首页 > 解决方案 > 在不中断当前执行的情况下升级微服务

问题描述

假设您有一个微服务架构,其拓扑包含两个服务 A 和 B,每个服务都运行 3 个实例。

A 它是一个接收 Web 请求的 Web 服务,B 它是一个基于 cli 的应用程序,用于侦听队列中的事件

现在你想部署一个新版本的 B,但是因为 B 的实例现在可以处理信息。

如何在不中断当前执行的情况下进行部署,用新实例替换旧实例?

有任何工具、模式或策略可以处理这种情况吗?

标签: dockerkubernetescontainersmicroservices

解决方案


您需要一个简单的策略,停止为即将部署的实例提供对 B 的新请求。如果它使用休息来消耗事件,那么您可以使用负载均衡器,如果您有负载均衡器,那么使用领事,领事模板,您可以将该实例与负载均衡器分离。保持大约 5 分钟(您需要评估),然后开始部署。如果您不确定如何确定当前实例是否已完成现有事件的所有处理,则必须使用此方法。如果这些事件是使用 MQ 消费的,那么您可以调用一个端点,该端点将禁用新的事件消费。然后有相同的等待和部署策略。


推荐阅读