一. 前言
微服務實戰系列是基於開源微服務項目 有來商城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對比及技術選型?
四. 項目信息
有來商城youlai-mall 完整項目結構圖
本篇文章涉及項目模塊
工程名 | 端口 | 描述 |
---|---|---|
nacos-server | 8848 | 注冊中心和配置中心 |
youlai-gateway | 9999 | API網關 |
youlai-admin | 8080 | 管理平台 |
版本聲明
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實現網關鑒權功能。