小弟,请教大家一个问题 Java web 项目 大家是怎么做到 服务器热更新的?

2018-08-07 10:33:19 +08:00
 zzf2017

最近开发了 java web 的项目 ,把代码 打成 war 包 放到服务器上,但是 我发现每次都要删除旧 war 包,添加新 war 包才能 发布新的版本,问问各位大佬,java 有没有什么 热更新技术?

11647 次点击
所在节点    Java
64 条回复
kaedea
2018-08-07 15:41:42 +08:00
OSGi ?
Devopsre
2018-08-07 15:49:41 +08:00
@lgpqdwjh 这是第三方模块做的吧 upsync ?
qinxi
2018-08-07 16:02:05 +08:00
@TommyLemon 不知道你的评论有什么意义.
跟问题除了语言都是 java,基本没有任何相关

再看一下你的过往评论......
并不是想否定你的开源精神, 只是讨厌你推广的方式
TommyLemon
2018-08-07 16:23:39 +08:00
@qinxi Java web 开发 + 热更新,都符合,怎么会不相关呢?
rockyou12
2018-08-07 17:24:59 +08:00
java 代码、class 层面的热更新除了本地开发没多大用,还不好控制服务器上的版本。用 7 层或 4 层的负载均衡更新才是现在的王道,特别是用 k8s、rancher 这些容器平台,甚至不需要自己去配 nginx 规则,在集群中就可以自动帮你切换容器。
tangzhangming
2018-08-07 17:34:23 +08:00
投诚 PHP
zwy100e72
2018-08-07 17:55:03 +08:00
@TommyLemon 还是建议同样的话不要复制粘贴很多次,可以相对提高信息的信噪比😀
guanhui07
2018-08-07 17:58:00 +08:00
换 php
zzf2017
2018-08-07 18:07:41 +08:00
@tangzhangming @guanhui07 @zlhsvc @geying
但是我拒绝
TommyLemon
2018-08-07 18:11:08 +08:00
@zwy100e72 感谢你的建议
qinxi
2018-08-07 18:28:46 +08:00
@TommyLemon 并没有看到热更新的介绍. 甚至连 '更新' 两个字都没有
WhatIf
2018-08-07 18:54:57 +08:00
哪有那么复杂,下载下来的 tomcat 默认就是支持热部署的,除非你的文件时间有问题,认为不应该发布新版本
热部署有个问题就是内存的使用,很容易 perm size 问题,这时候要重启 tomcat 了
lgpqdwjh
2018-08-07 19:39:41 +08:00
@Devopsre 完全基于 lua 实现,这两个月会开源
sdrzlyz
2018-08-07 20:06:42 +08:00
热更新 http server 的话,可以用 fd 呀。。。fd 的话,与语言的关系就不大了。。。
robert9484
2018-08-07 22:01:53 +08:00
蓝绿发布的时候,怎么把将要更新的机器流量停掉?因为不可能茂茂然停掉的,因为可能还有会话存在
TommyLemon
2018-08-07 22:21:15 +08:00
@qinxi 确实有的,只是没写哈。
开放(GET,HEAD)API 是完全自动化的不用管,前端(客户端)改下请求 JSON 就会自动改变 SQL 语句;
简单的非开放 API(POST,DELETE,PUT)一般只需要后端修改校验规则的 Request 表就行,规则即时生效。
以上接口一般在中小型互联网网站与客户端 App 中占 80%-95%,也就是用 APIJSON 大部分 API 都支持热更新。
https://github.com/TommyLemon/APIJSON
micean
2018-08-07 22:29:22 +08:00
如果系统还在负载中,能实现热更新吗? classloader 能顺利卸载?
如果不在负载中,冷热更新有意义吗?
Antidictator
2018-08-08 09:04:40 +08:00
@jiangjz 为什么只有我+1
jiangjz
2018-08-08 09:15:25 +08:00
@Antidictator 可能不符合楼主需求
Jafee
2018-08-08 09:47:32 +08:00
Jenkins 可以在你 Push 代码的时候自动拉取,然后清理、编译、测试、打包、运行,一条龙服务。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/477509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX