在部署期间最大限度地减少客户中断

时间:2011-04-09 00:05:48

标签: java session terracotta

如何将新代码部署到生产环境中,以免客户体验中断?

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

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

有什么想法吗?或者这是一种情况,在网络服务器之间分享像兵马俑这样的会话数据至关重要?那么,如何将新代码部署到已删除或添加会话对象成员的Web服务器上?

2 个答案:

答案 0 :(得分:2)

我见过的常见方法:

  • 如果没有多少状态然后将其存储在客户端,在cookie中 - 这也具有不需要IP亲和力的优势,因此请求可以更均匀地分发
  • 共享存储(DB,Terracotta等) - 显然这可能成为瓶颈
  • 在安静的时间部署,希望没有人注意到
  • 从池中删除服务器以获取新会话,然后监控日志并等待请求死亡

答案 1 :(得分:1)

一种常见的方法是一次从一个服务器中取出一个服务器,将新代码部署到它,然后将其放回池中。