
Spring Boot 新手。正在学习中,新项目用到 Spring Boot,但在 0 宕机发布这个问题上有疑惑。
由于之前使用 PHP,发布流程中使用新版代码替换原有代码即可。
了解到 java 可以使用源代码、jar、war+tomcat 这几种方式运行。了解到有 spring-loaded 和 devtools 与热部署有关。(闻其名总感觉像类似像 webpack 中的 hot-reload...,仅限开发使用,用在生存环境会不会有性能问题?)
目前我使用的是 jar 包,每次发布需要中断约 15s 的时间(单机 1G+1Core)。我怀疑是我姿势不对,请不吝赐教。
1 mind3x Apr 16, 2019 你没有 load balancer 和冗余节点,单机谈什么热部署…… |
2 misaka19000 Apr 16, 2019 via Android 多负载 + 优雅停机 |
3 zjp Apr 16, 2019 via Android 有再加一层代理的可以用单机多实例,启动完切代理端口。不过 1G 内存有点悬… |
4 hyperbin Apr 16, 2019 via Android Java 还能源码部署? |
5 WordTian Apr 16, 2019 via Android 多节点加负载均衡吧 |
6 yuikns Apr 16, 2019 via iPhone 试试 docker ? |
7 petercui Apr 16, 2019 凌晨停机部署 |
8 jbiao520 Apr 16, 2019 via Android 滚动部署 |
9 Cbdy Apr 16, 2019 via Android lb 了解一下 |
10 xuanbg Apr 16, 2019 idea 有热部署功能,但仅限于在 idea 里面运行或调试。生产环境就只能做双机热备或分布式才能实现不停机更新了。其实不停机热更也只适用于版本兼容的情况,不兼容的时候,热更是要出大问题的! |
11 hangszhang Apr 16, 2019 生产环境的热部署没有多大意义 |
12 lhx2008 Apr 16, 2019 via Android 你需要前端再带一个 nginx,然后旧的不要停,直接起一个新的 jar,然后 nginx 改端口,平滑重启,把旧 jar 包的 kill 掉 |
13 gramyang Apr 16, 2019 不是都说 Java 对热部署的支持不友好,最好不要热部署的吗? |
14 Sharuru Apr 16, 2019 via Android 单机谈什么热部署... 你 PHP 上传代码不要时间吗...顶多说是线上修 bug 的时候方便点( doge ) |
15 daryu Apr 16, 2019 用 docker swarm 的 stack destory,弄多个实例做灰度发布或者金丝雀发布 |
16 mritd Apr 16, 2019 via iPhone Kubernetes 了解一下 |
17 cominghome Apr 16, 2019 直接覆盖代码你怕是没死过... |
18 kaneg Apr 16, 2019 via iPhone 能接受 1G1 核的配置,还接受不了 15s 的停机时间? |
19 lawler Apr 16, 2019 所以,你知道了为什么 PHP 是世界上最好的语言,而 Java 不是了吧? |
20 whp1473 Apr 16, 2019 if(机器数>=2){ while(关闭一台旧的,启动一台新的) } |
21 huijiewei Apr 16, 2019 nginx 后面跑 2 个 jar 实例 热切换 |
22 allanzhuo Apr 16, 2019 生产环境热部署,真的是不怕死啊 |
23 keymao Apr 16, 2019 单机热部署啥... 多个负载 切换一个 更新一个呗... 轮换着来 业务就不会停了... |
24 chendy Apr 16, 2019 前面放一个反代,启动新节点,启动之后把流量切过去就行了 不过 1c1g 的配置也没多大的量吧,停一会就停一会吧… |
25 zifangsky Apr 16, 2019 不要问,问就是:PHP 是世界上最好的语言! |
26 hantsy Apr 16, 2019 You should consider applying blue-green pipelines with DevOps. It is an issue of the languages/frameworks you are using, you have to envolve your development progress. |
27 LokiSharp Apr 16, 2019 多节点负载均衡 |
28 gscoder Apr 16, 2019 集群部署呗。。开发模式下那种热更新浪费性能,没有用在生产环境的。你说的这种只有脚本型语言才做得到,比如 php |
29 loveCoding Apr 16, 2019 nginx 反代两个 jar 实例端口就行 |
30 abcbuzhiming Apr 16, 2019 我就说很多人误以为 PHP 不需要编译,所以就能热部署了。实际上你们这种玩法就是错的。根本达不到真的热部署的要求 |
31 hahaayaoyaoyao Apr 16, 2019 via Android @abcbuzhiming 是的 |
32 luozic Apr 16, 2019 冗 ( app 容器 )+ 分式并控制架才有 不停更新,其他的估是’自以“的不停更新。 |
33 ala2008 Apr 16, 2019 负载均衡 |
34 yc8332 Apr 16, 2019 其实楼主的意思就是不停机部署。。。单机应该是不可能,不然就是单机起两个,不同端口,启完了再切过去新端口 |
35 coolzilj Apr 16, 2019 via Android 你们吓得楼主都不敢出来说话了 |
37 freedomshi Apr 16, 2019 还是 php 最好。。。 |
38 a663 Apr 16, 2019 via Android k8s |
39 hillMonkey Apr 16, 2019 Portainer + Swarm |
40 rffan Apr 16, 2019 没办法单节点热部署,无论如何都得重启 tomcat 等容器。 |
41 xfriday Apr 16, 2019 k8s 单节点也可以滚动更新的,更新过程中旧副本集继续提供服务,更新完成并成功才切换到新副本集,如果失败自动回滚 |
42 Infernalzero Apr 16, 2019 你想就靠单机解决这个问题的话就只能不用 spring 这套了,micronaut 那套就是为了优化这个问题,在编译时完成了依赖注入 |
43 qiyuey Apr 17, 2019 集群的事情,不要靠单机解决 |
44 ricwang Apr 17, 2019 docker 部署,nginx 做负载,起一个新版本的容器,正常后再 kill 原本旧版本的容器 我的处理方式 |
45 wizzer Apr 22, 2019 自带运维中心,演示地址 https://nutzwk.wizzer.cn |
46 zhaoxueqin248 May 6, 2020 @mind3x 单纯请教,就是以前看过 Nginx 就是单机 直接更换 sbin/nginx 二进制执行文件,新老 NGINX 进程替换, 来进行的 Nginx 升级。讲道理 ,Spring-Boot 应该从技术上也是是可行的吧? |