微服務實戰系列是基於開源微服務項目 有來商城youlai-mall 版本升級爲背景來開展的,本篇則是講述API網關使用Gateway替代Zuul,有興趣的朋友能夠進去給個star,很是感謝。git
微服務網關是位於服務以前或者應用程序以前的一個層面,用於保護、加強和控制微服務的訪問。github
其常見的做用有:spring
至於爲何使用Gateway而放棄Zuul?bootstrap
SpringCloud 生態提供了兩種API網關產品,分別是Netflix開源的Zuu1和Spring本身開發的SpringCloud Gateway,SpringCloud以Finchely版本爲分界線,以前版本使用Zuul做爲API網關,以後更推薦使用Gateway。安全
Netflix已經在2018年開源了Zuul2,可是SpringCloud已經退出了Gateway,而且在github標識沒有集成Zuul2的計劃。app
SpringCloud Gateway和Zuul對比及技術選型?負載均衡
有來商城youlai-mall 完整項目結構圖微服務
本篇文章涉及項目模塊測試
工程名 | 端口 | 描述 |
---|---|---|
nacos-server | 8848 | 註冊中心和配置中心 |
youlai-gateway | 9999 | API網關 |
youlai-admin | 8080 | 管理平臺 |
版本聲明ui
Nacos Server: 1.3.2 SpringBoot: 2.3.0.RELEASE SpringCloud: Hoxton.SR5 SpringCloud Alibaba: 2.2.1.RELEASE
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實現網關鑑權功能。