您好,登錄后才能下訂單哦!
本篇內容介紹了“如何選擇適合自己的微服務API網關”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
讓我們先來看下微服務 API 網關的作用,下圖是一個簡要的說明:
API 網關并非一個新興的概念,在十幾年前就已經存在了,它的作用主要是作為流量的入口,統一的處理和業務相關的請求,讓請求更加安全、快速和準確的得到處理。它有以下傳統的功能:
反向代理和負載均衡,這和 Nginx 的定位和功能是一致的;
動態上游、動態 SSL 證書和動態限流限速等運行時的動態功能,這是開源版本 Nginx 并不具備的功能;
上游的主動和被動健康檢查,以及服務熔斷;
在 API 網關的基礎之上進行擴展,成為全生命周期的 API 管理平臺。
在最近幾年,業務相關的流量,不再僅僅是由 PC 客戶端和瀏覽器發起,更多的來自手機、IoT 設備等,未來隨著 5G 的普及,這些流量會越來越多,同時,隨著微服務架構的結構變遷,服務之間的流量也開始爆發性的增長。在這種新的業務場景下,催生了API 網關更多、更高級的功能:
云原生友好,架構要變得輕巧,便于容器化;
對接 Prometheus、Zipkin、Skywalking 等統計、監控組件;
支持 gRPC 代理,以及 http 到 gRPC 之間的協議轉換,把用戶的 http 請求轉為內部服務的 gPRC 請求;
承擔 OpenID Relying Party 的角色,對接 Auth0、okta 等身份認證提供商的服務,把流量的安全作為頭等大事來對待;
通過運行時動態執行用戶函數的方式來實現 serverless,讓網關的邊緣節點更加靈活;
不鎖定用戶,支持混合云的部署架構;
最后就是網關節點要狀態無關,可以隨意的擴容和縮容。
一個微服務 API 網關具備了上述十幾項功能,就可以讓用戶的服務只關心業務本身,而和業務實現無關的功能,比如服務發現、服務熔斷、身份認證、限流限速、統計、性能分析等,就可以在獨立的網關層面來解決。從這個角度來看,API 網關既可以替代 Nginx 的所有功能,來處理南北向的流量,也可以完成 Istio 控制面和 Envoy 數據面的角色,來處理東西向的流量。
正因為微服務 API 網關的地位如此重要,所以它一直處于兵家必爭之地,傳統的 IT 巨頭在這個領域很早就都有布局,比如谷歌、CA、IBM、紅帽、salesforce、以及 AWS、阿里云等公有云廠商。
這些閉源的商業產品,它們的功能都很完善,覆蓋了 API 的設計、多語言 SDK、文檔、測試和發布等全生命周期管理,并且提供 SaaS 服務,有些還與公有云做了集成,使用起來非常方便,但同時也帶來兩個痛點:
平臺鎖定。API 網關是業務流量的入口,它不像圖片、視頻等 CDN 加速的這種非業務流量可以隨意遷移,API 網關上會綁定不少業務相關的邏輯,一旦使用了閉源的方案,就很難平滑和低成本的遷移到其他平臺。
無法二次開發。一般的大中型企業都會有自己獨特的需求,需要定制開發,這時候你就只能依靠廠商,而不能自己動手去做二次開發。
所以我們更偏重于開源的 API 網關方案,比如 Kong、APISIX 和 Trk 等。這些 API 網關是從云原生軟件基金會(CNCF)的全景圖中摘選的:
是可以在單機就能完整部署,還是需要多個節點配合才能使用?
是否有外部的數據庫依賴?比如 MySQL、Postgres?
是否有 web 控制臺可以操作整個集群?
你是否可以編寫自己的插件來擴展 API 網關的功能?
當你使用了某個 API 網關后,是否可以平滑而且低成本的遷移到其他 API 網關?
是否會被鎖定在特定的平臺上?
是否支持部署在用戶自己的內部服務器中?
是否支持多云、混合云的部署模式?
是否支持動態上游、動態 SSL 證書、主動/被動健康檢查這些基本的功能
能否對接 Prometheus、Zipkin、Skywalking 等統計、監控組件
是否可以通過 HTTP REST API 和 yaml 配置文件這兩種方式,來控制網關配置
使用者能否通過 Github、QQ 群、Stack Overflow 等方式聯系到社區的開發者?
開源許可證是否友好?
是否可以方便的提交自己的修改到主線版本?
背后是否有商業公司支持?
開源版本和商業版本差異是否很大?
商業版本是按照 API 調用次數還是訂閱方式收費?
下面是各個 API 網關多個角度的對比結果:
API 網關 | Kong | APISIX | Trk | Apigee | AWS
| Aliyun |
部署模式 | 單機和集群 | 單機和集群 | 單機和集群 | 不支持單機 | PaaS | PaaS |
數據存儲 | Postgres 或者 Cassandra | etcd | Postgres,Cassandra和Zookeeper | PaaS | PaaS | |
是否開源 | Apache 2.0 協議 | Apache 2.0 協議 | MPL 協議 | 否 | 否 | 否 |
核心技術 | Nginx+Lua | Nginx+Lua | Golang | 未知 | 未知 | 未知 |
私有部署 | 是 | 是 | 是 | 否 | 否 | 否 |
自定義插件 | 是 | 是 | 是 | 否 | 否 | 否 |
社區活躍度 | 高 | 高 | 高 | 中 | 低 | 低 |
對接外部 IdP | 否 | 是 | 否 | 是 | 是 | 否 |
支持yaml | 是 | 是 | 否 | 否 | 否 | 否 |
從中我們可以看出,Kong 和 APISIX 都是非常好的選擇。
“如何選擇適合自己的微服務API網關”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。