天天看點

開源API網關,你選對了麼?

開源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
流水理魚 釋出!