如何跨微服务部署代码更改?

时间:2019-04-02 08:47:59

标签: spring cloud microservices

我们通过eureka服务发现标识了10个相同的微服务实例,并通过网关将呼叫路由到它们。我们想在这10个实例上部署代码更改,但是代码更改应该是原子的。意味着在任何时间点,两个实例都在运行不同的代码。 简单的策略可能是关闭9个实例->在其上部署更改->升高它们->降低剩余的一个实例,并在部署更改后再次升高它。

这是在生产环境中要遵循的理想策略吗?还是要遵循特定的模式? 博客上的答案似乎是在讨论微服务模式,但是当某些实例具有更新的代码版本而其他实例尚未更新时,没有人谈论这种情况。

2 个答案:

答案 0 :(得分:0)

理想的策略是启动一些新实例,并开始逐渐平衡对它们的请求。负载平衡器可以进行IP地址固定,以便从特定时间点开始,IP地址仅从新实例中获取答复。

答案 1 :(得分:0)

在理想的生产世界中;您的基本要求不存在...通常,我们假设在服务器上有10%的地方部署了新代码。.请查看其在异常,延迟数方面的表现..如果一切都很好,我们会继续增加该百分比。.

但是我完全理解某些发行版(例如,某些数据库更改,尽管甚至有解决方案,但如果有则另作解决),或者对于某些情况,我们无法运行多个代码库。任何部署要问的第一个问题是“允许的停机时间”。

让我们假设您需要最少的停机时间...那么解决方案是,您将其部署在另外10台服务器上;测试它们..一切正常,然后将ELB指向新服务器。.请注意,由于我们有基本要求,此处将有几分钟的停机时间。