開源API網關,你選對了麼?
api網關的本質
不用扯那麼多,也不用畫圖,一句話說清楚
api網關:流量總入口,得以集中控制!
就這麼簡單
api網關協定上最基本要支援HTTP 和 WebSocket,功能強大點的更會支援tcp/udp的負載均衡接入
正因為支援的是http協定,是以api網關不僅僅可以作為 RESTful API 接入,接入帶頁面的web都可以的,完全可以當成一個web負載均衡器使用
api網關的作用
解決:認證、鑒權、安全、流量管控、緩存、服務路由,協定轉換、服務編排、熔斷、灰階釋出、監控報警等問題
本質上,流量從我過,我就可以做想做的控制,上面列的就是我需要的控制
有了api網關才不至于裸奔,才不至于在業務層“重複建設”,才不至于在業務層去用redis+lua實作“親,你通路過于頻繁,請稍後再試”,這個事交給api網關就成
api網關比較
開源api網關大全
之前流水理魚把市面上開源的api網關整理了個大全 “開源API網關大全20款+” https://www.iamle.com/archives/2591.html ,大部分都加入了CNCF
以下api網關3Scale、Ambassador、APISIX、Express Gateway、Gloo、Kong、KrakenD、Mia-Platform、MuleSoft、Reactive Interaction Gateway、Sentinel、Tyk、WSO2 API Microgateway
加入了CNCF
開源api網關技術棧情況
api網關技術棧,老一派的使用java,新派的使用golang、openresty+lua
小衆Node.js、.net、C++ 技術棧雖然不一樣,達到的目的卻是一樣的。
用靜态語言編寫api網關是有弊端的
使用靜态語言編寫的api網關都會有插件編寫不友善的問題
使用java編寫的老牌網關性能差,曆史包袱重
openresty+lua也許是最佳的api網關、waf、web防火牆解決方案
依托于openresty平台具備超高性能,又依托于lua獲得了動态性
CloudFlare也是春哥當年用openresty+lua技術棧做的引擎
我們從不同的技術棧來做個api網關分類
openresty+lua開源api網關
代表有Kong、APISIX、3scale、、API Umbrella
Kong不用做太多介紹,應該是開源裡面最熱的一個api網關了,相對龐大複雜
APISIX,輕巧+極緻性能+熱插件,值得一提到是插件中有個serverless的支援,簡單說就是寫一段自定義lua腳本,挂載到openresty任意階段執行!
golang開源api網關
代表有Tky、Manba、GOKU API Gateway、Ambassador(基于Envoy)、Gloo(基于Envoy)、KrakenD、BFE
java開源api網關
代表有Gravitee、Zuul、Sentinel、MuleSoft、WSO2、Soul
Erlang開源api網關
代表有RIG – Reactive Interaction Gateway
.net開源api網關
代表有Ocelot
Node.js開源api網關
代表有express-gateway
閉源商業api網關
從gartner(艾瑞咨詢類似)的權威報告可以找到老牌的api網關玩家是誰
行業老大:Apigee、3Scale、Amazon等
各大雲都是玩家,比如阿裡雲api網關、騰訊雲api網關、Amazon API Gateway
國内還有幾家也在做商業api網關,具體搜尋下就能找到
總結下api網關選型建議
- 前提滿足功能需求
- 不在乎商業閉源綁定,不想麻煩,選你最容易擷取的商業api網關例如雲平台賣的商業網關
- 國内使用者選 apisix 為代表的openresty+lua技術棧api網關,可以得到中文群組支援
- 希望國際化的選 kong 為代表的openresty+lua技術棧api網關
- 有大量的某語言開發人員,可以選基于這個技術棧的api網關,例如java選Gravitee,golang選tyk、Manba
流水理魚 釋出!