用 Spring Cloud 微服務實戰中,大家都知道用 Zuul 作爲智能網關。API 網關(API Gateway)主要負責服務請求路由、組合及協議轉換。下面是大家的總結:
一、最佳回答
網關的技術選型
SpringCloud-Zuul :
社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.
Kong : 基於OpenResty的 API 網關服務和網關服務管理層.
自建網關服務: 如 談談基於 OpenResty 的接口網關設計
網關的設計要素
系統級別
- 高可用性
- 均衡負載: 容錯,防止雪崩.
- 併發控制 : 錯峯流控
- 動態路由制定和修改
應用級別
- 監控統計
- 版本控制
- 認證 鑑權
- 數據安全: 防篡改,參數脫敏…
- 協議轉換: 如 HTTP => RPC協議.
其他(個人 YY)
- 基於機器學習, 預測流量高峯.
二、此時此刻的總結
網關(API Gateway)技術選型
- zuul
- kong
- nginx+lua
網關(API Gateway)的設計要素
- 限流:實現微服務訪問流量計算,基於流量計算分析進行限流,可以定義多種限流規則。
- 緩存:數據緩存。
- 日誌:日誌記錄。
- 監控:記錄請求響應數據,api耗時分析,性能監控。
- 鑑權:權限身份認證。
- 灰度:線上灰度部署,可以減小風險。
- 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務並將請求進行轉發。
簡單介紹下你的網關實施方案
- 開發語言:java + groovy,groovy的好處是網關服務不需要重啓就可以動態的添加filter來實現一些功能;
- 微服務基礎框架:springboot;
- 網關基礎組件:netflix zuul;
- 服務註冊中心:consul;
- 權限校驗:jwt;
- API監控:prometheus + grafana;
- API統一日誌收集:logback + ELK;
- 壓力測試:Jmeter;
比如限流 你需要緩存一些限流的策略,主要是緩存網關功能用到的一些數據,不涉及業務數據。 路由主要是做轉發
三、IronCity 的總結
目前,我們業務代碼是多語言的環境,網關則是用go寫的,目前主要是做到了對於HTTP和Thrift的業務服務的轉發(HTTP利用了fasthttp,Thrift用的網關啓動客戶端調用業務服務端的形式)過濾器是環繞的,系統統一的過濾和針對API級別的過濾。雖然用了go比較輕巧,但是目前功能還很值得完善
四、XuChuangfeng 的總結
設計要素:#1,高可用非常重要;#2,網關需要支持動態修改路由規則;#3,與服務註冊中心整合,通過註冊中心實現路由轉發;#4,過濾器鏈適配不同的路由。
五、fudali113 的總結
選型
- 所使用的網關架構必須靈活,因爲我們可能需要很多與我們業務相關的定製話的東西
- 有平臺背書,獲取有足夠的證據證明他是一個能抗的住我們需求的併發的性能
- 根據需求選擇最好的方案
設計要素
- 結構必須靈活,方便擴展
- 基礎的功能應該由框架提供或者抽象,比如動態路由,權限校驗,限流
我的
我們使用zuul作爲網關並對他進行了一定定製化的開發,因爲我們使用springcloud技術棧,同時zuul基於filter來處理一切的結構也是非常靈活的,並且由netflix背書。我們在網關利用filter加入權限校驗,統一訪問日誌記錄,訪問異常請求記錄,聚合請求處理器等相關功能
負載均衡可以通過在之前加入一個nginx或者dns解析來做,高可用可以通過keepalived加虛擬ip與nginx結合或者直接與zuul結合來做
六、Ascend 總結
- 能處理一些公共的邏輯,比如獲取token
- 能支持動態的修改路由規則
- 對各服務結果和異常進行統一處理後返給調用方
目前實施了幾套方案,自己封裝的gateway層,準備用zuul進行替代
七、曼陀羅 總結
網關的技術選型
- SpringCloud-Zuul :社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.
- Kong : 基於OpenResty的 API 網關服務和網關服務管理層.
- Nginx+Lua:成熟度也算可以
- 自建網關:成本較高
網關(API Gateway)的設計要素(高可用,安全)
- 性能:API高可用,負載均衡,容錯機制。
- 安全:權限身份認證、脫敏,流量清洗,後端簽名(保證全鏈路可信調用),黑名單(非法調用的限制)。
- 日誌:日誌記錄(spainid,traceid)一旦涉及分佈式,全鏈路跟蹤必不可少。
- 緩存:數據緩存。
- 監控:記錄請求響應數據,api耗時分析,性能監控。
- 限流:流量控制,錯峯流控,目前有漏桶算法、令牌桶算法也可以定製限流規則。
- 灰度:線上灰度部署,可以減小風險。
- 路由:動態路由規則。
- 靜態:代理
簡單介紹下你的網關實施方案
- 微服務基礎框架:springboot;
- 網關基礎組件:zuul;
- 服務註冊中心:consul;
- API監控:prometheus + grafana or 自建;
- API統一日誌收集:時序db + ELK;
- 壓力測試:Jmeter,AB,阿里壓測;
用 Spring Cloud 微服務實戰中,大家都知道用 Zuul 作爲智能網關。API 網關(API Gateway)主要負責服務請求路由、組合及協議轉換。下面是大家的總結:
一、最佳回答
網關的技術選型
SpringCloud-Zuul :
社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.
Kong : 基於OpenResty的 API 網關服務和網關服務管理層.
自建網關服務: 如 談談基於 OpenResty 的接口網關設計
網關的設計要素
系統級別
- 高可用性
- 均衡負載: 容錯,防止雪崩.
- 併發控制 : 錯峯流控
- 動態路由制定和修改
應用級別
- 監控統計
- 版本控制
- 認證 鑑權
- 數據安全: 防篡改,參數脫敏…
- 協議轉換: 如 HTTP => RPC協議.
其他(個人 YY)
- 基於機器學習, 預測流量高峯.
二、此時此刻的總結
網關(API Gateway)技術選型
- zuul
- kong
- nginx+lua
網關(API Gateway)的設計要素
- 限流:實現微服務訪問流量計算,基於流量計算分析進行限流,可以定義多種限流規則。
- 緩存:數據緩存。
- 日誌:日誌記錄。
- 監控:記錄請求響應數據,api耗時分析,性能監控。
- 鑑權:權限身份認證。
- 灰度:線上灰度部署,可以減小風險。
- 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務並將請求進行轉發。
簡單介紹下你的網關實施方案
- 開發語言:java + groovy,groovy的好處是網關服務不需要重啓就可以動態的添加filter來實現一些功能;
- 微服務基礎框架:springboot;
- 網關基礎組件:netflix zuul;
- 服務註冊中心:consul;
- 權限校驗:jwt;
- API監控:prometheus + grafana;
- API統一日誌收集:logback + ELK;
- 壓力測試:Jmeter;
比如限流 你需要緩存一些限流的策略,主要是緩存網關功能用到的一些數據,不涉及業務數據。 路由主要是做轉發
三、IronCity 的總結
目前,我們業務代碼是多語言的環境,網關則是用go寫的,目前主要是做到了對於HTTP和Thrift的業務服務的轉發(HTTP利用了fasthttp,Thrift用的網關啓動客戶端調用業務服務端的形式)過濾器是環繞的,系統統一的過濾和針對API級別的過濾。雖然用了go比較輕巧,但是目前功能還很值得完善
四、XuChuangfeng 的總結
設計要素:#1,高可用非常重要;#2,網關需要支持動態修改路由規則;#3,與服務註冊中心整合,通過註冊中心實現路由轉發;#4,過濾器鏈適配不同的路由。
五、fudali113 的總結
選型
- 所使用的網關架構必須靈活,因爲我們可能需要很多與我們業務相關的定製話的東西
- 有平臺背書,獲取有足夠的證據證明他是一個能抗的住我們需求的併發的性能
- 根據需求選擇最好的方案
設計要素
- 結構必須靈活,方便擴展
- 基礎的功能應該由框架提供或者抽象,比如動態路由,權限校驗,限流
我的
我們使用zuul作爲網關並對他進行了一定定製化的開發,因爲我們使用springcloud技術棧,同時zuul基於filter來處理一切的結構也是非常靈活的,並且由netflix背書。我們在網關利用filter加入權限校驗,統一訪問日誌記錄,訪問異常請求記錄,聚合請求處理器等相關功能
負載均衡可以通過在之前加入一個nginx或者dns解析來做,高可用可以通過keepalived加虛擬ip與nginx結合或者直接與zuul結合來做
六、Ascend 總結
- 能處理一些公共的邏輯,比如獲取token
- 能支持動態的修改路由規則
- 對各服務結果和異常進行統一處理後返給調用方
目前實施了幾套方案,自己封裝的gateway層,準備用zuul進行替代
七、曼陀羅 總結
網關的技術選型
- SpringCloud-Zuul :社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.
- Kong : 基於OpenResty的 API 網關服務和網關服務管理層.
- Nginx+Lua:成熟度也算可以
- 自建網關:成本較高
網關(API Gateway)的設計要素(高可用,安全)
- 性能:API高可用,負載均衡,容錯機制。
- 安全:權限身份認證、脫敏,流量清洗,後端簽名(保證全鏈路可信調用),黑名單(非法調用的限制)。
- 日誌:日誌記錄(spainid,traceid)一旦涉及分佈式,全鏈路跟蹤必不可少。
- 緩存:數據緩存。
- 監控:記錄請求響應數據,api耗時分析,性能監控。
- 限流:流量控制,錯峯流控,目前有漏桶算法、令牌桶算法也可以定製限流規則。
- 灰度:線上灰度部署,可以減小風險。
- 路由:動態路由規則。
- 靜態:代理
簡單介紹下你的網關實施方案
- 微服務基礎框架:springboot;
- 網關基礎組件:zuul;
- 服務註冊中心:consul;
- API監控:prometheus + grafana or 自建;
- API統一日誌收集:時序db + ELK;
- 壓力測試:Jmeter,AB,阿里壓測;