使用 Quarkus 实现零停机部署

时间:2021-03-25 08:21:02

标签: java quarkus

Quarkus 很棒,但您不能进行零停机部署,或者您可以吗?

我对 Quarkus 的体验仅限于简单的 RESTful Web 应用程序。将它作为自己的容器在本机运行,没有 Jetty,也没有 Tomcat,所以它自己运行。

问题是,如果没有被包含,在应用程序服务器内部(例如 NGINX Unit 提供开箱即用的零停机部署)部署 Quarkus Web 应用程序将非常痛苦,几乎 100% 停机时间,除非你做一些聪明的技巧。

我的问题是:您是否可以部署零停机时间的基于 Quarkus 的 Web 应用程序?如果是,如何部署?

1 个答案:

答案 0 :(得分:3)

零停机部署没有“聪明的技巧”。每个人都使用一个简单的原则(我很确定 Nginx Unit 没有什么不同):您在应用程序前面使用负载均衡器。 (听说 Nginx 不错...)

为了更新,您:

  1. 保持旧版本运行并保持负载均衡器指向它;
  2. 开始一个新版本;
  3. 当它完全启动时,将负载均衡器上的流量从旧版本重定向到新版本(这有多种变体,您可以一次或逐步重定向流量,您可以进行会话排空等);
  4. 当不再使用旧版本时,停止并删除它。

Quarkus 非常适合在 Kubernetes 中运行,它提供开箱即用的零停机部署(使用我上面描述的相同原则)。