我们的生产在 LB+TOMCAT 上运行,我们使用自己定制的 SAFE-DEPLOY 工具将更改部署到生产中。由于我们的系统致力于提供 24/7 可用性,该工具部署更改如下
用于特定服务的总服务器分为几组。让我们假设它分为 2 组,他们停止一组,部署更改并启动该组。第一个组完成后,他们将更改部署到另一个组。在大多数情况下,它运行良好,没有任何问题。
问题是由特殊情况引起的。一个服务生成一个令牌,客户端将其作为凭证,现在我们更改了令牌的格式,如果我们使用相同的部署方法,应该有一些潜在的问题。即 group1 停止并部署新代码然后重新启动(没关系),group2 停止(准备部署新代码),现在group2部署时可能会发生错误,因为在此期间group1可能会收到group2生成的旧格式令牌(1.group1部署时,group2运行旧代码,2.group2停止不能处理请求),客户端收到一个错误,表明令牌错误,但它不是真正的错误令牌。
我有一个解决方案是,让我们的代码既可以处理新格式令牌又可以处理旧格式令牌,但只生成新格式令牌,运行 1 天后,我们可以做一个只处理新格式令牌的部署。我想它工作得很好,但这不是恩典。
我的问题是,是否有任何优雅部署方法使服务器可以处理已生成的旧格式令牌和新格式令牌,而无需更改任何代码。
顺便说一句:我在 tomcat 上找到了一个参考,最佳实践热部署,它只适用于 tomcat 7,我们的工作 tomcat 是 6.0.26。