接上篇《微服务实战spring cloud alibaba(十一)为spring cloud gateway增加jwt-token校验filter》。我们最终会把项目都部署到服务器中,在生产上很多同学在停掉服务这些都是直接kill 掉就可以了。但是是不是会经常出问题,就是生产数据库会有一些莫名其妙的脏数据。其实主要的原因就是我们直接kill的时候,服务会马上被停止,这个时候如果有业务接口还在运行的话,一小部分的业务可能数据就已经写入到数据库了,同时不会发生回滚,就造成了脏数据的情况。所以我们在生产上如何在停止的时候,保证服务里面没有接口还在跑业务,没有数据没处理完呢? 那就是今天所介绍的优雅停机。
关于spring boot优雅停机的方式有很多,我们目前实战的项目是基于spring boot2.3版本的,因此我们这里只介绍springboot2.3版本的优雅停机。其实在springboot2.3版本里面做优雅停机只需要添加一个配置即可。下面来演示下:
首先我们在配置文件里面添加如下配置:
server: shutdown: graceful spring: lifecycle: timeout-per-shutdown-phase: 20s
然后我们把项目打包,放到服务器上运行。
然后我们把服务进行停机,这里使用的命令也是kill只是有区别而已,是 kill -2 ${进程号},例如:
kill -2 335094
这时候我们看下进行打印的相关日志
是不是就成功了,以后我们再也不担心生产环境由于重启服务带来莫名其妙的脏数据问题了。
最后总结下:
1、本优雅停机的配置只适合springboot2.3及以上版本 2、在停服务的时候需要使用kill -2 ${进程号}
好了老惯例:
jar包启动,停止,状态查看脚本,请看:运维之-spring boot项目自动启动和停止脚本
本项目代码下载:点击下载
还没有评论,来说两句吧...