java吧 关注:1,262,639贴子:12,761,143
  • 5回复贴,共1

关于项目发布的问题

只看楼主收藏回复

各位大佬,如果一个单体应用在后台以两个服务运行,就叫A和B,通过Nginx做负载均衡,那么在发布的时候,先停止A服务,更换新版本继续启动,然后停止B服务换新版本启动,这样好像没啥问题。但是如果停止某一个服务的时候,当前服务有代码还没跑完会怎么样?比如用户支付,后台更新业务的时候你突然把服务停止了,这里数据会不会出问题?该如何解决呢


IP属地:上海来自Android客户端1楼2023-10-29 01:39回复
    好像记得有个词叫优雅停机


    IP属地:四川来自Android客户端2楼2023-10-29 03:17
    回复
      2025-06-04 19:36:59
      广告
      改负责均衡策略 A、B两个节点,更新b的服务,先把流量全打到A上,再更新B,A同理,选个业务不忙的时间点


      IP属地:广东来自iPhone客户端3楼2023-10-29 05:51
      回复
        支付就不可能是单体应用,支付都要涉及好几个微服务,一般会用到队列,支付过程中突然服务A宕机,就支付失败呗,订单还在,再次请求就会打到B啦,当然,具体还要看业务怎么设计,选择包夜更新或者提前发公告等


        IP属地:上海来自Android客户端4楼2024-06-20 10:38
        回复
          “但是如果停止某一个服务的时候,当前服务有代码还没跑完会怎么样”
          ——你不会以为停服务是简单地kill进程吧


          IP属地:辽宁5楼2024-06-20 11:02
          回复
            单节点保证优雅停机就行了 不再接受新请求 处理玩正在进行的请求


            IP属地:浙江6楼2024-06-20 11:12
            回复