如何平滑部署JavaWeb项目,让客户端不掉线?网上搜不到答案。。。

发布于 2021-11-24 19:51:56 字数 164 浏览 822 评论 18

RT,Java的Web项目在生产环境部署总是需要重启一下,而每次重启后,客户端所有操作都会丢失。
很多数据都未保存,业务逻辑中断,甚至还会引发业务数据一致性问题。

请问各位大神知道有什么好的解决办法吗?

不知道像阿里巴巴这样的公司,那么多的JavaWeb项目是怎么部署更新的呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(18

等风来 2021-11-30 14:55:09

Nginx后面有两台Web服务器和一台DB服务器,开了ip_hash,可能是session的原因。

顾挽 2021-11-30 14:55:07

回复
iphash是很不合理的,万一用户ip用着用着变了,还不是丢了

恋你朝朝暮暮 2021-11-30 14:55:04

LZ你有没有用
nginx负载均衡?难道你发布的项目只有一台服务器?

倚栏听风 2021-11-30 14:55:01

是session丢失的原因

空城仅有旧梦在 2021-11-30 14:54:59

回复
既然是集群,那session丢不了把,除非你的轮训模式特殊,集中式session不会丢

甜扑 2021-11-30 14:54:57

集中session,重启保证不退出。集群,避免业务中断

多彩岁月 2021-11-30 14:54:56

你们事务处理都没做好  考虑这个真的是想多了 

不再见 2021-11-30 14:54:56

-_-# 项目经理喜欢使用MySQL的MyISAM引擎,我开发的时候只在和资金有关的几张表里使用InnoDB,而且还是手动管理的事务

虐人心 2021-11-30 14:54:33

好像有个叫什么 nodejs的可以

回眸一笑 2021-11-30 14:52:59

你们不会是只有一个点吧?

终陌 2021-11-30 14:51:22

有事务,怎么会丢数据呢,伪命题。即使应用服务器重启了,也不会造成数据不一致的问题。

有集群,怎么会造成业务中断呢,伪命题。

冷默言语 2021-11-30 14:51:11

做HA不就行了?

噩梦成真你也成魔 2021-11-30 14:44:16

重启的时候,使用备用的服务器吧,只要保证业务不中断,数据不丢失,不冲突就好! 

巡山小妖精 2021-11-30 14:33:05

1. Java Web应用需要改造成无状态的。

2. 用户Session数据一定不要保存在Java应用中,重启或者crash都会导致会话失效。

3. 常见的用户Session存储使用Memcached集群,Redis有点大材小用了。

4. 反向代理是用户请求的第一站,推荐nginx。

5. 应用部署的第一步就是关流量,保证没有请求到需要重新部署的服务实例上。

恋你朝朝暮暮 2021-11-30 14:27:52

用Spring的话,有什么好的Session管理框架吗?

瑾夏年华 2021-11-30 14:20:37

回复
spring-session-data-redis基于redis搞的分布式session管理,搜搜资料,不过我没搞过.

夜司空 2021-11-30 12:20:37

回复
我一向喜欢简单的东西。 想使用session无非就是保存登陆token啥的, 直接使用cookie保存登陆token就搞定了。

拍不死你 2021-11-29 15:25:47

1)不要直接使用java的 Http Session。

2) 在Tomcat 前面配置一层代理nginx, 通过 upstream 的负载,一个个更新。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文