如何将新代码部署到生产中以使客户体验不会中断?
假设一个电子商务网站处于负载平衡环境中,没有共享 session 状态。 Tomcat 是应用程序服务器。
我能想到的唯一想法是(1)使用JavaRebel,但我没有这方面的经验,也不知道会出现什么问题(可能是 session 对象不匹配,例如,如果您从类中删除成员) ) (2) 实时监控用户的购物体验并防止将新商品添加到购物车;等到所有现有购物者完成订单或订单过期;然后关闭服务器并部署新代码。
有什么想法吗?或者在这种情况下,使用 terracotta 之类的东西在 Web 服务器之间共享 session 数据至关重要?话又说回来,如何将新代码部署到已删除或添加 session 对象成员的 Web 服务器上?
最佳答案
我见过的常见方法:
- 如果没有太多状态,则将其存储在客户端的 cookie 中 - 这还有一个优点,即不需要 IP 关联性,因此可以更均匀地分发请求
- 共享存储(DB、Terracotta 等)- 显然这可能成为瓶颈
- 在安静的时间部署并希望没有人注意到
- 从新 session 池中删除服务器,然后监视日志并等待请求消失
关于java - 最大限度地减少部署期间的客户干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5601952/