云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 对于微服务来说,服务的优雅上下线是必要的。就上线来说,如果组件或者容器没有启动成功,就不应该对外暴露服务,对于下线来说,如果机器已经停机了,就应该保证服务已下线,如此可避免上游流量进入不健康的机器。 优雅下线 基础下线(Spring/SpringBoot/内置容器) 首先JVM本身是支持通过shutdownHook的方式优雅停机的。 Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { close(); } }); 此方式支持在以下几种场景优雅停机: 1.程序正常退出 2.使用System.exit() 3.终端使用Ctrl+C 4.使用Kill pid干掉进程 那么如果你偏偏要kill -9程序肯定是不知所措的。 而在Spring Boot中,其实已经帮你实现好了一个shutdownHook,支持响应Ctrl+c或者kill -15 TERM信号。 随便启动一个应用,然后Ctrl+c一下,观察日志就可知, 它在AnnotationConfigEmbeddedWebApplicationContext这个类中打印出了疑似Closing...的日志,真正的实现逻辑在其父类