SpringBoot项目–如何不停服更新应用?

说明

在生产环境中,一般都会每个服务部署多个实例。只要多于1个实例,就可以不停服更新应用。

思路:把要停机的那个应用的请求完全切断,将所有请求切到其他机器,停机的那个启动起来之后再允许请求。

不停服更新应用的作用

  1. 有需要紧急修复的bug时,不会影响用户使用。
  2. 有新功能上线时,不会影响用户使用。
  3. 可以做到随时上线,不需要等到晚上没有用户在用时才更新服务(可以减少无意义的加班😉)。

需求

本文假设解决此问题:微服务user有两个实例:user1和user2,需要在保证user服务不中断的情况下更新user服务。

计划1:应用Nacos的权重功效

Nacos能够设置实例的权重,假如权重改为0,则不会调到这个实例。

不停服更新的流程

  • 将user1的权重设置为0
  • 更新user1
  • user1启动结束后,恢复user1的权重为1,将user2的权重设置为0
  • 更新user2
  • 恢复user2的权重为1

注意:

修改完之后,网关的全部请求都市转发到权重不为0的实例上边,但feign请求仍会到达权重为0的实例上。

处理方式:需要把feign的负载平衡器(ribbon或许loadbalancer)将其改为从Nacos取得实例,根据权重选择实例。

计划2:应用强迫路由旁边件

用中间件支撑强迫将请求转发到指定的实例。

不停服更新的流程

  • 将user2设置为强迫路由
  • 更新user1
  • user1启动结束后,撤消user2的强迫路由,将user1设置为强迫路由
  • 更新user2
  • 撤消user1的强迫路由
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值