ITPub博客

首页 > 数据库 > 数据库开发技术 > 凌晨上线,初期如何做到无损发布

凌晨上线,初期如何做到无损发布

原创 数据库开发技术 作者:greencoatman 时间:2023-12-02 10:20:26 0 删除 编辑

一般我们公司做系统升级的时间都会选择在深夜,因为晚上上线升级,对用户的影响最小。


那为什么会对用户产生影响?


因为系统的升级,往往会伴随着重启,重启的过程中,正在访问的用户就会访问失败。


如果升级的是web-server:

如果重启上面的tomcat,tomcat上也许有200个请求正在处理,这些请求就会失败。


如果升级的是service:

重启ip1机器上的service时,service上如果有200个请求正在处理,这些请求也会失败。


那么问题就是:web-server升级能否不影响正在处理的请求呢?

可以使用  nginx+web-server的方法


  1. 给nginx发指令(nginx -s reload),将ip1上的流量切走;


  2. nginx没有了新的流量,原来旧的流量会很快处理完成;


  3. 旧流量完成后,升级web-server;


这个时候,ip1上已经没有了流量,可以随意的停服、启动、测试人员直连测试。


   4.给nginx发指令,将流量切回ip1;

   5.流量切回ip1,单节点上线成功;


server升级能否不影响正在处理的请求?


可以,需要RPC-client和RPC-server配合。

  1. 向准备升级的service节点ip1发切换流量指令,这里是通过下游server发指令切换流量;


  2. RPC-server通过tcp长连接将流量指令通知RPC-client,执行流量指令的组件最终是RPC-client上的tcp连接池;


  3. RPC-client不再将流量发给ip1,旧的流量慢慢的处理完成;


  4. 旧流量逐步迁移完成,RPC-client会间歇性重连.直至ip1节点恢复;


  5. 流量切换ip1,单节点上线成功;

  6. 一个节点升级完成之后,其他节点可以依次逐台升级。


原文作者:二进制跳动;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-07-08

  • 博文量
    312
  • 访问量
    141133