你們對網關的技術選型是怎么考慮的?能對比一下各種網關技術的優劣嗎?



網關的核心功能

(1)動態路由:新開發某個服務,動態把請求路徑和服務的映射關系熱加載到網關里去;服務增減機器,網關自動熱感知
(2)灰度發布
(3)授權認證
(4)性能監控:每個API接口的耗時、成功率、QPS
(5)系統日志
(6)數據緩存
(7)限流熔斷

幾種技術選型

Kong、Zuul、Nginx+Lua(OpenResty)、自研網關
Kong:Nginx里面的一個基於lua寫的模塊,實現了網關的功能 Zuul:Spring Cloud來玩兒微服務技術架構,Zuul

Nginx+Lua(OpenResty):課程目錄里面,有一個文檔,課程免費學習,億級流量系統架構的課程,詳細講解了Nginx+Lua的開發,基於lua自己寫類似Kong的網關 自研網關:自己來寫類似Zuul的網關,基於Servlet、Netty來做網關,實現上述所有的功能

大廠:BAT、京東、美團、滴滴之類的,自研網關,都是基於Netty等技術自研網關;Nginx + Lua(Tengine)來做,封裝網關的功能

中小型公司:Spring Cloud技術棧主要是用Zuul,Gateway;如果是Dubbo等技術棧,有的采用Kong等網關,也可以直接不用網關,很多公司壓根兒就沒用網關,直接Nginx反向代理+負載均衡;

Zuul:基於Java開發,核心網關功能都比較簡單,但是比如灰度發布、限流、動態路由之類的,很多都要自己做二次開發

Kong:依托於Nginx實現,OpenResty,lua實現的模塊,現成的一些插件,可以直接使用

Zuul(Servlet、Java):高並發能力不強,部署到一些機器上去,還要基於Tomcat來部署,Spring Boot用Tomcat把網關系統跑起來;Java語言開發,可以直接把控源碼,可以做二次開發封裝各種需要的功能

Nginx(Kong、Nginx+Lua):Nginx抗高並發的能力很強,少數幾台機器部署一下,就可以抗很高的並發,精通Nginx源碼,很難,c語言,很難說從Nginx內核層面去做一些二次開發和源碼定制

Java技術棧為主的大廠,很多其實用Java、Servlet、Netty來開發高並發、高性能的網關系統,自己可以把控一切


免責聲明!

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



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