H__D  

思路

  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
View Code

  缺点:可能造成请求被处理2次

方式二,操作节点下架(推荐)

  1、在使用Nginx做网关时,可以通过修改Nginx的配置,来改变节点流量,从而实现优雅重启

  2、在使用Gateway做网关时,可以通过注册中心,比如Nacos来操作下架节点,来改变节点流量,从而实现优雅重启

  3、SpringBoot项目,推荐使用actuator来做项目停止

 

posted on 2025-01-17 00:28  H__D  阅读(5)  评论(0编辑  收藏  举报