Spring Cloud Gateway使用

簡介

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

Spring Cloud Gateway是經過Spring WebFlux的HandlerMapping作爲底層支持來匹配到轉發路由,使用時不要引入SpringMVC,不然初始化時會出錯;Spring Cloud Gateway內置了不少Predicates工廠,這些 Predicates 工廠經過不一樣的 HTTP 請求參數來匹配,多個 Predicates 工廠能夠組合使用。spring

使用

一、添加依賴api

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

二、配置(結合Eureka使用)app

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/

三、集成Hystrix框架

依賴微服務

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

配置spa

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

java端code

@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;
    }
}

ENDserver

相關文章
相關標籤/搜索