Spring Boot 2.0 你们是如何做到 0 宕机热部署的?

2019-04-15 23:44:11 +08:00
 waisir

Spring Boot 新手。正在学习中,新项目用到 Spring Boot,但在 0 宕机发布这个问题上有疑惑。

由于之前使用 PHP,发布流程中使用新版代码替换原有代码即可。

了解到 java 可以使用源代码、jar、war+tomcat 这几种方式运行。了解到有 spring-loaded 和 devtools 与热部署有关。(闻其名总感觉像类似像 webpack 中的 hot-reload...,仅限开发使用,用在生存环境会不会有性能问题?)

目前我使用的是 jar 包,每次发布需要中断约 15s 的时间(单机 1G+1Core)。我怀疑是我姿势不对,请不吝赐教。

10714 次点击
所在节点    Java
47 条回复
mind3x
2019-04-16 00:23:39 +08:00
你没有 load balancer 和冗余节点,单机谈什么热部署……
misaka19000
2019-04-16 00:29:05 +08:00
多负载 + 优雅停机
zjp
2019-04-16 01:06:02 +08:00
有再加一层代理的可以用单机多实例,启动完切代理端口。不过 1G 内存有点悬…
hyperbin
2019-04-16 01:07:54 +08:00
Java 还能源码部署?
WordTian
2019-04-16 02:16:18 +08:00
多节点加负载均衡吧
yuikns
2019-04-16 02:52:28 +08:00
试试 docker ?
petercui
2019-04-16 06:30:21 +08:00
凌晨停机部署
jbiao520
2019-04-16 06:50:07 +08:00
滚动部署
Cbdy
2019-04-16 07:03:59 +08:00
lb 了解一下
xuanbg
2019-04-16 07:55:35 +08:00
idea 有热部署功能,但仅限于在 idea 里面运行或调试。生产环境就只能做双机热备或分布式才能实现不停机更新了。其实不停机热更也只适用于版本兼容的情况,不兼容的时候,热更是要出大问题的!
hangszhang
2019-04-16 08:08:01 +08:00
生产环境的热部署没有多大意义
lhx2008
2019-04-16 08:10:32 +08:00
你需要前端再带一个 nginx,然后旧的不要停,直接起一个新的 jar,然后 nginx 改端口,平滑重启,把旧 jar 包的 kill 掉
gramyang
2019-04-16 08:25:57 +08:00
不是都说 Java 对热部署的支持不友好,最好不要热部署的吗?
Sharuru
2019-04-16 08:32:29 +08:00
单机谈什么热部署...

你 PHP 上传代码不要时间吗...顶多说是线上修 bug 的时候方便点( doge )
daryu
2019-04-16 09:09:40 +08:00
用 docker swarm 的 stack destory,弄多个实例做灰度发布或者金丝雀发布
mritd
2019-04-16 09:13:18 +08:00
Kubernetes 了解一下
cominghome
2019-04-16 09:14:58 +08:00
直接覆盖代码你怕是没死过...
kaneg
2019-04-16 09:15:04 +08:00
能接受 1G1 核的配置,还接受不了 15s 的停机时间?
lawler
2019-04-16 09:22:01 +08:00
所以,你知道了为什么 PHP 是世界上最好的语言,而 Java 不是了吧?
whp1473
2019-04-16 09:47:49 +08:00
if(机器数>=2){ while(关闭一台旧的,启动一台新的) }

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

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

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

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

© 2021 V2EX