您好,登錄后才能下訂單哦!
本篇內(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)的作用,下圖是一個(gè)簡(jiǎn)要的說明:
API 網(wǎng)關(guān)并非一個(gè)新興的概念,在十幾年前就已經(jīng)存在了,它的作用主要是作為流量的入口,統(tǒng)一的處理和業(yè)務(wù)相關(guān)的請(qǐng)求,讓請(qǐng)求更加安全、快速和準(zhǔn)確的得到處理。它有以下傳統(tǒng)的功能:
反向代理和負(fù)載均衡,這和 Nginx 的定位和功能是一致的;
動(dòng)態(tài)上游、動(dòng)態(tài) SSL 證書和動(dòng)態(tài)限流限速等運(yùn)行時(shí)的動(dòng)態(tài)功能,這是開源版本 Nginx 并不具備的功能;
上游的主動(dòng)和被動(dòng)健康檢查,以及服務(wù)熔斷;
在 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í)的功能:
云原生友好,架構(gòu)要變得輕巧,便于容器化;
對(duì)接 Prometheus、Zipkin、Skywalking 等統(tǒng)計(jì)、監(jiān)控組件;
支持 gRPC 代理,以及 http 到 gRPC 之間的協(xié)議轉(zhuǎn)換,把用戶的 http 請(qǐng)求轉(zhuǎn)為內(nèi)部服務(wù)的 gPRC 請(qǐng)求;
承擔(dān) OpenID Relying Party 的角色,對(duì)接 Auth0、okta 等身份認(rèn)證提供商的服務(wù),把流量的安全作為頭等大事來對(duì)待;
通過運(yùn)行時(shí)動(dòng)態(tài)執(zhí)行用戶函數(shù)的方式來實(shí)現(xiàn) serverless,讓網(wǎng)關(guān)的邊緣節(jié)點(diǎn)更加靈活;
不鎖定用戶,支持混合云的部署架構(gòu);
最后就是網(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ù)面的角色,來處理東西向的流量。
正因?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):
平臺(tái)鎖定。API 網(wǎng)關(guān)是業(yè)務(wù)流量的入口,它不像圖片、視頻等 CDN 加速的這種非業(yè)務(wù)流量可以隨意遷移,API 網(wǎng)關(guān)上會(huì)綁定不少業(yè)務(wù)相關(guān)的邏輯,一旦使用了閉源的方案,就很難平滑和低成本的遷移到其他平臺(tái)。
無法二次開發(fā)。一般的大中型企業(yè)都會(huì)有自己獨(dú)特的需求,需要定制開發(fā),這時(shí)候你就只能依靠廠商,而不能自己動(dòng)手去做二次開發(fā)。
所以我們更偏重于開源的 API 網(wǎng)關(guān)方案,比如 Kong、APISIX 和 Trk 等。這些 API 網(wǎng)關(guān)是從云原生軟件基金會(huì)(CNCF)的全景圖中摘選的:
是可以在單機(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)配置
使用者能否通過 Github、QQ 群、Stack Overflow 等方式聯(lián)系到社區(qū)的開發(fā)者?
開源許可證是否友好?
是否可以方便的提交自己的修改到主線版本?
背后是否有商業(yè)公司支持?
開源版本和商業(yè)版本差異是否很大?
商業(yè)版本是按照 API 調(diào)用次數(shù)還是訂閱方式收費(fèi)?
下面是各個(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 | 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í)用文章!
免責(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)容。