1、实践背景
现在java主流的微服务技术栈毫无疑问是SpringCloud,这也是经销商技术部微服务实践采用的技术栈。注册中心采用公司技术部的nacos。在SpringCloud实践中大家普遍遇到的问题是应用默认是无法做到无损下线的,需要更多的辅助措施才能得到无损下线的效果,本文主要分享我们团队解决应用无损下线的一些实践。
2、有损下线
有损下线指的是应用在下线过程中,部分请求没有被妥善处理,出现请求异常进而影响应用可用性,影响用户使用。有损下线原因分析:
损失原因1:springboot实例默认接收到停止信号TERM时,马上停止服务 。如下图
当springboot实例收到TERM信号立即关闭的时候,很有可能请求队列中还有请求,还有一部分正在处理的请求。如果立即关闭这些请求都会损失掉。
解决方案:在springboot 2.3版本以上,提供了优雅关闭(Graceful Shutdown)配置。如下:
<span style="color:#444444"><span style="background-color:#f6f6f6"><code><span style="color:#333333"><strong>server</strong></span>: </code>
<code> <s