微服務(wù)五種開源API網(wǎng)關(guān)實現(xiàn)組件對比

微服務(wù)架構(gòu)是當(dāng)下比較流行的一種架構(gòu)風(fēng)格,它是一種以業(yè)務(wù)功能組織的服務(wù)集合,可以持續(xù)交付、快速部署、更好的可擴展性和容錯能力,而且還使組織更容易去嘗試新技術(shù)棧。微服務(wù)具有幾個關(guān)鍵特征:

在陽朔等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),陽朔網(wǎng)站建設(shè)費用合理。

  • 高度可維護和可測試性
  • 與其他服務(wù)松散耦合
  • 且可獨立部署
  • 能夠由一個小團隊開發(fā)

現(xiàn)在很多公司企業(yè)想將自己的單體應(yīng)用架構(gòu)遷移到微服務(wù)架構(gòu),在這個問題上,Martin Fowler提出了3個前提,而Phil Calcado對其進(jìn)行了擴展如下:

  • 快速配置計算資源
  • 基本監(jiān)控
  • 快速部署
  • 易于配置存儲
  • 易于訪問網(wǎng)關(guān)
  • 認(rèn)證、授權(quán)
  • 標(biāo)準(zhǔn)化的 RPC

今天我們主要講講易于訪問的網(wǎng)關(guān),也就是 API 網(wǎng)關(guān)。

為什么需要 API 網(wǎng)關(guān)

假設(shè)我們要使用微服務(wù)架構(gòu)構(gòu)建一個電商平臺,以下可能是一些潛在的服務(wù):

  • 購物車服務(wù)
  • 訂單服務(wù)
  • 商品服務(wù)
  • 評論服務(wù)
  • 庫存服務(wù)

等等,客戶端應(yīng)該怎么訪問這些服務(wù)呢?原來單體應(yīng)用的情況我們都知道,都在一個服務(wù)器上部署,直接訪問IP+端口+服務(wù)前綴即可,現(xiàn)在微服務(wù)架構(gòu)下,每個服務(wù)都可以獨立部署,并且是由不同的開發(fā)團隊開發(fā)的,難道我們要這樣訪問嗎?

微服務(wù)五種開源API網(wǎng)關(guān)實現(xiàn)組件對比

理論上每個服務(wù)都有端點可以訪問,但是客戶端就需要記錄所有服務(wù)的端點,發(fā)起5次請求,現(xiàn)在還是5個服務(wù),如果之后擴展多了呢?對客戶端來說就是一個災(zāi)難,隨之帶來的就是安全性問題、擴展性問題等,所以這種客戶端直接與每個服務(wù)交互是不可取的,通常,更好的方式是使用 API 網(wǎng)關(guān)。

API 網(wǎng)關(guān)是客戶端訪問服務(wù)的統(tǒng)一入口,API 網(wǎng)關(guān)封裝了后端服務(wù),還提供了一些更高級的功能,例如:身份驗證、監(jiān)控、負(fù)載均衡、緩存、多協(xié)議支持、限流、熔斷等等,API 網(wǎng)關(guān)還可以針對不同的客戶端定制不同粒度的 API,上面例子中修改架構(gòu)后如下:

微服務(wù)五種開源API網(wǎng)關(guān)實現(xiàn)組件對比

API 網(wǎng)關(guān)的優(yōu)缺點

API 網(wǎng)關(guān)的好處是顯而易見的,封裝了應(yīng)用程序的內(nèi)部結(jié)構(gòu),為不同客戶端提供不同粒度的 API,同時網(wǎng)關(guān)自身也提供了一些高級功能,也減少了客戶端與應(yīng)用程序之間的往返次數(shù),使客戶端代碼更優(yōu)雅。

同時使用網(wǎng)關(guān)也存在一些缺點,增加了一個新的組件,增加了整個應(yīng)用架構(gòu)的復(fù)雜度,一個通俗的道理,你做的越多你犯錯的風(fēng)險也越高,網(wǎng)關(guān)不可用很可能導(dǎo)致整個應(yīng)用架構(gòu)崩潰,當(dāng)然現(xiàn)在有各種各樣的方案,能防止網(wǎng)關(guān)崩潰,它也可能存在瓶頸風(fēng)險。

使用網(wǎng)關(guān)有利有弊,我個人而言,利肯定是大于弊的,我們盡可能的將弊端降到最低。

API 網(wǎng)關(guān)一些實現(xiàn)

使用一個組件時,尤其是這種比較流行的架構(gòu),組件肯定存在開源的,我們不必自己去從零開始去實現(xiàn)一個網(wǎng)關(guān),自己開發(fā)一個網(wǎng)關(guān)的工作量是相當(dāng)可觀的,現(xiàn)在比較流行的開源 API 網(wǎng)關(guān)如下所示:

Kong

Kong是一個在 Nginx 中運行的Lua應(yīng)用程序,并且可以通過lua-nginx模塊實現(xiàn),Kong不是用這個模塊編譯Nginx,而是與 OpenResty 一起發(fā)布,OpenResty已經(jīng)包含了 lua-nginx-module, OpenResty 不是 Nginx 的分支,而是一組擴展其功能的模塊。

它的核心是實現(xiàn)數(shù)據(jù)庫抽象,路由和插件管理,插件可以存在于單獨的代碼庫中,并且可以在幾行代碼中注入到請求生命周期的任何位置。

Traefik

Traefik 是一個現(xiàn)代 HTTP 反向代理和負(fù)載均衡器,可以輕松部署微服務(wù),Traeffik 可以與您現(xiàn)有的組件(Docker、Swarm,Kubernetes,Marathon,Consul,Etcd,…)集成,并自動動態(tài)配置。

Ambassador

Ambassador 是一個開源的微服務(wù) API 網(wǎng)關(guān),建立在 Envoy 代理之上,為用戶的多個團隊快速發(fā)布,監(jiān)控和更新提供支持,支持處理 Kubernetes ingress controller 和負(fù)載均衡等功能,可以與 Istio 無縫集成。

Tyk

Tyk是一個開源的、輕量級的、快速可伸縮的 API 網(wǎng)關(guān),支持配額和速度限制,支持認(rèn)證和數(shù)據(jù)分析,支持多用戶多組織,提供全 RESTful API?;?go 編寫。

Zuul

Zuul 是一種提供動態(tài)路由、監(jiān)視、彈性、安全性等功能的邊緣服務(wù)。Zuul 是 Netflix 出品的一個基于 JVM 路由和服務(wù)端的負(fù)載均衡器。

API 網(wǎng)關(guān)實現(xiàn)對比

微服務(wù)五種開源API網(wǎng)關(guān)實現(xiàn)組件對比

微服務(wù)五種開源API網(wǎng)關(guān)實現(xiàn)組件對比

總結(jié)

由上述對比表格中可以看出:從開源社區(qū)活躍度來看,無疑是Kong和Traefik較好;從成熟度來看,較好的是Kong、Tyk、Traefik;從性能角度來看,Kong要比其他幾個領(lǐng)先一些;從架構(gòu)優(yōu)勢的擴展性來看,Kong、Tyk有豐富的插件,Ambassador也有插件但不多,而Zuul是完全需要自研,但Zuul由于與Spring Cloud深度集成,使用度也很高,近年來Istio服務(wù)網(wǎng)格的流行,Ambassador因為能夠和Istio無縫集成也是相當(dāng)大的優(yōu)勢。

具體使用選擇還是需要依據(jù)具體的業(yè)務(wù)場景,我們在參考鏈接中收集了一些性能對比,大家可以做下參考。

文章題目:微服務(wù)五種開源API網(wǎng)關(guān)實現(xiàn)組件對比
本文地址:http://muchs.cn/article8/ihdhop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站外貿(mào)建站、網(wǎng)站設(shè)計企業(yè)網(wǎng)站制作、ChatGPT、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名