思路
1、发布重启服务节点前,将请求流量转移到其他服务上
2、然后确定节点没有请求流量后,发布重启服务
思维导图

方式一,请求重试(不推荐)
不考虑流量转移,在网关上做请求重试
例如:SpringCloud Gateway 配置全局重试过滤器
spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
# 开启从注册中心动态创建路由的功能,利用微服务名进行路由
enabled: true
# 使用小写service-id
lower-case-service-id: true
# 全局过滤器重试机制
default-filters:
- name: Retry
args:
retries: 3
statuses: BAD_GATEWAY, GATEWAY_TIMEOUT
methods: GET, POST
backoff:
firstBackoff: 100ms
maxBackoff: 1s
factor: 2
basedOnPreviousValue: true
缺点:可能造成请求被处理2次
方式二,操作节点下架(推荐)
1、在使用Nginx做网关时,可以通过修改Nginx的配置,来改变节点流量,从而实现优雅重启
2、在使用Gateway做网关时,可以通过注册中心,比如Nacos来操作下架节点,来改变节点流量,从而实现优雅重启
3、SpringBoot项目,推荐使用actuator来做项目停止

浙公网安备 33010602011771号