溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何選擇適合自己的微服務(wù)API網(wǎng)關(guān)

發(fā)布時(shí)間:2021-06-26 13:57:31 來源:億速云 閱讀:186 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“如何選擇適合自己的微服務(wù)API網(wǎng)關(guān)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

微服務(wù) API 網(wǎng)關(guān)有什么作用?

讓我們先來看下微服務(wù) API 網(wǎng)關(guān)的作用,下圖是一個(gè)簡(jiǎn)要的說明:

如何選擇適合自己的微服務(wù)API網(wǎng)關(guān)

API 網(wǎng)關(guān)并非一個(gè)新興的概念,在十幾年前就已經(jīng)存在了,它的作用主要是作為流量的入口,統(tǒng)一的處理和業(yè)務(wù)相關(guān)的請(qǐng)求,讓請(qǐng)求更加安全、快速和準(zhǔn)確的得到處理。它有以下傳統(tǒng)的功能:

  1. 反向代理和負(fù)載均衡,這和 Nginx 的定位和功能是一致的;

  2. 動(dòng)態(tài)上游、動(dòng)態(tài) SSL 證書和動(dòng)態(tài)限流限速等運(yùn)行時(shí)的動(dòng)態(tài)功能,這是開源版本 Nginx 并不具備的功能;

  3. 上游的主動(dòng)和被動(dòng)健康檢查,以及服務(wù)熔斷;

  4. 在 API 網(wǎng)關(guān)的基礎(chǔ)之上進(jìn)行擴(kuò)展,成為全生命周期的 API 管理平臺(tái)。

在最近幾年,業(yè)務(wù)相關(guān)的流量,不再僅僅是由 PC 客戶端和瀏覽器發(fā)起,更多的來自手機(jī)、IoT 設(shè)備等,未來隨著 5G 的普及,這些流量會(huì)越來越多,同時(shí),隨著微服務(wù)架構(gòu)的結(jié)構(gòu)變遷,服務(wù)之間的流量也開始爆發(fā)性的增長(zhǎng)。在這種新的業(yè)務(wù)場(chǎng)景下,催生了API 網(wǎng)關(guān)更多、更高級(jí)的功能:

  1. 云原生友好,架構(gòu)要變得輕巧,便于容器化;

  2. 對(duì)接 Prometheus、Zipkin、Skywalking 等統(tǒng)計(jì)、監(jiān)控組件;

  3. 支持 gRPC 代理,以及 http 到 gRPC 之間的協(xié)議轉(zhuǎn)換,把用戶的 http 請(qǐng)求轉(zhuǎn)為內(nèi)部服務(wù)的 gPRC 請(qǐng)求;

  4. 承擔(dān) OpenID Relying Party 的角色,對(duì)接 Auth0、okta 等身份認(rèn)證提供商的服務(wù),把流量的安全作為頭等大事來對(duì)待;

  5. 通過運(yùn)行時(shí)動(dòng)態(tài)執(zhí)行用戶函數(shù)的方式來實(shí)現(xiàn) serverless,讓網(wǎng)關(guān)的邊緣節(jié)點(diǎn)更加靈活;

  6. 不鎖定用戶,支持混合云的部署架構(gòu);

  7. 最后就是網(wǎng)關(guān)節(jié)點(diǎn)要狀態(tài)無關(guān),可以隨意的擴(kuò)容和縮容。

一個(gè)微服務(wù) API 網(wǎng)關(guān)具備了上述十幾項(xiàng)功能,就可以讓用戶的服務(wù)只關(guān)心業(yè)務(wù)本身,而和業(yè)務(wù)實(shí)現(xiàn)無關(guān)的功能,比如服務(wù)發(fā)現(xiàn)、服務(wù)熔斷、身份認(rèn)證、限流限速、統(tǒng)計(jì)、性能分析等,就可以在獨(dú)立的網(wǎng)關(guān)層面來解決。從這個(gè)角度來看,API 網(wǎng)關(guān)既可以替代 Nginx 的所有功能,來處理南北向的流量,也可以完成 Istio 控制面和 Envoy 數(shù)據(jù)面的角色,來處理東西向的流量。

備選的 API 網(wǎng)關(guān)有哪些?

正因?yàn)槲⒎?wù) API 網(wǎng)關(guān)的地位如此重要,所以它一直處于兵家必爭(zhēng)之地,傳統(tǒng)的 IT 巨頭在這個(gè)領(lǐng)域很早就都有布局,比如谷歌、CA、IBM、紅帽、salesforce、以及 AWS、阿里云等公有云廠商。

