cloud学习


八、熔断机制

熔断机制是对雪崩效应的一种微服务链路保护机制。当链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快读返回错误的响应信息

当检测到该节点微服务调用响应正常后,恢复调用链路

GateWay新一代网关

路由

断言

过滤

作用

可以实现 反向代理、鉴权、流量控制、熔断、日志监控等功能

动态路由

动态路由设置

注意:

server:
  port: 9527

spring:
  application:
    name: cloud-gateway

  cloud:
    gateway:
      routes:
        - id: payment_route1
          uri: lb://CLOUD-PAYMENT-SERVICE # Matches /payment/get/**
          predicates:
            - Path=/payment/get/**

        - id: payment_route2
          uri: lb://CLOUD-PAYMENT-SERVICE # Matches /payment/lb/**
          predicates:
            - Path=/payment/lb/**
            # After 属性表示什么时间之后才可以访问
            #- After=2023-07-28T15:16:37.485+08:00[Asia/Shanghai]
            # cookie中必须有值,值必须是zzyy
            #- Cookie=username,zzyy
            # 表示请求头必须有这个属性,且该属性值必须是整数
            #- Header=X-Request-Id, \d+  # 请求头要有X-Request-Id属性并且值为整数的正则表达式

eureka:
  instance:
    hostname: cloud-gateway-service
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka

# Ribbon configuration for the cloud-payment-service
cloud-payment-service:
  ribbon:
    ReadTimeout: 5000
    ConnectTimeout: 5000

属性解释

运行结果:

CookieCookie配置

Hander属性

Header属性

Gateway的Filter

创建Filter类

@Component
@Slf4j
public class MyLogGateWayFilter implements GlobalFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        log.info("*******全局过滤*********"+new Date());
        String username=exchange.getRequest().getQueryParams().getFirst("username");
        if (username==null){
            log.info("用户名为空,非法用户");
            exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
            return exchange.getResponse().setComplete();
        }
        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return 0;
    }
}

如果请求地址中有username属性,则正常访问,如果没有则返回406错误

控制台输出

分布式配置中心

每一个

配置文件优先级

配置文件优先级

@


文章作者: 毛豆不逗比
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 毛豆不逗比 !
  目录
{% include '_third-party/exturl.swig' %} {% include '_third-party/bookmark.swig' %} {% include '_third-party/copy-code.swig' %} + {% include '_custom/custom.swig' %}