SpringCloud GateWay 熔断机制详细介绍

通过官方提供的列子和网上找的资料学习,总结一下springcloud gateway 限流使用的关键点。

官网地址:https://cloud.spring.io/spring-cloud-gateway/spring-cloud-gateway.html

以下主要通过Demo来介绍,如何通过gateway进行限流工作

第一步,简单的搭建一个springcloud注册中心,服务端,客户端,gateway(网关)等项目

1、springcloud注册中心 yam配置,如下

server:
  port: 8761
spring:
  application:
    name: eureka
eureka:
  client:
    registerWithEureka: false # 表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false
    fetchRegistry: false  # 表示是否从eureka服务器获取注册信息,因为当前这个应用就是eureka服务器,没必要获取自身,所以这里是false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

2、服务端,yam配置,如下

server:
  port: 8081
spring:
  application:
    name: springcloudserve
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

并提供一个接口,好测试

SpringCloud GateWay 熔断机制详细介绍_第1张图片

3、客户端调用者,yml配置,如下

server:
  port: 8082
spring:
  application:
    name: springcloudclient
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

实现远程调用服务端接口,实现类,如下

SpringCloud GateWay 熔断机制详细介绍_第2张图片

Controller比较简单,就不展示了。

4、网关gateway yml配置如下

server:
  port: 8989
spring:
  application:
    name: cloud-gateway-eureka
  redis:
    host: localhost
    password:
    port: 6379
  cloud:
    gateway:
     discovery:
        locator:
         enabled: true
     routes:
     - id: hystrix_route
       uri: lb://springcloudclient
       predicates:
       - Path=/foo/**
       filters:
       - StripPrefix=1
       - name: Hystrix
         args:
           name: fallbackcmd
           fallbackUri: forward:/fallback
  hystrix.command.fallbackcmd.execution.isolation.thread.timeoutInMilliseconds: 5000
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
logging:
  level:
    org.springframework.cloud.gateway: debug

提供fallback实现,如下

SpringCloud GateWay 熔断机制详细介绍_第3张图片

第二步,进行测试,步骤如下

以此启动注册中心,服务端,客户端,网关等项目

SpringCloud GateWay 熔断机制详细介绍_第4张图片

正常通过gateway网关路由访问

SpringCloud GateWay 熔断机制详细介绍_第5张图片

把服务端停掉,然后在访问

SpringCloud GateWay 熔断机制详细介绍_第6张图片

搞定,希望能帮到你。

git上提供练习的Demo,可以参考

https://github.com/Joe192168/springcloud-demo

你可能感兴趣的:(gateway,Spring,Cloud)