如何优雅的进行服务更新发布

2019-03-05  本文已影响0人  LOC_Thomas

微服务更新是一个超级频繁的操作。并且有很多细节需要注意,才能保证服务能够无缝的进行更新和升级。在实际的工作中总结了一些必要的步骤,下面来详细说明一下

执行命令systemctl stop的时候,会发出143信号,springboot会接受这个信号,触发ContextClosedEvent事件。
在接受到ContextClosedEvent事件的时候,主程序应该有一段时间的等待时间(一般15秒)。因为eureka-client在接受到这个信号的时候,会告诉eureka需要把实例标记成down状态。需要等待其他客户端更新状态。可以通过修改相关的eureka的配置来缩短更新时间。
等待一段时间后,其他客户端都进行了更新,然后获得tomcat的线程池,执行shutdown方法,并且设置最长等待时间(一般15秒),如果到达最长时间线程池还没有正常结束,则通过shutdownNow方法,强制结束
用新的jar包替换更新之前的老jar包
执行命令systemctl start启动服务
等待30s后(一般启动时间为30s左右),通过访问/actuator/health来获得该服务的健康状态。
如果失败则停止后续实例的发布,如果成功则继续发下一个实例。
根据不同的状态进行相关的责任人的通知。

上一篇下一篇

猜你喜欢

热点阅读