什么是优雅上下线
关于”优雅上下线”这个词,我没找到官方的解释,我尝试解释一下这是什么。
首先,上线、下线大家一定都很清楚,比如我们一次应用发布过程中,就需要先将应用服务停掉,然后再把服务启动起来。这个过成就包含了一次下线和一次上线。
那么,”优雅”怎么理解呢?
先说什么情况我们认为不优雅:
1、服务停止时,没有关闭对应的监控,导致应用停止后发生大量报警。
2、应用停止时,没有通知外部调用方,很多请求还会过来,导致很多调用失败。
3、应用停止时,有线程正在执行中,执行了一半,JVM进程就被干掉了。
4、应用启动时,服务还没准备好,就开始对外提供服务,导致很多失败调用。
5、应用启动时,没有检查应用的健康状态,就开始对外提供服务,导致很多失败调用。
以上,都是我们认为的不优雅的情况,那么,反过来,优雅上下线就是一种避免上述情况发生的手段。
Dubbo的优雅上下线
因为Spring中提供了ApplicationListener接口,帮助我们来监听容器关闭事件,那么,很多web容器、框架等就可以借助这个机制来做自己的优雅上下线操作。
如tomcat、dubbo等都是这么做的。
应用在停机时,接收到关闭通知时,会先把自己标记为不接受(发起)新请求,然后再等待10s(默认是10秒)的时候,等执行中的线程执行完。
那么,之所以他能做这些事,是因为从操作系统、到JVM、到Spring等都对优雅停机做了很好的支持。
本文探讨了何为优雅上下线,如何避免应用停机时的常见问题,并以Dubbo为例,介绍了Spring ApplicationListener在实现优雅停机中的作用。
4528

被折叠的 条评论
为什么被折叠?