這些閉源的商業(yè)產(chǎn)品,它們的功能都很完善,覆蓋了 API 的設(shè)計(jì)、多語言 SDK、文檔、測(cè)試和發(fā)布等全生命周期管理,并且提供 SaaS 服務(wù),有些還與公有云做了集成,使用起來非常方便,但同時(shí)也帶來兩個(gè)痛點(diǎn):

  1. 平臺(tái)鎖定。API 網(wǎng)關(guān)是業(yè)務(wù)流量的入口,它不像圖片、視頻等 CDN 加速的這種非業(yè)務(wù)流量可以隨意遷移,API 網(wǎng)關(guān)上會(huì)綁定不少業(yè)務(wù)相關(guān)的邏輯,一旦使用了閉源的方案,就很難平滑和低成本的遷移到其他平臺(tái)。

  2. 無法二次開發(fā)。一般的大中型企業(yè)都會(huì)有自己獨(dú)特的需求,需要定制開發(fā),這時(shí)候你就只能依靠廠商,而不能自己動(dòng)手去做二次開發(fā)。

所以我們更偏重于開源的 API 網(wǎng)關(guān)方案,比如 Kong、APISIX 和 Trk 等。這些 API 網(wǎng)關(guān)是從云原生軟件基金會(huì)(CNCF)的全景圖中摘選的:

如何選擇適合自己的微服務(wù)API網(wǎng)關(guān)

對(duì)比選型的依據(jù)

部署和維護(hù)成本

  • 是可以在單機(jī)就能完整部署,還是需要多個(gè)節(jié)點(diǎn)配合才能使用?

  • 是否有外部的數(shù)據(jù)庫依賴?比如 MySQL、Postgres?

  • 是否有 web 控制臺(tái)可以操作整個(gè)集群?

開源還是閉源

  • 你是否可以編寫自己的插件來擴(kuò)展 API 網(wǎng)關(guān)的功能?

  • 當(dāng)你使用了某個(gè) API 網(wǎng)關(guān)后,是否可以平滑而且低成本的遷移到其他 API 網(wǎng)關(guān)?

  • 是否會(huì)被鎖定在特定的平臺(tái)上?

能否私有化部署

  • 是否支持部署在用戶自己的內(nèi)部服務(wù)器中?

  • 是否支持多云、混合云的部署模式?

功能

  • 是否支持動(dòng)態(tài)上游、動(dòng)態(tài) SSL 證書、主動(dòng)/被動(dòng)健康檢查這些基本的功能

  • 能否對(duì)接 Prometheus、Zipkin、Skywalking 等統(tǒng)計(jì)、監(jiān)控組件

  • 是否可以通過 HTTP REST API 和 yaml 配置文件這兩種方式,來控制網(wǎng)關(guān)配置

社區(qū)

  • 使用者能否通過 Github、QQ 群、Stack Overflow 等方式聯(lián)系到社區(qū)的開發(fā)者?

  • 開源許可證是否友好?

  • 是否可以方便的提交自己的修改到主線版本?

  • 背后是否有商業(yè)公司支持?

商業(yè)支持和價(jià)格

  • 開源版本和商業(yè)版本差異是否很大?

  • 商業(yè)版本是按照 API 調(diào)用次數(shù)還是訂閱方式收費(fèi)?

API 網(wǎng)關(guān)對(duì)比

下面是各個(gè) API 網(wǎng)關(guān)多個(gè)角度的對(duì)比結(jié)果:

API 網(wǎng)關(guān)

 Kong

APISIX

Trk

Apigee

AWS

 

Aliyun

部署模式

單機(jī)和集群

單機(jī)和集群

單機(jī)和集群

不支持單機(jī)

PaaS

PaaS

數(shù)據(jù)存儲(chǔ)

Postgres

或者

Cassandra

etcd

Redis

Postgres,Cassandra和Zookeeper

PaaS

PaaS

是否開源

Apache 2.0 協(xié)議

Apache 2.0 協(xié)議

MPL

協(xié)議

核心技術(shù)

Nginx+Lua

Nginx+Lua

Golang

    未知

未知

未知

私有部署

自定義插件

社區(qū)活躍度

對(duì)接外部 IdP

支持yaml

從中我們可以看出,Kong 和 APISIX 都是非常好的選擇。

“如何選擇適合自己的微服務(wù)API網(wǎng)關(guān)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI