五種開源API網關實現組件對比
API 網關一些實現
使用一個組件時,尤其是這種比較流行的架構,組件肯定存在開源的,我們不必自己去從零開始去實現一個網關,自己開發一個網關的工作量是相當可觀的,現在比較流行的開源 API 網關如下所示:
Kong
Kong是一個在 Nginx 中運行的Lua應用程序,並且可以通過lua-nginx模塊實現,Kong不是用這個模塊編譯Nginx,而是與 OpenResty 一起發布,OpenResty已經包含了 lua-nginx-module, OpenResty 不是 Nginx 的分支,而是一組擴展其功能的模塊。
它的核心是實現數據庫抽象,路由和插件管理,插件可以存在於單獨的代碼庫中,並且可以在幾行代碼中注入到請求生命周期的任何位置。
Traefik
Traefik 是一個現代 HTTP 反向代理和負載均衡器,可以輕松部署微服務,Traeffik 可以與您現有的組件(Docker、Swarm,Kubernetes,Marathon,Consul,Etcd,…)集成,並自動動態配置。
Ambassador
Ambassador 是一個開源的微服務 API 網關,建立在 Envoy 代理之上,為用戶的多個團隊快速發布,監控和更新提供支持,支持處理 Kubernetes ingress controller 和負載均衡等功能,可以與 Istio 無縫集成。
Tyk
Tyk是一個開源的、輕量級的、快速可伸縮的 API 網關,支持配額和速度限制,支持認證和數據分析,支持多用戶多組織,提供全 RESTful API。基於 go 編寫。
Zuul
Zuul 是一種提供動態路由、監視、彈性、安全性等功能的邊緣服務。Zuul 是 Netflix 出品的一個基於 JVM 路由和服務端的負載均衡器。
API 網關實現對比
由上述對比表格中可以看出:從開源社區活躍度來看,無疑是Kong和Traefik較好;從成熟度來看,較好的是Kong、Tyk、Traefik;從性能角度來看,Kong要比其他幾個領先一些;從架構優勢的擴展性來看,Kong、Tyk有豐富的插件,Ambassador也有插件但不多,而Zuul是完全需要自研,但Zuul由於與Spring Cloud深度集成,使用度也很高,近年來Istio服務網格的流行,Ambassador因為能夠和Istio無縫集成也是相當大的優勢。
具體使用選擇還是需要依據具體的業務場景,我們在參考鏈接中收集了一些性能對比,大家可以做下參考。
參考鏈接
https://www.bbva.com/en/api-gateways-kong-vs-tyk/ kong vs tyk
https://stackshare.io/stackups/kong-vs-traefik kong vs traefik
https://blog.getambassador.io/envoy-vs-nginx-vs-haproxy-why-the-open-source-ambassador-api-gateway-chose-envoy-23826aed79ef envoy vs nginx
https://engineering.opsgenie.com/comparing-api-gateway-performances-nginx-vs-zuul-vs-spring-cloud-gateway-vs-linkerd-b2cc59c65369 nginx vs zuul