0、前言
gateway是spring的二代網關, 作為Netflix Zuul的替代者,是異步非阻塞網關 ,ZUUL2也是異步非阻塞的,但未納入spring cloud整合計划
基於WebFlux ,與spring-boot-starter-web沖突,要排除該依賴;ZUUL1是阻塞io的API Gateway,使用簡單方便;
性能上,自然是異步非阻塞的gateway勝出;
如何取舍,見仁見智了,不要盲目認為gateway比ZUUL1好,適合項目才是最好的;
實際項目中建議選擇gateway;
1、集成gateway
1-1、添加依賴
新建gateway模塊,添加依賴,注意要排除spring-boot-starter-web依賴,不能添加該依賴
<!-- 集成nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.0.1.RELEASE</version> </dependency> <!-- 集成gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
1-2、添加配置
uri: lb://注冊中心的微服務名稱
Path=/api/user/** 相當於該微服務前綴
StripPrefix=2 表示跳過前綴節數,上面前綴/api/user/是兩節,說以是2,如果/api/則跳過1節
以上幾個常用屬性是通俗的解釋,具體各個屬性及其詳細用法請參考官方文檔
server: port: 8770 spring: application: name: gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 gateway: discovery: locator: enabled: false #開啟小寫驗證,默認feign根據服務名查找都是用的全大寫 lowerCaseServiceId: true routes: - id: nacos-user uri: lb://nacos-user predicates: - Path=/api/user/** filters: - StripPrefix=2 - id: nacos-order uri: lb://nacos-order predicates: - Path=/api/order/** filters: - StripPrefix=2
1-3、運行測試
以上即可,運行項目,可以看到路由已經正常轉發了
gateway簡單的路由轉發功能就這樣完成了,其他的諸多路由過濾、匹配、限流等功能以后再探討