Java 使用Quarkus进行零停机部署

Java 使用Quarkus进行零停机部署,java,quarkus,Java,Quarkus,Quarkus很棒,但您不能进行零停机部署,或者您可以吗 我对Quarkus的体验仅限于简单的RESTful web应用程序。将其作为自己的容器本地运行,没有Jetty,没有Tomcat,因此它可以自己运行 问题是,如果不加以控制,比如在应用服务器内部(如提供零停机即时部署的NGINX单元),部署Quarkus web应用将非常痛苦,几乎100%停机,除非您采取一些巧妙的技巧 我这里的问题是:你能拥有零停机时间的基于Quarkus的web应用部署吗?如果是,如何实现?零停机时间部署没有“聪明的诀

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

我对Quarkus的体验仅限于简单的RESTful web应用程序。将其作为自己的容器本地运行,没有Jetty,没有Tomcat,因此它可以自己运行

问题是,如果不加以控制,比如在应用服务器内部(如提供零停机即时部署的NGINX单元),部署Quarkus web应用将非常痛苦,几乎100%停机,除非您采取一些巧妙的技巧

我这里的问题是:你能拥有零停机时间的基于Quarkus的web应用部署吗?如果是,如何实现?

零停机时间部署没有“聪明的诀窍”。每个人都使用一个简单的原则(我很确定Nginx单元没有什么不同):使用负载平衡器前置应用程序。(我听说Nginx是个不错的…)

为了进行udpate,您需要:

  • 保持旧版本运行,并使负载平衡器指向它
  • 开始新版本
  • 当它完全启动时,将负载平衡器上的流量从旧版本重定向到新版本(这有多种变体,您可以一次或逐渐重定向所有流量,您可以执行会话排空等)
  • 旧版本不再使用时,请将其停止并删除
  • Quarkus非常适合在Kubernetes中运行,它提供了开箱即用的零停机部署(使用我上面描述的相同原理)。

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

    为了进行udpate,您需要:

  • 保持旧版本运行,并使负载平衡器指向它
  • 开始新版本
  • 当它完全启动时,将负载平衡器上的流量从旧版本重定向到新版本(这有多种变体,您可以一次或逐渐重定向所有流量,您可以执行会话排空等)
  • 旧版本不再使用时,请将其停止并删除
  • Quarkus非常适合在Kubernetes中运行,它提供了开箱即用的零停机部署(使用我上面描述的相同原理)