java - 最大限度地减少部署期间的客户干扰

标签 java session terracotta

如何将新代码部署到生产中以使客户体验不会中断?

假设一个电子商务网站处于负载平衡环境中,没有共享 session 状态。 Tomcat 是应用程序服务器。

我能想到的唯一想法是(1)使用JavaRebel,但我没有这方面的经验,也不知道会出现什么问题(可能是 session 对象不匹配,例如,如果您从类中删除成员) ) (2) 实时监控用户的购物体验并防止将新商品添加到购物车;等到所有现有购物者完成订单或订单过期;然后关闭服务器并部署新代码。

有什么想法吗?或者在这种情况下,使用 terracotta 之类的东西在 Web 服务器之间共享 session 数据至关重要?话又说回来,如何将新代码部署到已删除或添加 session 对象成员的 Web 服务器上?

最佳答案

我见过的常见方法:

  • 如果没有太多状态,则将其存储在客户端的 cookie 中 - 这还有一个优点,即不需要 IP 关联性,因此可以更均匀地分发请求
  • 共享存储(DB、Terracotta 等)- 显然这可能成为瓶颈
  • 在安静的时间部署并希望没有人注意到
  • 从新 session 池中删除服务器,然后监视日志并等待请求消失

关于java - 最大限度地减少部署期间的客户干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5601952/

相关文章:

Java 不一致的继承机制?

java - 使用和不使用特定类路径文件的 JUnit 测试

Java 打包约定 - 模型怎么样?

java - 无效的 ISO 8583 header

service - 剪贴板复制粘贴在 Windows Server 2008/Vista 64 位上的服务中不起作用

php - 需要有关构建无状态 Web 应用程序的信息

php - 使用 session_start() 时 Varnish Cache 不缓存 PHP 页面

单个服务器上的 session 集群 Tomcat + terracotta

grails - Grails 1.3.4/Terracotta 3.5.1:部署.war文件失败

java - Mybatis的分布式缓存