請看一個電子商務應用程序復雜頁面(例如產品頁面)的案例研究。如果我們看一下下面的亞馬遜產品列表頁面,就會發現這個特定頁面需要呈現大量信息。

為了便于說明,讓我們列出呈現上述特定頁面可能需要的所有微服務。

考慮到搜索產品、庫存、發貨、評級和評論、推薦引擎、招商以及金融和保險是用于呈現上述頁面的七個(7)不同的微服務。

附注:以上七個微服務只是解釋 API 網關概念的一個假設。實際上,亞馬遜可能有不同數量的微服務。

問題所在:由于這些微服務已分別部署在不同的服務器上,如果客戶端想要訪問這些服務,一個頁面至少需要七次調用

但這種方法真的好嗎?我不認為這是一種值得推薦的方法,因為我們必須進行七個不同的調用,這肯定會影響性能、資源消耗、加載時間等。客戶端也與所有服務緊密耦合,假設我們必須將 “評論 “和 “評級 “微服務分離到兩個不同的服務中,我們就必須更新客戶端代碼。客戶端必須調用一次才能獲得評論,調用一次才能獲得評級,這確實不是最好的處理方式。

解決方案

那么,建議采用什么方法呢?API 網關,我們在客戶端和微服務之間有一個稱為 API 網關的層。它是所有微服務的前端服務。現在任何客戶端想要訪問微服務,客戶端都必須調用API網關。現在,API 網關反過來調用所有微服務并獲取我們可能需要的任何響應。這個過程稱為 API 組合。

簡而言之,API 網關位于客戶端和微服務之間,充當所有微服務的網關。

不僅如此,使用 API 網關還能讓我們在很多方面受益。

API 網關的好處

API 網關有利于我們實施 A/B 測試、緩存、管理訪問配額、API 運行狀況監控、API 版本控制、Chaos monkey testing、貨幣化等等。讓我們來談談以下一些好處。

1.1. 安全

每次執行 API 調用時,都必須使用公共 IP 地址訪問服務。這暴露了風險。

通過切換到 API 網關,只能使用私有 IP 地址來訪問這些微服務。這導致數據交易的方式更加安全。此外,API網關的使用還可以保護數據免受惡意和DDoS攻擊。

為了確保安全性,TLS 證書是必要的,API Gateway 通過將我們的所有 API 保留在單個靜態 IP 或域后面并通過密鑰、令牌和 IP 過濾幫助保護它們來處理所有這些問題。

1.2. 身份驗證、授權和容錯

確保對登錄應用程序的用戶進行身份驗證和授權非常重要。 API 網關是一個單一入口,可以輕松滿足所有要求。因此,它只允許授權用戶登錄,并允許通過身份驗證的用戶進行更改,從而獲得容錯能性。

1.3. 負載均衡和路由

在出現多個請求且流量不斷增加的情況下,API Gateway 可以幫助處理。它是通過創建多個服務并像Round-Robin一樣調用它們來完成的。它可以根據用戶細分來管理和路由客戶端請求。因此,可為不同用戶提供不同質量或速度的內容。

考慮這樣一個用例:定義了兩個微服務,分別用于為臺式機和移動設備返回低質量圖像/視頻和高質量圖像/視頻

在這種情況下,我們可以配置一個 API 網關,使其充當路由器,如果請求來自移動設備,它將把請求路由到低質量的圖片/視頻服務,如果請求是來自臺式機,它可以路由到高質量的圖像/視頻服務。該路由可以基于標頭、路徑和參數等來完成。

1.4. 絕緣

如果應用程序中添加或刪除了一個或多個微服務,我們將不會更新客戶端代碼。在這種情況下,我們需要對API網關本身進行一些更改,以根據更新的微服務進行調用。

1.5. 反向代理和緩存

通過微服務提供靜態文件(HTML、JS、CSS、字體)并不是最佳用途,在這種情況下,我們可以將這些文件移動到 API 網關。

API網關可以保存所有靜態內容,直接為客戶端服務。同樣,考慮評估趨勢產品的服務,這些趨勢是每小時或每天計算的。因此,一旦計算出其余時間的趨勢,服務將重復返回相同的響應。在這種情況下,API 網關具有稱為響應緩存的功能,我們可以在其中提及需要緩存響應的 URL 和閾值時間。

1.6. 協議適配器

