微服務gateway介紹





用 Spring Cloud 微服務實戰中,大家都知道用 Zuul 作爲智能網關。API 網關(API Gateway)主要負責服務請求路由、組合及協議轉換。下面是大家的總結:

一、最佳回答

網關的技術選型

  1. SpringCloud-Zuul :

    社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.

  2. Kong : 基於OpenResty的 API 網關服務和網關服務管理層.

  3. 自建網關服務: 如 談談基於 OpenResty 的接口網關設計

網關的設計要素

系統級別
  • 高可用性
  • 均衡負載: 容錯,防止雪崩.
  • 併發控制 : 錯峯流控
  • 動態路由制定和修改
應用級別
  • 監控統計
  • 版本控制
  • 認證 鑑權
  • 數據安全: 防篡改,參數脫敏…
  • 協議轉換: 如 HTTP => RPC協議.
其他(個人 YY)
  • 基於機器學習, 預測流量高峯.

二、此時此刻的總結

  1. 網關(API Gateway)技術選型

    • zuul
    • kong
    • nginx+lua
  2. 網關(API Gateway)的設計要素

    • 限流:實現微服務訪問流量計算,基於流量計算分析進行限流,可以定義多種限流規則。
    • 緩存:數據緩存。
    • 日誌:日誌記錄。
    • 監控:記錄請求響應數據,api耗時分析,性能監控。
    • 鑑權:權限身份認證。
    • 灰度:線上灰度部署,可以減小風險。
    • 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務並將請求進行轉發。
  3. 簡單介紹下你的網關實施方案

    • 開發語言: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 總結

  1. 能處理一些公共的邏輯,比如獲取token
  2. 能支持動態的修改路由規則
  3. 對各服務結果和異常進行統一處理後返給調用方
    目前實施了幾套方案,自己封裝的gateway層,準備用zuul進行替代

七、曼陀羅 總結

網關的技術選型

  1. SpringCloud-Zuul :社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.
  2. Kong : 基於OpenResty的 API 網關服務和網關服務管理層.
  3. Nginx+Lua:成熟度也算可以
  4. 自建網關:成本較高

網關(API Gateway)的設計要素(高可用,安全)

  • 性能:API高可用,負載均衡,容錯機制。
  • 安全:權限身份認證、脫敏,流量清洗,後端簽名(保證全鏈路可信調用),黑名單(非法調用的限制)。
  • 日誌:日誌記錄(spainid,traceid)一旦涉及分佈式,全鏈路跟蹤必不可少。
  • 緩存:數據緩存。
  • 監控:記錄請求響應數據,api耗時分析,性能監控。
  • 限流:流量控制,錯峯流控,目前有漏桶算法、令牌桶算法也可以定製限流規則。
  • 灰度:線上灰度部署,可以減小風險。
  • 路由:動態路由規則。
  • 靜態:代理

簡單介紹下你的網關實施方案

  • 微服務基礎框架:springboot;
  • 網關基礎組件:zuul;
  • 服務註冊中心:consul;
  • API監控:prometheus + grafana or 自建;
  • API統一日誌收集:時序db + ELK;
  • 壓力測試:Jmeter,AB,阿里壓測;
轉載自:http://www.spring4all.com/article/336



用 Spring Cloud 微服務實戰中,大家都知道用 Zuul 作爲智能網關。API 網關(API Gateway)主要負責服務請求路由、組合及協議轉換。下面是大家的總結:

一、最佳回答

網關的技術選型

  1. SpringCloud-Zuul :

    社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.

  2. Kong : 基於OpenResty的 API 網關服務和網關服務管理層.

  3. 自建網關服務: 如 談談基於 OpenResty 的接口網關設計

網關的設計要素

系統級別
  • 高可用性
  • 均衡負載: 容錯,防止雪崩.
  • 併發控制 : 錯峯流控
  • 動態路由制定和修改
應用級別
  • 監控統計
  • 版本控制
  • 認證 鑑權
  • 數據安全: 防篡改,參數脫敏…
  • 協議轉換: 如 HTTP => RPC協議.
其他(個人 YY)
  • 基於機器學習, 預測流量高峯.

二、此時此刻的總結

  1. 網關(API Gateway)技術選型

    • zuul
    • kong
    • nginx+lua
  2. 網關(API Gateway)的設計要素

    • 限流:實現微服務訪問流量計算,基於流量計算分析進行限流,可以定義多種限流規則。
    • 緩存:數據緩存。
    • 日誌:日誌記錄。
    • 監控:記錄請求響應數據,api耗時分析,性能監控。
    • 鑑權:權限身份認證。
    • 灰度:線上灰度部署,可以減小風險。
    • 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務並將請求進行轉發。
  3. 簡單介紹下你的網關實施方案

    • 開發語言: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 總結

  1. 能處理一些公共的邏輯,比如獲取token
  2. 能支持動態的修改路由規則
  3. 對各服務結果和異常進行統一處理後返給調用方
    目前實施了幾套方案,自己封裝的gateway層,準備用zuul進行替代

七、曼陀羅 總結

網關的技術選型

  1. SpringCloud-Zuul :社區活躍,基於 SrpingCloud 完整生態, 是構建微服務體系前置網關服務的最佳選型.
  2. Kong : 基於OpenResty的 API 網關服務和網關服務管理層.
  3. Nginx+Lua:成熟度也算可以
  4. 自建網關:成本較高

網關(API Gateway)的設計要素(高可用,安全)

  • 性能:API高可用,負載均衡,容錯機制。
  • 安全:權限身份認證、脫敏,流量清洗,後端簽名(保證全鏈路可信調用),黑名單(非法調用的限制)。
  • 日誌:日誌記錄(spainid,traceid)一旦涉及分佈式,全鏈路跟蹤必不可少。
  • 緩存:數據緩存。
  • 監控:記錄請求響應數據,api耗時分析,性能監控。
  • 限流:流量控制,錯峯流控,目前有漏桶算法、令牌桶算法也可以定製限流規則。
  • 灰度:線上灰度部署,可以減小風險。
  • 路由:動態路由規則。
  • 靜態:代理

簡單介紹下你的網關實施方案

  • 微服務基礎框架:springboot;
  • 網關基礎組件:zuul;
  • 服務註冊中心:consul;
  • API監控:prometheus + grafana or 自建;
  • API統一日誌收集:時序db + ELK;
  • 壓力測試:Jmeter,AB,阿里壓測;
轉載自:http://www.spring4all.com/article/336
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章