伴随着业务的不断更新迭代,容器启动的和停止经常发生,当容器停止时,如果容器内的程序未执行完,那么将会造成数据不完整,特别是一些分布式事务,可能会导致数据不一致,为此,容器引入优雅关闭功能。
当我们执行docker stop命令后,docker会向容器中进程ID为1的进程发送SIGTERM(kill -15)信号,当等待一段时间后程序仍然没有退出后,将发送SIGKILL(kill -9)信号强制杀死进程。等待时间可以通过参数设置:
1 |
伴随着业务的不断更新迭代,容器启动的和停止经常发生,当容器停止时,如果容器内的程序未执行完,那么将会造成数据不完整,特别是一些分布式事务,可能会导致数据不一致,为此,容器引入优雅关闭功能。
当我们执行docker stop命令后,docker会向容器中进程ID为1的进程发送SIGTERM(kill -15)信号,当等待一段时间后程序仍然没有退出后,将发送SIGKILL(kill -9)信号强制杀死进程。等待时间可以通过参数设置:
1 |
第一种:Nginx 版本
针对一般的单体应用,通过 Nginx 切换端口可以做到平滑无感知的更新。 大致的步骤是这样的:
1、打一个新的 jar 包,端口号和之前旧的不同。
2、运行新的 jar 包(注意旧的和新的同时在运行)。
3、在 Nginx 配置中把域名转发到新的端口上。
4、确认转发无误后关闭旧的 jar 包。 这主要是利用了 Nginx 的无感知重载配置文件的功能,只需要 reload 一下就可以实现无缝切换。