其他網址
(十)爲什麼微服務一定要有網關? - 簡書
微服務爲什麼要使用網關服務 - Yezhiwei的博客
另見:《SpringCloud微服務實戰》=> 第7章 API網關服務:Spring Cloud Zuul
網關作用
服務網關 = 路由轉發 + 過濾器
1、路由轉發:外界請求轉發到微服務
2、過濾器:權限校驗、限流、監控(路由轉發也通過過濾器)
爲什麼需要網關
若不使用網關,情況如下:
運維角度:路由規則與服務實例列表:若有實例增減或是IP 地址變動等需要手動修改。
開發角度:以權限校驗爲例:需要每個微服務寫同樣的校驗邏輯
使用網關之後
網關可自動獲得其他微服務實例信息
網關同一維護權限
框架
微服務架構:服務網關、open-service和service。
1、流程:
- 服務網關、open-service和service啓動時註冊到註冊中心上去;
- 網關做智能路由轉發(包括服務發現,負載均衡)到open-service,這其中包含權限校驗、監控、限流等操作open-service聚合內部service響應,返回給網關,網關再返回給用戶
2、注意點
多一層轉發,性能下降(不大);儘量輕
防止網關單點:前邊再掛nginx性能極高,基本不掛,網關就可不斷添加機器。最好是網關單點服務部署在一臺牛機器上(壓測估算),且nginx與zuul性能相差不大。
3、基本功能
智能路由:接收外部一切請求,並轉發到後端的對外服務open-service上去;服務之間不走網關
權限校驗:只校驗用戶open-service服務請求,不校驗內部
API監控:監控請求,本身性能指標(如gc);
限流:配合監控限流
API日誌統一收集:類似aspect切面,接口進出日誌。
A|B測試:實驗配置、數據埋點(看轉化率)及分流引擎(調用內部服務在open-service中)
技術選型
開發語言:java + groovy,groovy的好處是網關服務不需要重啓就可以動態的添加filter來實現一些功能;
微服務基礎框架:springboot;
網關基礎組件:netflix zuul;
服務註冊中心:consul;
權限校驗:jwt;
API監控:prometheus + grafana;
API統一日誌收集:logback + ELK;
壓力測試:Jmeter;