網關


why:

  隨着微服務的興起,基於其業務耦合性低、負載能力強、服務邊界清晰等優點,大家紛紛使用微服務架構來實現新系統或進行老系統的改造。微服務在帶來諸多好處的同時,也有一些問題需要解決,比如:如何做到有效拆分、減少服務間調用,如何統一管理所有服務的接口,如何進行自動化部署等。本文闡述微服務的API網關的一些主要功能,並例舉了幾種常用的網關,最后結合spring cloud微服務框架對網關做一些簡要的論述。

 

what:

  API網關,顧名思義,是統一管理API的一個網絡關口、通道,是整個微服務平台所有請求的唯一入口,所有的客戶端和消費端都通過統一的網關接入微服務,在網關層處理所有的非業務功能。下圖為微服務架構的簡單示意圖,網關起到的作用一目了然。

how:

  為微服務雲平台提供統一的入口是API網關最主要的用途,除此之外,網關還可承擔認證授權、訪問控制、路由、負載均衡、緩存、日志、限流限額、轉換、映射、過濾、熔斷、注冊、服務編排、API管理、監控、統計分析等等非業務性的功能。

  

 

  所以實現或者選擇一個好的API網關,是建設容器雲和微服務體系中一個至關重要的事項。這也決定了API網關的部署,要盡可能的減少接觸面,確保安全。下面介紹幾個API網關的核心功能。

 

 

 

 

 

 

 

 

 

 

 

 

常見的幾種api網關

  目前比較常見的幾種開源的API網關有以下幾種:Kong、Treafik、Ambassador、Tyk、Zuul ,下面對這幾種網關做一下簡單的介紹和對比。
  Kong是一個在 Nginx 中運行的Lua應用程序,並且可以通過lua-nginx模塊實現,Kong不是用這個模塊編譯Nginx,而是與 OpenResty 一起發布,OpenResty已經包含了lua-nginx-module,OpenResty不是Nginx的分支,而是一組擴展其功能的模塊。
它的核心是實現數據庫抽象,路由和插件管理,插件可以存在於單獨的代碼庫中,並且可以在幾行代碼中注入到請求生命周期的任何位置。
  Traefik是一個現代HTTP反向代理和負載均衡器,可以輕松部署微服務,Traeffik 可以與您現有的組件(Docker、Swarm,Kubernetes,Marathon,Consul,Etcd,…)集成,並自動動態配置。
  Ambassador是一個開源的微服務 API 網關,建立在 Envoy 代理之上,為用戶的多個團隊快速發布,監控和更新提供支持,支持處理 Kubernetes ingress controller 和負載均衡等功能,可以與 Istio 無縫集成。
  Tyk是一個開源的、輕量級的、快速可伸縮的 API 網關,支持配額和速度限制,支持認證和數據分析,支持多用戶多組織,提供全RESTful API。基於go編寫。
  Zuul是一種提供動態路由、監視、彈性、安全性等功能的邊緣服務。Zuul 是Netflix出品的一個基於JVM路由和服務端的負載均衡器。

 

 

 

 

  由上述對比表格中可以看出:從開源社區活躍度來看,無疑是Kong和Traefik較好;從成熟度來看,較好的是Kong、Tyk、Traefik;從性能角度來看,Kong要比其他幾個領先一些;從架構優勢的擴展性來看,Kong、Tyk有豐富的插件,Ambassador也有插件但不多,而Zuul是完全需要自研,但Zuul由於與Spring Cloud深度集成,使用度也很高,近年來Istio服務網格的流行,Ambassador因為能夠和Istio無縫集成也是相當大的優勢。

spring cloud
目前能和spring cloud體系緊密集成的有兩種API網關:zuul(zuul1)和spring cloud gateway。zuul網關再上面有提到,spring cloud gateway是spring官方推出的用於替代zuul的新組建。這里對於如何集成zuul或spring cloud gateway不做講述,只對這兩種網關做一個簡單的闡述與比較。

 

  關聯文檔:https://blog.csdn.net/nsxqf/article/details/90679742

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM