如何不停机进行版本更新
来源:4-7 店铺注册功能之Controller层的实现(下)
321121254
2018-04-03
生产环境中,如何不停机进行版本更新?
写回答
2回答
-
一般很难做到不停服务更新 你得去了解程序运行机制,需要把程序加载到内存去执行,并且对于java程序来说,代码发生变动之后需要重新编译,编译后你想生效还需要改动内存里的程序,所以几乎是非常难的。建议重新发布。一般正常的做法是多个实例通过一个bns来负载均衡去访问 这样其中一个更新程序的时候可以暂时不访问它 好了之后恢复服务再去弄另外一个 这样对外来说是无损的。听不懂的话可以查下水平扩容以及负载均衡 主备等
012018-04-04 -
翔仔
2018-04-04
这里跟你说一个原理,就是一般情况下,会把多ip和其端口号设置成一个组,然后请求过来的时候,随机均衡从组里取出一个ip和端口进行访问(即你理解的其中一个tomcat),如果当实例需要升级,则将一半的实例对应的ip和端口从组里移除,外来的访问就访问不到它们了,原来的继续提供服务。等那一半升级完成之后,和组里的另外一半切换,切换之后另外一半被换出来,这样服务就是最新的了。最新被切换出来的那一半就去做升级,升级完重新上线,这样服务就一直是最新的。前提你得保证一半实例能扛得住访问的压力。这只是其中一种比较简单的做法,其他做法你可以去研究一下
00
相似问题