如果我們想利用像 Web 套接字或較新版本的 HTTP(即 HTTP/2)這樣的協議,即使我們的后端服務尚未準備好或與 HTTP/2 或 Web 套接字不兼容,API 網關也可以采用將新協議轉換為舊協議的責任。它可以充當協議適配器。

2024年最佳API網關清單

1. Kong Gateway

Kong Gateway是建立在輕量級代理之上的最流行的開源云原生API網關。它是在Nginx的幫助下用Lua編寫的。它是一個有助于加速事件時間的模板引擎。Kong保證為我們所有的微服務應用提供無與倫比的延遲性能和可擴展性,無論它們運行在哪里。納斯達克、霍尼韋爾、思科、FAB、Expedia、三星、西門子和雅虎日本等公司廣泛使用Kong API網關。

Kong提供的一些功能包括:

Kong擁有出色的文檔和集成

2. Apache APISIX

Apache APISIX最初誕生于中國的知流科技,后期進入Apache孵化器并開源。該項目副總裁Ming Wen表示,這個API網關解決了云原生和微服務帶來的各種挑戰。Apache ApiSix被360、HelloTalk、網易、TravelSky等公司所使用。

Apache APISIX基于Nginx和etcd,具有動態路由和插件熱加載功能,特別適合微服務系統下的API管理。

3. Tyk

Tyk是一個企業級的開源API網關。您可以選擇使用自托管或托管。

以下是TYK提供的一些開箱即用的特性:

TYK也可以在AWS市場上使用。如果您的應用程序堆棧在AWS上,這是一個不錯的選擇。

4. Ocelot

Ocelot是一個.net API網關.該項目旨在使用.net運行微服務或面向服務的體系結構,這些體系結構需要一個統一的系統入口點。但是,它可以與任何使用HTTP的東西一起工作,并在ASP支持的任何平臺上運行.NET核心支持。

Ocelot以特定的順序充當中間件。它操縱HttpRequest對象進入其配置指定的狀態,直到它到達請求構建器中間件。它創建一個HttpRequestMessage對象,用于請求下游服務。發出請求的中間件是Ocelot管道中的最后一件事。它不調用下一個中間件。中間件部分將HttpResponseMessage映射到HttpResponse對象,并返回給客戶端。

Ocelot提供了諸如路由、身份驗證、速率限制、緩存、負載平衡等標準特性。它不支持分塊編碼、轉發主機報頭和Swagger。

5. Goku

悟空API網關是EOLINK公司的一個傘形項目。它是一個基于golang的微服務網關,支持高性能動態路由、服務編排、多租戶管理、API訪問控制等功能。悟空提供了一個圖形界面和一個插件系統,使配置更容易,擴展更方便。除了標準特性,Goku還提供集群、熱更新、警報、日志記錄等功能。

6. Express Gateway

Express Gateway是基于Express.js構建的。Express Gateway是一組圍繞Express聲明式構建的組件,以滿足API Gateway用例。Express Gateway的強大功能利用了圍繞Express中間件的豐富生態系統。像Joyent、The Linux Foundation、VIRICITI、Switch Media、Coozy和Musement等公司都在廣泛使用Express網關。它簡單、快速,并提供所有基本功能。

7. Gloo

Gloo是面向云原生環境的下一代全功能API網關和入口控制器。它建立在Envoy Proxy上,用于連接、保護和控制跨應用程序服務的流量。Gloo支持連接到廣泛的工作負載,以保護和管理這些工作負載,并且它在功能級路由方面非常出色。它可以作為開源和企業使用。企業版提供以下功能:

8. KrakenD

KrakenD是一個超高性能的開源API網關。它的核心功能是創建一個API,將許多微服務聚合到單個端點,為您自動完成繁重的工作:聚合、轉換、過濾、解碼、節流、驗證等等。它提供了一種創建端點的聲明性方法。它具有良好的結構和分層,并且可以使用社區或內部開發的即插即用中間件擴展其功能。KrakenD聲稱比Kong和Tyk都快。

9. Fusio

Fusion是一個API管理系統,因為它幫助開發實際的API端點(即,從數據庫請求和轉換數據)。它并不局限于對另一個API的代理請求。它提供了一個簡單直觀的后端來控制和管理API。Fusion提供的一些功能包括:

10. WSO2

