開源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
流水理魚 發布!