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

Java 最大限度地减少部署期间的客户中断,java,session,terracotta,Java,Session,Terracotta,如何将新代码部署到生产环境中,以使客户体验不会中断 让我们假设一个电子商务网站处于负载平衡环境中,没有共享会话状态。Tomcat是应用服务器 我能想到的唯一想法是(1)使用JavaRebel,但我没有这方面的经验,也不知道会出什么问题(可能是会话对象不匹配,例如,如果你从类中删除了一个成员)(2)实时监控你的用户在购物体验中的位置,并防止将新项目添加到购物车中;等待所有现有购物者完成订单或到期;然后关闭服务器并部署新代码 有什么想法吗?或者,在这种情况下,在web服务器之间使用terracott

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

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

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


有什么想法吗?或者,在这种情况下,在web服务器之间使用terracotta之类的工具共享会话数据是至关重要的?那么,如何将新代码部署到已删除或添加会话对象成员的web服务器上?

常见的方法是每次从负载平衡池中取出一台服务器,将新代码部署到该服务器上,然后将其放回池中

一种常见的方法是每次从负载平衡池中取出一台服务器,将新代码部署到其中,然后将其放回池中

我见过的常见方法:

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

我见过的常见方法:

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

对于那些要求结束这个问题的人来说,这是一个怎样的话题?FAQ中说我可以问“编程专业特有的问题”。我没有投票决定是否结束,但部署通常是系统管理员/操作人员而不是开发人员关心的问题,因此服务器故障可能更合适。对于那些要求结束此问题的人,这是一个怎样的主题?FAQ中说我可以问“编程行业特有的问题”。我没有投票决定是否结束,但部署通常是系统管理员/操作人员而不是开发人员关心的问题,因此,服务器故障可能更合适。但盲目这样做会导致用户跳转到下一个没有会话信息的可用web服务器。但盲目这样做会导致用户跳转到下一个没有会话信息的可用web服务器。