如何不停机进行版本更新

来源:4-7 店铺注册功能之Controller层的实现(下)

321121254

2018-04-03

生产环境中,如何不停机进行版本更新?

写回答

2回答

翔仔

2018-04-03

一般很难做到不停服务更新 你得去了解程序运行机制,需要把程序加载到内存去执行,并且对于java程序来说,代码发生变动之后需要重新编译,编译后你想生效还需要改动内存里的程序,所以几乎是非常难的。建议重新发布。一般正常的做法是多个实例通过一个bns来负载均衡去访问 这样其中一个更新程序的时候可以暂时不访问它 好了之后恢复服务再去弄另外一个 这样对外来说是无损的。听不懂的话可以查下水平扩容以及负载均衡 主备等

0
1
321121254
如果是tomcat集群,比如说两个服务器吧。我把第一个服务器先挂掉,然后修改应用,完事儿后再挂上。那么这个时候用户访问,刷新一下到了新版应用的服务器,再刷新一下又到了旧版应用的服务器,也就是第二个还没有更新的服务器,会不会出现这种情况。另外,nginx重启的这段时间会不会造成网站无法访问?
2018-04-04
共1条回复

翔仔

2018-04-04

这里跟你说一个原理,就是一般情况下,会把多ip和其端口号设置成一个组,然后请求过来的时候,随机均衡从组里取出一个ip和端口进行访问(即你理解的其中一个tomcat),如果当实例需要升级,则将一半的实例对应的ip和端口从组里移除,外来的访问就访问不到它们了,原来的继续提供服务。等那一半升级完成之后,和组里的另外一半切换,切换之后另外一半被换出来,这样服务就是最新的了。最新被切换出来的那一半就去做升级,升级完重新上线,这样服务就一直是最新的。前提你得保证一半实例能扛得住访问的压力。这只是其中一种比较简单的做法,其他做法你可以去研究一下

0
0

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程