微服務實戰04:SpringCloud整合Gateway實現API閘道器
專案背景
微服務實戰系列是基於開源微服務專案 有來商城youlai-mall 版本升級為背景來開展的,本篇則是講述API閘道器使用Gateway替代Zuul,有興趣的朋友可以進去給個star,非常感謝。
什麼是微服務閘道器
微服務閘道器是位於服務之前或者應用程式之前的一個層面,用於保護、增強和控制微服務的訪問。
其常見的作用有:
- 鑑權校驗:驗證是否認證和授權
- 統一入口:提供所有微服務的入口點,起到隔離作用,保障服務的安全性
- 限流熔斷
- 路由轉發
- 負載均衡
- 鏈路追蹤
閘道器如何選型
至於為什麼使用Gateway而放棄Zuul?
SpringCloud 生態提供了兩種API閘道器產品,分別是Netflix開源的Zuu1和Spring自己開發的SpringCloud Gateway,SpringCloud以Finchely版本為分界線,之前版本使用Zuul作為API閘道器,之後更推薦使用Gateway。
Netflix已經在2018年開源了Zuul2,但是SpringCloud已經退出了Gateway,並且在github標識沒有整合Zuul2的計劃。
SpringCloud Gateway和Zuul對比及技術選型?
版本宣告
Nacos Server: 1.3.2
SpringBoot: 2.3.0.RELEASE
SpringCloud: Hoxton.SR5
SpringCloud Alibaba: 2.2.1.RELEASE
整合SpringCloud Gateway
有來商城youlai-mall 完整專案結構圖
本篇文章涉及專案模組
工程名 | 埠 | 描述 |
---|---|---|
nacos-server | 8848 | 註冊中心和配置中心 |
youlai-gateway | 9999 | API閘道器 |
youlai-admin | 8080 | 管理平臺 |
1.新增SpringCloud Gateway依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2.bootstrap.yml配置資訊
server: port: 9999 spring: application: name: youlai-gateway cloud: gateway: discovery: locator: enabled: true # 啟用自動根據服務ID生成路由 lower-case-service-id: true # 設定路由的路徑為小寫的服務ID routes: - id: youlai-auth uri: lb://youlai-auth predicates: - Path=/youlai-auth/** filters: - StripPrefix=1 # 移除字首 youlai-auth - id: youlai-admin uri: lb://youlai-admin predicates: - Path=/youlai-admin/** filters: - StripPrefix=1
3.微服務介面
youlai-admin新增一個介面方法用來測試閘道器轉發能力
4.閘道器測試
依次啟動專案nacos-server,youlai-admin,youlai-gateway
可以看到當我們請求閘道器的服務路徑http://localhost:9999/youlai-admin/users的時候,路由根據匹配規則
將以/youlai-admin為字首的請求路徑轉發到服務youlai-admin例項上去了。
結語
至此SpringCloud整合Gateaway就成功了,當然這裡只是驗證了API閘道器的路由轉發功能。後面會寫一篇關於SpringCloud Gateaway整合Oauth2實現閘道器鑑權功能。