Spring Cloud Gateway 使用


簡介

Spring Cloud Gateway是Spring Cloud官方推出的網關框架,網關作為流量入口,在微服務系統中有着十分重要的作用,常用功能包括:鑒權、路由轉發、熔斷、限流等。

Spring Cloud Gateway是通過Spring WebFlux的HandlerMapping做為底層支持來匹配到轉發路由,使用時不要引入SpringMVC,否則初始化時會出錯;Spring Cloud Gateway內置了很多Predicates工廠,這些 Predicates 工廠通過不同的 HTTP 請求參數來匹配,多個 Predicates 工廠可以組合使用。

使用

1、添加依賴

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

2、配置(結合Eureka使用)

server:
  port: 8066
spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true  #設置serviceId小寫,默認大寫
      routes:
      - id: user-server
        uri: lb://user-server   #lb表示從注冊中心獲取服務
        predicates:
        - Path=/userapi/**         # 如果請求地址滿足/userapi/**,則轉發到user-server服務
        filters:
        - StripPrefix=1           # 去除原請求地址中的userapi
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8088/eureka/

3、集成Hystrix

依賴

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

配置

filters:
- name: Hystrix
  args:
    name : default
    fallbackUri: 'forward:/dfallback'
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 6000   

java端

@RestController
public class DHystrixController {
    @RequestMapping("/dfallback")
    public Map<String,String> dfallback(){
        System.out.println("降級了。。。");
        Map<String,String> map = new HashMap<String,String>();
        map.put("rCode","-1");
        map.put("rMsg","出錯了");
        return map;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM