天天看點

spring cloud gateway 網關_33、Spring Cloud網關Gateway

Spring Cloud Gateway是由spring官方基于Spring5.0、Spring Boot2.x、Project Reactor等技術開發的網關,目的是代替原先版本中的Spring Cloud Netfilx Zuul,目前Netfilx已經開源了Zuul2.0,但Spring 沒有考慮內建,而是推出了自己開發的Spring Cloud GateWay。該項目提供了一個建構在Spring Ecosystem之上的API網關,旨在提供一種簡單而有效的途徑來發送API,并向他們提供交叉關注點,例如:安全性,監控、埋點,限流等。(具體可以檢視官網http://spring.io/projects/spring-cloud-gateway)

Spring Cloud Gateway 工作原理圖:

spring cloud gateway 網關_33、Spring Cloud網關Gateway

1、建立項目sc-gateway,對應的pom.xml檔案如下

4.0.0spring-cloud sc-gateway 0.0.1-SNAPSHOTjarsc-gatewayhttp://maven.apache.orgorg.springframework.boot spring-boot-starter-parent 2.0.4.RELEASEorg.springframework.cloud spring-cloud-dependencies Finchley.RELEASEpomimportUTF-81.81.8org.springframework.cloud spring-cloud-starter-gateway 
           

可以看到spring cloud gateway是從spring cloud 2.x後才有的

spring cloud gateway 網關_33、Spring Cloud網關Gateway

2、建立springboot啟動類

package sc.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); }}
           

3、編寫配置檔案application.yml

server: port: 8600spring: application: name: sc-gateway cloud: gateway: routes: - id: baidu uri: http://www.baidu.com/ predicates: - Path=/baidu/** - id: jianshu uri: http://www.jianshu.com/ predicates: - Path=/jianshu/**
           

備注:gateway的配置項參考org.springframework.cloud.gateway.config.GatewayProperties類

Spring Cloud Gateway提供了兩種配置路由規則的方式:

方式一、通過@Bean自定義RouteLocator

@Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() //basic proxy .route("baidu