我们在测试及生产环境下总结目前Dubbo优雅停机问题存在几个问题:
[1]Spring可能先于框架关闭,导致业务服务无法正确执行完成;
[2]tomcat+spring场景,中间件停机可能会导致class被回收,导致log日志无法输出,甚至报class not found;
[3]如果存在多个hook,如spring本身有hook,无法保证hook执行顺序;
[4]zk在大数据量同步通知下延迟严重,导致注销后仍有请求(目前版本简单sleep了一下);
[5]停机时间无法设置,官方关于“停机设置标志位”的描述有误。

综上所述,我们的优化作法是将框架的优雅停机委托给Spring管理,通过监听Spring的close事件触发停机,这样做有两个好处:(1)保证框架停机优于Spring关闭;(2)应用用起来简单,只需要维护Spring生命周期;(3)相对于hook方式,主动调用停机接口更让人放心。

[ Full content available at: 
https://github.com/apache/incubator-dubbo/issues/2435 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to