簡介
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; } }