WSO2是一個完整的生命周期API管理解決方案,可以在任何地方運行。它可以部署在本地、云上,或者以混合方式部署,其中其組件可以跨多個云和本地基礎設施進行分布和部署。包含一個云原生API網關,并提供一個Kubernetes操作符,可以輕松地將原始微服務轉換為托管API。API Manager集成了服務網格,提供了一個完整的管理平面和控制平面,用于管理、監控和貨幣化API和API產品。它在一個清晰集成的系統中支持API發布、生命周期管理、應用程序開發、訪問控制、速率限制和分析。

11. Apigee

Apigee是Google Cloud的一個跨云API管理平臺。

它有以下幾種特性:

12. Cloud Endpoints

Endpoint是Google Cloud的輕量級Apigee版本。它最適合開發人員在任何Google Cloud后端上開發、部署和管理api。它從App Engine應用程序為其客戶端提供工具和庫。谷歌云端點與其他產品緊密集成,如用于監控的Trace和Logging,用于身份驗證的Auth0和Firebase,用于自動部署的GKE和App Engine等。

13. Amazon API Gateway

AWS可以提供運行應用程序所需的任何東西。API也是如此,Amazon API Gateway(亞馬遜API網關)是一種完全托管的服務,可以讓開發人員輕松地在任何規模下形成->發布->維護和保護API。它同時支持RESTful和WebSocket api,并允許我們啟用實時雙向通信。可以通過了解AWS云存儲網關,看看網關是如何工作的。

如果您的微服務或API已經托管在AWS上,那么與Amazon API Gateway集成是有意義的。他們在免費層下提供了100萬個API調用,這對你了解它是如何工作的很有好處。

14. Azure

Microsoft Azure在云中、本地或混合中提供端到端API管理。您可以通過REST API和SDK以編程方式管理API。如果您使用SOAP,可以導入其SOAP服務的web服務描述語言(WSDL), Azure將創建SOAP前端。它們提供所有標準功能,包括盈利。

15. MuleSoft

使用MuleSoft管理API并提高業務效率。它允許您在任何地方創建、保護、管理和治理通用api。您可以使用CI/CD管道和新的CLI來發現api,從而加速應用程序的交付。MuleSoft允許您使用不同的協議設計api,同時遵守治理標準并保持高質量。從api收集數據以探索、提供服務并將所有數據統一到GraphQL查詢中。這可以在DataGraph的幫助下完成。

使用MuleSoft靈活的網關,您可以管理您的服務,而無需擔心大小,云或語言。MuleSoft提供了一個控制面板,您可以在其中分析、管理和保護您的api、微服務和用戶。發展最新的業務模式和收入流,通過關注采用、API社區和消費過程來最大化您的API價值。

此外,MuleSoft還提供Anypoint Exchange,將您的api與單一事實來源集成在一起,為您的業務提供動力。您可以使用Anypoint API治理將API治理投入運行,而不包含開發開銷。

16. Boomi

當您擁有可以幫助您的企業有效地部署、管理和保護API的Boomi API管理服務時,不要考慮復雜性。

Boomi API管理可以在任何平臺上處理API的完整生命周期。這使您可以輕松地配置api并實現集成。它有一個智能且易于使用的UI,每次使用它的API代理都可以為您的業務提供數據。發布、控制和管理api(無論是在云中、邊緣還是本地),并有效地管理和控制數據訪問。Boomi允許您創建跨社交、物聯網和移動網絡的全渠道體驗。

您可以使用它的API Developer Portal輕松地從現有應用程序訪問數據。

Boomi提供了無窮無盡的特性,例如中介、版本控制、參與、身份驗證、策略管理、監視和應用程序管理。您可以根據需要維護不同版本的API,并確保對其采取正確的操作。

它還允許您部署帶有第三方身份驗證系統的api。

通過與一個簡單的向導Boomi AtmoSphere集成,您可以輕松地設計和管理api。

結論

一旦您的 API 準備就緒,不要忘記對其進行監控和保護。

通過以上介紹,您應該對可用的 API 網關和管理解決方案有所了解。如果預算緊張,可以嘗試開源方案。最好先安裝一些,看看哪種適合你。

更多關于API的信息,請訪問冪簡集成-API HUB

上一篇:

2024年API網關全面指南:性能優化與安全實踐

下一篇:

值得推薦的10+REST API測試工具
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費