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