java的web服务升级时,怎么保证进行中请求可以正常完成?

linux上部署java的web服务,某次在停服务(kill -9 XXXX)升级新版本的时候,有些没有处理完的的请求被中止了,尤其是一些写数据库的操作。
有没有什么方案可以让当前的请求顺利完成之后再停服务?

注:服务版本升级操作步骤

  1. 停止老版本的服务(kill -9 xxxxx)
  2. 启动新的服务。
阅读 2.5k
2 个回答

web服务器都有正常停止功能,你kill -9是几个意思?

你关电脑都是直接拔电源吗?

如果你的服务和用户之间还有一层类似nginx的东西,直接改nginx配置,把服务定向到一个升级提示页,确保不会有新请求进来,等到所有旧的请求处理完了再直接关闭服务就行了。如果服务和用户直接连接的话,可以改dns。当然最保险的办法是改服务的代码,用个全局变量之类的东西作为标记,然后升级的时候管理员更改这个标记,服务一旦检测到这个标记被更改,就拒绝新的请求,但继续处理旧请求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