在不破坏当前执行的情况下升级微服务

时间:2018-05-29 13:31:51

标签: docker kubernetes containers microservices

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

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

现在您要部署新版本的B,但由于B的实例目前可以处理信息。

如何部署,在不破坏当前执行的情况下替换新实例?

有哪些工具,模式或策略可以处理这种情况?

1 个答案:

答案 0 :(得分:0)

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