api網(wǎng)關(guān)選型 如何架構(gòu)一個(gè)合適的企業(yè)API網(wǎng)關(guān)?
如何架構(gòu)一個(gè)合適的企業(yè)API網(wǎng)關(guān)?企業(yè)API網(wǎng)關(guān)現(xiàn)在越來(lái)越多地被大型企業(yè)所選擇。您可以在nginx系統(tǒng)下了解openresty、openresty edge、Kong。采用Java系統(tǒng)下的Spring
如何架構(gòu)一個(gè)合適的企業(yè)API網(wǎng)關(guān)?
企業(yè)API網(wǎng)關(guān)現(xiàn)在越來(lái)越多地被大型企業(yè)所選擇。您可以在nginx系統(tǒng)下了解openresty、openresty edge、Kong。采用Java系統(tǒng)下的Spring云網(wǎng)關(guān)作為模型選擇。一般來(lái)說(shuō),自學(xué)是沒(méi)有必要的,門檻有點(diǎn)高。
Enterprise API gateway是一個(gè)通用名稱,包括許多功能,如數(shù)據(jù)路由、協(xié)議轉(zhuǎn)換、融合、限流、應(yīng)用防火墻、灰色發(fā)布等。要想自主發(fā)展,首先要明確需求范圍。
作為流量門戶,企業(yè)網(wǎng)關(guān)對(duì)其高可用性有很高的要求。問(wèn)題就像網(wǎng)絡(luò)中斷的影響。設(shè)計(jì)需要與應(yīng)用程序架構(gòu)師討論。
有沒(méi)有開(kāi)源的api管理系統(tǒng)可以推薦的?
為了防止內(nèi)部問(wèn)題暴露給外部客戶端,API網(wǎng)關(guān)將外部公共API與內(nèi)部微服務(wù)API分離,并允許添加微服務(wù)和更改邊界。結(jié)果是,可以重新構(gòu)造微服務(wù)并適當(dāng)調(diào)整其大小,而不會(huì)對(duì)外部綁定的客戶端產(chǎn)生負(fù)面影響。它還通過(guò)為所有微服務(wù)提供單一入口點(diǎn),對(duì)客戶端隱藏服務(wù)發(fā)現(xiàn)和版本控制詳細(xì)信息。
2. 為微服務(wù)添加額外的安全層。API網(wǎng)關(guān)提供了額外的保護(hù)層來(lái)防止惡意攻擊,如SQL注入、XML解析器漏洞和拒絕服務(wù)(DOS)攻擊。
3. 支持混合通信協(xié)議。盡管面向外部的api通常提供基于HTTP或rest的api,但是內(nèi)部微服務(wù)可以從使用不同的通信協(xié)議中獲益。協(xié)議可以包括protobuf或AMQP,或者與soap、json-rpc或XML-rpc的系統(tǒng)集成。API網(wǎng)關(guān)可以提供基于這些不同協(xié)議的外部和統(tǒng)一rest的API,允許團(tuán)隊(duì)選擇最適合內(nèi)部架構(gòu)的API。
4. 如果微服務(wù)有共同的問(wèn)題,如使用API令牌的授權(quán)、訪問(wèn)控制實(shí)現(xiàn)和速率限制,則可以降低微服務(wù)的復(fù)雜性。這些關(guān)注點(diǎn)中的每一個(gè)都可以通過(guò)要求每一項(xiàng)服務(wù)來(lái)實(shí)現(xiàn),但是這增加了微服務(wù)開(kāi)發(fā)的時(shí)間成本。API網(wǎng)關(guān)將從您的代碼中刪除這些問(wèn)題,使您的微服務(wù)能夠?qū)W⒂谑诸^的任務(wù)。
5. 微服務(wù)模擬和虛擬化通過(guò)將微服務(wù)API與外部API分離,您可以模擬或虛擬化服務(wù)以驗(yàn)證設(shè)計(jì)需求或協(xié)助集成測(cè)試。
為什么微服務(wù)需要API網(wǎng)關(guān)?
微服務(wù)架構(gòu)可以理解為一種架構(gòu)風(fēng)格。大型復(fù)雜軟件應(yīng)用程序由一個(gè)或多個(gè)微服務(wù)組成。系統(tǒng)中的每個(gè)微服務(wù)都可以獨(dú)立部署,每個(gè)微服務(wù)是松散耦合的。每個(gè)微服務(wù)只專注于完成一個(gè)任務(wù),并很好地完成它。在所有情況下,每個(gè)任務(wù)都代表一種小型業(yè)務(wù)能力。API網(wǎng)關(guān)負(fù)責(zé)提供一個(gè)統(tǒng)一的API入口點(diǎn),該入口點(diǎn)跨越一個(gè)或多個(gè)內(nèi)部API。它通常還設(shè)置層速率限制和安全機(jī)制。
API網(wǎng)關(guān)可以進(jìn)行協(xié)議適配、安全驗(yàn)證等,減少了微服務(wù)開(kāi)發(fā)的外部適配,更貼近實(shí)際核心業(yè)務(wù)開(kāi)發(fā)。
微服務(wù)架構(gòu)為何需要搭配API網(wǎng)關(guān)?
構(gòu)建企業(yè)網(wǎng)關(guān)與構(gòu)建微服務(wù)網(wǎng)關(guān)的主要區(qū)別在于API網(wǎng)關(guān)往往需要作為一個(gè)統(tǒng)一的網(wǎng)關(guān),即除了接管微服務(wù)網(wǎng)關(guān)的限流和認(rèn)證功能之外,為了達(dá)到瘦身微服務(wù)網(wǎng)關(guān)的效果,它還需要能夠與傳統(tǒng)企業(yè)應(yīng)用服務(wù)的集成平臺(tái)中間件進(jìn)行對(duì)接,如ESB、PI等散亂的API接口對(duì)接會(huì)更多。因此,作為一個(gè)統(tǒng)一的網(wǎng)關(guān),最容易被批評(píng)的問(wèn)題是性能問(wèn)題、并發(fā)問(wèn)題等等。今天,我們將不討論如何確保統(tǒng)一網(wǎng)關(guān)的可靠性和高性能。今天,我們將主要討論API網(wǎng)關(guān)緩存的附加功能,特別是對(duì)于企業(yè)網(wǎng)關(guān)這一重要組件。
首先,API網(wǎng)關(guān)的緩存是為了有效降低真正API提供者的壓力,從而逐步降低API服務(wù)提供者的應(yīng)用容器、應(yīng)用緩存和數(shù)據(jù)庫(kù)的壓力。
其次,API網(wǎng)關(guān)的緩存可以有效減少后臺(tái)API的訪問(wèn)時(shí)間。如果直接從API網(wǎng)關(guān)訪問(wèn)緩存,則不需要請(qǐng)求真正的API提供者,這大大減少了訪問(wèn)時(shí)間。
Figure-1-api gateway cache
基于緩存的統(tǒng)一api網(wǎng)關(guān)的工作步驟:
1。統(tǒng)一網(wǎng)關(guān)通過(guò)加載緩存模塊,根據(jù)請(qǐng)求URL和參數(shù)解析從網(wǎng)關(guān)緩存中查詢
2。如果緩存命中(在緩存有效期內(nèi)),則直接返回統(tǒng)一網(wǎng)關(guān)
3。如果緩存未命中(緩存失敗或未緩存),它將請(qǐng)求真正的API服務(wù)提供程序
4。請(qǐng)求結(jié)果返回到網(wǎng)關(guān)
5。統(tǒng)一網(wǎng)關(guān)將請(qǐng)求結(jié)果緩存到網(wǎng)關(guān)緩存