角度探討-API-設(shè)計(jì).png)
從商業(yè)角度探討 API 設(shè)計(jì)
請(qǐng)看一個(gè)電子商務(wù)應(yīng)用程序復(fù)雜頁(yè)面(例如產(chǎn)品頁(yè)面)的案例研究。如果我們看一下下面的亞馬遜產(chǎn)品列表頁(yè)面,就會(huì)發(fā)現(xiàn)這個(gè)特定頁(yè)面需要呈現(xiàn)大量信息。
為了便于說明,讓我們列出呈現(xiàn)上述特定頁(yè)面可能需要的所有微服務(wù)。
考慮到搜索產(chǎn)品、庫(kù)存、發(fā)貨、評(píng)級(jí)和評(píng)論、推薦引擎、招商以及金融和保險(xiǎn)是用于呈現(xiàn)上述頁(yè)面的七個(gè)(7)不同的微服務(wù)。
附注:以上七個(gè)微服務(wù)只是解釋 API 網(wǎng)關(guān)概念的一個(gè)假設(shè)。實(shí)際上,亞馬遜可能有不同數(shù)量的微服務(wù)。
問題所在:由于這些微服務(wù)已分別部署在不同的服務(wù)器上,如果客戶端想要訪問這些服務(wù),一個(gè)頁(yè)面至少需要七次調(diào)用
但這種方法真的好嗎?我不認(rèn)為這是一種值得推薦的方法,因?yàn)槲覀儽仨氝M(jìn)行七個(gè)不同的調(diào)用,這肯定會(huì)影響性能、資源消耗、加載時(shí)間等??蛻舳艘才c所有服務(wù)緊密耦合,假設(shè)我們必須將 “評(píng)論 “和 “評(píng)級(jí) “微服務(wù)分離到兩個(gè)不同的服務(wù)中,我們就必須更新客戶端代碼??蛻舳吮仨氄{(diào)用一次才能獲得評(píng)論,調(diào)用一次才能獲得評(píng)級(jí),這確實(shí)不是最好的處理方式。
解決方案
那么,建議采用什么方法呢?API 網(wǎng)關(guān),我們?cè)诳蛻舳撕臀⒎?wù)之間有一個(gè)稱為 API 網(wǎng)關(guān)的層。它是所有微服務(wù)的前端服務(wù)。現(xiàn)在任何客戶端想要訪問微服務(wù),客戶端都必須調(diào)用API網(wǎng)關(guān)?,F(xiàn)在,API 網(wǎng)關(guān)反過來調(diào)用所有微服務(wù)并獲取我們可能需要的任何響應(yīng)。這個(gè)過程稱為 API 組合。
簡(jiǎn)而言之,API 網(wǎng)關(guān)位于客戶端和微服務(wù)之間,充當(dāng)所有微服務(wù)的網(wǎng)關(guān)。
不僅如此,使用 API 網(wǎng)關(guān)還能讓我們?cè)诤芏喾矫媸芤妗?/p>
API 網(wǎng)關(guān)有利于我們實(shí)施 A/B 測(cè)試、緩存、管理訪問配額、API 運(yùn)行狀況監(jiān)控、API 版本控制、Chaos monkey testing、貨幣化等等。讓我們來談?wù)勔韵乱恍┖锰帯?/p>
每次執(zhí)行 API 調(diào)用時(shí),都必須使用公共 IP 地址訪問服務(wù)。這暴露了風(fēng)險(xiǎn)。
通過切換到 API 網(wǎng)關(guān),只能使用私有 IP 地址來訪問這些微服務(wù)。這導(dǎo)致數(shù)據(jù)交易的方式更加安全。此外,API網(wǎng)關(guān)的使用還可以保護(hù)數(shù)據(jù)免受惡意和DDoS攻擊。
為了確保安全性,TLS 證書是必要的,API Gateway 通過將我們的所有 API 保留在單個(gè)靜態(tài) IP 或域后面并通過密鑰、令牌和 IP 過濾幫助保護(hù)它們來處理所有這些問題。
確保對(duì)登錄應(yīng)用程序的用戶進(jìn)行身份驗(yàn)證和授權(quán)非常重要。 API 網(wǎng)關(guān)是一個(gè)單一入口,可以輕松滿足所有要求。因此,它只允許授權(quán)用戶登錄,并允許通過身份驗(yàn)證的用戶進(jìn)行更改,從而獲得容錯(cuò)能性。
在出現(xiàn)多個(gè)請(qǐng)求且流量不斷增加的情況下,API Gateway 可以幫助處理。它是通過創(chuàng)建多個(gè)服務(wù)并像Round-Robin一樣調(diào)用它們來完成的。它可以根據(jù)用戶細(xì)分來管理和路由客戶端請(qǐng)求。因此,可為不同用戶提供不同質(zhì)量或速度的內(nèi)容。
考慮這樣一個(gè)用例:定義了兩個(gè)微服務(wù),分別用于為臺(tái)式機(jī)和移動(dòng)設(shè)備返回低質(zhì)量圖像/視頻和高質(zhì)量圖像/視頻
在這種情況下,我們可以配置一個(gè) API 網(wǎng)關(guān),使其充當(dāng)路由器,如果請(qǐng)求來自移動(dòng)設(shè)備,它將把請(qǐng)求路由到低質(zhì)量的圖片/視頻服務(wù),如果請(qǐng)求是來自臺(tái)式機(jī),它可以路由到高質(zhì)量的圖像/視頻服務(wù)。該路由可以基于標(biāo)頭、路徑和參數(shù)等來完成。
如果應(yīng)用程序中添加或刪除了一個(gè)或多個(gè)微服務(wù),我們將不會(huì)更新客戶端代碼。在這種情況下,我們需要對(duì)API網(wǎng)關(guān)本身進(jìn)行一些更改,以根據(jù)更新的微服務(wù)進(jìn)行調(diào)用。
通過微服務(wù)提供靜態(tài)文件(HTML、JS、CSS、字體)并不是最佳用途,在這種情況下,我們可以將這些文件移動(dòng)到 API 網(wǎng)關(guān)。
API網(wǎng)關(guān)可以保存所有靜態(tài)內(nèi)容,直接為客戶端服務(wù)。同樣,考慮評(píng)估趨勢(shì)產(chǎn)品的服務(wù),這些趨勢(shì)是每小時(shí)或每天計(jì)算的。因此,一旦計(jì)算出其余時(shí)間的趨勢(shì),服務(wù)將重復(fù)返回相同的響應(yīng)。在這種情況下,API 網(wǎng)關(guān)具有稱為響應(yīng)緩存的功能,我們可以在其中提及需要緩存響應(yīng)的 URL 和閾值時(shí)間。
如果我們想利用像 Web 套接字或較新版本的 HTTP(即 HTTP/2)這樣的協(xié)議,即使我們的后端服務(wù)尚未準(zhǔn)備好或與 HTTP/2 或 Web 套接字不兼容,API 網(wǎng)關(guān)也可以采用將新協(xié)議轉(zhuǎn)換為舊協(xié)議的責(zé)任。它可以充當(dāng)協(xié)議適配器。
Kong Gateway是建立在輕量級(jí)代理之上的最流行的開源云原生API網(wǎng)關(guān)。它是在Nginx的幫助下用Lua編寫的。它是一個(gè)有助于加速事件時(shí)間的模板引擎。Kong保證為我們所有的微服務(wù)應(yīng)用提供無(wú)與倫比的延遲性能和可擴(kuò)展性,無(wú)論它們運(yùn)行在哪里。納斯達(dá)克、霍尼韋爾、思科、FAB、Expedia、三星、西門子和雅虎日本等公司廣泛使用Kong API網(wǎng)關(guān)。
Kong提供的一些功能包括:
Kong擁有出色的文檔和集成
Apache APISIX最初誕生于中國(guó)的知流科技,后期進(jìn)入Apache孵化器并開源。該項(xiàng)目副總裁Ming Wen表示,這個(gè)API網(wǎng)關(guān)解決了云原生和微服務(wù)帶來的各種挑戰(zhàn)。Apache ApiSix被360、HelloTalk、網(wǎng)易、TravelSky等公司所使用。
Apache APISIX基于Nginx和etcd,具有動(dòng)態(tài)路由和插件熱加載功能,特別適合微服務(wù)系統(tǒng)下的API管理。
Tyk是一個(gè)企業(yè)級(jí)的開源API網(wǎng)關(guān)。您可以選擇使用自托管或托管。
以下是TYK提供的一些開箱即用的特性:
TYK也可以在AWS市場(chǎng)上使用。如果您的應(yīng)用程序堆棧在AWS上,這是一個(gè)不錯(cuò)的選擇。
Ocelot是一個(gè).net API網(wǎng)關(guān).該項(xiàng)目旨在使用.net運(yùn)行微服務(wù)或面向服務(wù)的體系結(jié)構(gòu),這些體系結(jié)構(gòu)需要一個(gè)統(tǒng)一的系統(tǒng)入口點(diǎn)。但是,它可以與任何使用HTTP的東西一起工作,并在ASP支持的任何平臺(tái)上運(yùn)行.NET核心支持。
Ocelot以特定的順序充當(dāng)中間件。它操縱HttpRequest對(duì)象進(jìn)入其配置指定的狀態(tài),直到它到達(dá)請(qǐng)求構(gòu)建器中間件。它創(chuàng)建一個(gè)HttpRequestMessage對(duì)象,用于請(qǐng)求下游服務(wù)。發(fā)出請(qǐng)求的中間件是Ocelot管道中的最后一件事。它不調(diào)用下一個(gè)中間件。中間件部分將HttpResponseMessage映射到HttpResponse對(duì)象,并返回給客戶端。
Ocelot提供了諸如路由、身份驗(yàn)證、速率限制、緩存、負(fù)載平衡等標(biāo)準(zhǔn)特性。它不支持分塊編碼、轉(zhuǎn)發(fā)主機(jī)報(bào)頭和Swagger。
悟空API網(wǎng)關(guān)是EOLINK公司的一個(gè)傘形項(xiàng)目。它是一個(gè)基于golang的微服務(wù)網(wǎng)關(guān),支持高性能動(dòng)態(tài)路由、服務(wù)編排、多租戶管理、API訪問控制等功能。悟空提供了一個(gè)圖形界面和一個(gè)插件系統(tǒng),使配置更容易,擴(kuò)展更方便。除了標(biāo)準(zhǔn)特性,Goku還提供集群、熱更新、警報(bào)、日志記錄等功能。
Express Gateway是基于Express.js構(gòu)建的。Express Gateway是一組圍繞Express聲明式構(gòu)建的組件,以滿足API Gateway用例。Express Gateway的強(qiáng)大功能利用了圍繞Express中間件的豐富生態(tài)系統(tǒng)。像Joyent、The Linux Foundation、VIRICITI、Switch Media、Coozy和Musement等公司都在廣泛使用Express網(wǎng)關(guān)。它簡(jiǎn)單、快速,并提供所有基本功能。
Gloo是面向云原生環(huán)境的下一代全功能API網(wǎng)關(guān)和入口控制器。它建立在Envoy Proxy上,用于連接、保護(hù)和控制跨應(yīng)用程序服務(wù)的流量。Gloo支持連接到廣泛的工作負(fù)載,以保護(hù)和管理這些工作負(fù)載,并且它在功能級(jí)路由方面非常出色。它可以作為開源和企業(yè)使用。企業(yè)版提供以下功能:
KrakenD是一個(gè)超高性能的開源API網(wǎng)關(guān)。它的核心功能是創(chuàng)建一個(gè)API,將許多微服務(wù)聚合到單個(gè)端點(diǎn),為您自動(dòng)完成繁重的工作:聚合、轉(zhuǎn)換、過濾、解碼、節(jié)流、驗(yàn)證等等。它提供了一種創(chuàng)建端點(diǎn)的聲明性方法。它具有良好的結(jié)構(gòu)和分層,并且可以使用社區(qū)或內(nèi)部開發(fā)的即插即用中間件擴(kuò)展其功能。KrakenD聲稱比Kong和Tyk都快。
Fusion是一個(gè)API管理系統(tǒng),因?yàn)樗鼛椭_發(fā)實(shí)際的API端點(diǎn)(即,從數(shù)據(jù)庫(kù)請(qǐng)求和轉(zhuǎn)換數(shù)據(jù))。它并不局限于對(duì)另一個(gè)API的代理請(qǐng)求。它提供了一個(gè)簡(jiǎn)單直觀的后端來控制和管理API。Fusion提供的一些功能包括:
WSO2是一個(gè)完整的生命周期API管理解決方案,可以在任何地方運(yùn)行。它可以部署在本地、云上,或者以混合方式部署,其中其組件可以跨多個(gè)云和本地基礎(chǔ)設(shè)施進(jìn)行分布和部署。包含一個(gè)云原生API網(wǎng)關(guān),并提供一個(gè)Kubernetes操作符,可以輕松地將原始微服務(wù)轉(zhuǎn)換為托管API。API Manager集成了服務(wù)網(wǎng)格,提供了一個(gè)完整的管理平面和控制平面,用于管理、監(jiān)控和貨幣化API和API產(chǎn)品。它在一個(gè)清晰集成的系統(tǒng)中支持API發(fā)布、生命周期管理、應(yīng)用程序開發(fā)、訪問控制、速率限制和分析。
Apigee是Google Cloud的一個(gè)跨云API管理平臺(tái)。
它有以下幾種特性:
Endpoint是Google Cloud的輕量級(jí)Apigee版本。它最適合開發(fā)人員在任何Google Cloud后端上開發(fā)、部署和管理api。它從App Engine應(yīng)用程序?yàn)槠淇蛻舳颂峁┕ぞ吆蛶?kù)。谷歌云端點(diǎn)與其他產(chǎn)品緊密集成,如用于監(jiān)控的Trace和Logging,用于身份驗(yàn)證的Auth0和Firebase,用于自動(dòng)部署的GKE和App Engine等。
AWS可以提供運(yùn)行應(yīng)用程序所需的任何東西。API也是如此,Amazon API Gateway(亞馬遜API網(wǎng)關(guān))是一種完全托管的服務(wù),可以讓開發(fā)人員輕松地在任何規(guī)模下形成->發(fā)布->維護(hù)和保護(hù)API。它同時(shí)支持RESTful和WebSocket api,并允許我們啟用實(shí)時(shí)雙向通信??梢酝ㄟ^了解AWS云存儲(chǔ)網(wǎng)關(guān),看看網(wǎng)關(guān)是如何工作的。
如果您的微服務(wù)或API已經(jīng)托管在AWS上,那么與Amazon API Gateway集成是有意義的。他們?cè)诿赓M(fèi)層下提供了100萬(wàn)個(gè)API調(diào)用,這對(duì)你了解它是如何工作的很有好處。
Microsoft Azure在云中、本地或混合中提供端到端API管理。您可以通過REST API和SDK以編程方式管理API。如果您使用SOAP,可以導(dǎo)入其SOAP服務(wù)的web服務(wù)描述語(yǔ)言(WSDL), Azure將創(chuàng)建SOAP前端。它們提供所有標(biāo)準(zhǔn)功能,包括盈利。
使用MuleSoft管理API并提高業(yè)務(wù)效率。它允許您在任何地方創(chuàng)建、保護(hù)、管理和治理通用api。您可以使用CI/CD管道和新的CLI來發(fā)現(xiàn)api,從而加速應(yīng)用程序的交付。MuleSoft允許您使用不同的協(xié)議設(shè)計(jì)api,同時(shí)遵守治理標(biāo)準(zhǔn)并保持高質(zhì)量。從api收集數(shù)據(jù)以探索、提供服務(wù)并將所有數(shù)據(jù)統(tǒng)一到GraphQL查詢中。這可以在DataGraph的幫助下完成。
使用MuleSoft靈活的網(wǎng)關(guān),您可以管理您的服務(wù),而無(wú)需擔(dān)心大小,云或語(yǔ)言。MuleSoft提供了一個(gè)控制面板,您可以在其中分析、管理和保護(hù)您的api、微服務(wù)和用戶。發(fā)展最新的業(yè)務(wù)模式和收入流,通過關(guān)注采用、API社區(qū)和消費(fèi)過程來最大化您的API價(jià)值。
此外,MuleSoft還提供Anypoint Exchange,將您的api與單一事實(shí)來源集成在一起,為您的業(yè)務(wù)提供動(dòng)力。您可以使用Anypoint API治理將API治理投入運(yùn)行,而不包含開發(fā)開銷。
當(dāng)您擁有可以幫助您的企業(yè)有效地部署、管理和保護(hù)API的Boomi API管理服務(wù)時(shí),不要考慮復(fù)雜性。
Boomi API管理可以在任何平臺(tái)上處理API的完整生命周期。這使您可以輕松地配置api并實(shí)現(xiàn)集成。它有一個(gè)智能且易于使用的UI,每次使用它的API代理都可以為您的業(yè)務(wù)提供數(shù)據(jù)。發(fā)布、控制和管理api(無(wú)論是在云中、邊緣還是本地),并有效地管理和控制數(shù)據(jù)訪問。Boomi允許您創(chuàng)建跨社交、物聯(lián)網(wǎng)和移動(dòng)網(wǎng)絡(luò)的全渠道體驗(yàn)。
您可以使用它的API Developer Portal輕松地從現(xiàn)有應(yīng)用程序訪問數(shù)據(jù)。
Boomi提供了無(wú)窮無(wú)盡的特性,例如中介、版本控制、參與、身份驗(yàn)證、策略管理、監(jiān)視和應(yīng)用程序管理。您可以根據(jù)需要維護(hù)不同版本的API,并確保對(duì)其采取正確的操作。
它還允許您部署帶有第三方身份驗(yàn)證系統(tǒng)的api。
通過與一個(gè)簡(jiǎn)單的向?qū)oomi AtmoSphere集成,您可以輕松地設(shè)計(jì)和管理api。
一旦您的 API 準(zhǔn)備就緒,不要忘記對(duì)其進(jìn)行監(jiān)控和保護(hù)。
通過以上介紹,您應(yīng)該對(duì)可用的 API 網(wǎng)關(guān)和管理解決方案有所了解。如果預(yù)算緊張,可以嘗試開源方案。最好先安裝一些,看看哪種適合你。
從商業(yè)角度探討 API 設(shè)計(jì)
使用 API 創(chuàng)建簡(jiǎn)單的 SaaS 工具每天賺取利潤(rùn)
為什么應(yīng)該從靜態(tài) API 令牌遷移到 OAuth 2.0
2024年API網(wǎng)關(guān)全面指南:性能優(yōu)化與安全實(shí)踐
2024年8個(gè)頂級(jí)人工智能api集成平臺(tái)
基于 API 的 SaaS:定義、優(yōu)勢(shì)和挑戰(zhàn)
精選知識(shí)百科API合輯
如何選擇Python REST API 框架?
借助AI營(yíng)銷類API,為產(chǎn)品開發(fā)和市場(chǎng)定位提供有力支持
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)