微服務之api網關

API網關設計

API網關是微服務架構標準化服務的模式。API網關定位爲應用系統接口的網關,區別於網絡技術的網關,但是原理是一樣的。API網關統一服務入口,可方便實現對平臺衆多服務接口進行管控,對訪問服務的身份認證、防報文重放與防數據篡改、功能調用的業務鑑權、響應數據的脫敏、流量與併發控制,甚至基於API調用的計量或者計費等等。

API網關功能結構示意圖

網關功能

 

多種客戶端程序,例如:移動APP、PC端和智能終端設備等。客戶端程序通過互聯網或者專網訪問API網關,由API網關統一接收請求後,通過一系列模塊定位具體處理的微服務機,並將其轉發至目標服務處理,網關與微服務之間通信是內部局域網。API網關統一規範平臺對外的服務,同時充當了平臺的Paas層。如上圖所示,API網關功能結構基於管道模型和支持可插拔式的設計開發,提供統一基於http協議的WebAPI訪問接口,內部每個模塊各自實現功能,包括:黑白名單、日誌、協議適配、身份認證、計流限流及路由。並且依賴“訪問認證中心、服務發佈管理中心”分別實現API網關訪問權限控制和定位目標微服務。各模塊功能說明如下:

  • 黑名單:實現通過IP地址控制禁止訪問網關功能,此功能是應用層面控制實現,再往前也可以通過網絡傳輸方面進行控制訪問。
  • 日誌:實現訪問日誌的記錄,可用於分析訪問、處理性能指標,同時將分析結果支持其他模塊功能應用。
  • 協議適配:實現通信協議校驗、適配轉換的功能。
  • 身份驗證:負責網關訪問身份認證驗證,此模塊與“訪問認證中心”通信,實際認證業務邏輯交移“訪問認證中心”處理。
  • 計流限流:實現微服務訪問流量計算,基於流量計算分析進行限流,可以定義多種限流規則。
  • 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務並將請求進行轉發。此模塊需要與“服務發佈管理中心”通信。“服務發佈管理中心”實現微服務發佈註冊管理功能,與其通信獲得目標微服務信息。 

API網關部署

API網關是一個公共基礎組件,無狀態,可支持多套分佈式部署。如下圖所示:

api網關部署示意圖

服務網關(Zuul)

Zuul可以與Eureka、Ribbon、Hystrix等組件配合使用。簡單說來,Zuul實現了兩個功能:路由轉發、過濾器:

1.路由轉發:接收請求,轉發到後端服務:

#路由到url 規則定義
zuul.routes.api-a-url.path=/api-a-url/**
zuul.routes.api-a-url.url=http://localhost:222/
該配置,定義了,所有到Zuul的規則爲:/api-a-url/**的訪問都映射到http://localhost:2222/上,也就是說當我們訪問http://localhost:5555/api-a-url/add?a=1&b=2的時候,Zuul會將請求路由到:http://localhost:2222/add?a=1&b=2上。配置屬性zuul.routes.api-a-url.path中的api-a-url部分爲路由的名字,可以任意定義,但是一組映射關係的path和url要相同。

2.過濾器:提供一系列過濾器完成權限、日誌、限流等切面任務。

Zuul的核心是一系列過濾器,開發者通過實現過濾器接口,可以做大量切面任務,即AOP思想的應用。Zuul的過濾器之間沒有直接的互相通信,而是通過本地ThreadLocal變量進行數據的傳遞。

 

 參考鏈接

微服務之服務網關

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章