發(fā)布時(shí)間:2023-10-26作者來(lái)源:優(yōu)智互聯(lián)瀏覽:841
基于API網(wǎng)關(guān)
API網(wǎng)關(guān)是什么?
API網(wǎng)關(guān)是一個(gè)服務(wù)器,是系統(tǒng)的唯一入口。從面向?qū)ο笤O(shè)計(jì)的角度來(lái)看,它類似于外觀模式。
API網(wǎng)關(guān)包裝了系統(tǒng)的內(nèi)部架構(gòu),為每個(gè)客戶端提供定制的API。它還可能有其他責(zé)任,如身份驗(yàn)證、監(jiān)控、負(fù)載平衡、緩存、協(xié)議轉(zhuǎn)換、電流限制斷路器和靜態(tài)響應(yīng)處理。
API網(wǎng)關(guān)模式的核心點(diǎn)是,所有客戶端和消費(fèi)者都通過(guò)統(tǒng)一的網(wǎng)關(guān)訪問(wèn)微服務(wù),并在網(wǎng)關(guān)層處理所有非業(yè)務(wù)功能。通常,網(wǎng)關(guān)還提供REST/HTTP訪問(wèn)API。
網(wǎng)關(guān)的主要功能
作為微服務(wù)后端服務(wù)的統(tǒng)一入口,微服務(wù)網(wǎng)關(guān)可以對(duì)后端服務(wù)進(jìn)行統(tǒng)籌管理,主要分為數(shù)據(jù)平面和控制平面:
數(shù)據(jù)平面的主要功能是分離后訪問(wèn)用戶的HTTP請(qǐng)求和微服務(wù)的聚合。路由和過(guò)濾功能是網(wǎng)關(guān)的核心能力模塊,使用微服務(wù)網(wǎng)關(guān)統(tǒng)一暴露后端服務(wù)的API和合同。此外,微服務(wù)網(wǎng)關(guān)還可以實(shí)現(xiàn)協(xié)議轉(zhuǎn)換、安全認(rèn)證、熔斷限流、灰度發(fā)布、日志管理、流量監(jiān)控等攔截機(jī)制和跨橫截面功能。網(wǎng)關(guān)模塊方案
控制平面的主要功能是對(duì)后端服務(wù)進(jìn)行統(tǒng)一的控制和配置管理。例如,可以控制網(wǎng)關(guān)的靈活性和可伸縮性;配置可以統(tǒng)一分發(fā);可以為網(wǎng)關(guān)服務(wù)添加標(biāo)簽;后端服務(wù)的API合同可以通過(guò)在微服務(wù)網(wǎng)關(guān)上配置swagger功能向用戶公開(kāi),完成文檔服務(wù),提高工作效率,降低溝通成本。
路由功能:路由是微服務(wù)網(wǎng)關(guān)的核心能力。請(qǐng)求可以通過(guò)路由功能微服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)給目標(biāo)微服務(wù)。在微服務(wù)架構(gòu)中,網(wǎng)關(guān)可以結(jié)合注冊(cè)中心的動(dòng)態(tài)服務(wù)發(fā)現(xiàn),實(shí)現(xiàn)后端服務(wù)的發(fā)現(xiàn)。調(diào)用方可以通過(guò)了解網(wǎng)關(guān)外部暴露的服務(wù)API,透明地訪問(wèn)后端微服務(wù)。
負(fù)載平衡:API網(wǎng)關(guān)結(jié)合負(fù)載平衡技術(shù),通過(guò)輪詢、指定權(quán)重、IP地址哈希等機(jī)制,利用Eureka或Consul等服務(wù)發(fā)現(xiàn)工具,實(shí)現(xiàn)下游服務(wù)的負(fù)載平衡。
統(tǒng)一權(quán)利評(píng)估:一般來(lái)說(shuō),內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)的界面都需要用戶身份認(rèn)證,用戶身份認(rèn)證將在一些大型系統(tǒng)中使用統(tǒng)一的單點(diǎn)登錄(SingleSignOn)系統(tǒng),如果每個(gè)微服務(wù)都與單點(diǎn)登錄系統(tǒng)連接,顯然是浪費(fèi)資源,開(kāi)發(fā)效率低下。API網(wǎng)關(guān)是統(tǒng)一安全管理的絕佳場(chǎng)所。認(rèn)證部分可以提取到網(wǎng)關(guān)層。微服務(wù)系統(tǒng)不需要注意認(rèn)證的邏輯,只需要注意自己的業(yè)務(wù)。
協(xié)議轉(zhuǎn)換:API網(wǎng)關(guān)的一個(gè)主要功能是構(gòu)建異構(gòu)系統(tǒng)。API網(wǎng)關(guān)作為一個(gè)單一的入口,基于REST的協(xié)議轉(zhuǎn)換集成背景、AMQP、不同風(fēng)格和實(shí)現(xiàn)技術(shù)的微服務(wù),如Dubbo,面向WebMobile。、為特定客戶端提供統(tǒng)一服務(wù),如開(kāi)放平臺(tái)。
指標(biāo)監(jiān)控:網(wǎng)關(guān)可以計(jì)算后端服務(wù)的請(qǐng)求數(shù)量,實(shí)時(shí)更新當(dāng)前的流量健康狀態(tài),延遲統(tǒng)計(jì)URL粒度服務(wù),或使用HystrixDashboard查看后端服務(wù)的流量狀態(tài)以及是否存在斷路器。
限流熔斷器:在某些情況下,需要控制客戶端的訪問(wèn)次數(shù)和頻率,一些高并發(fā)系統(tǒng)有時(shí)需要限制流量??梢栽诰W(wǎng)關(guān)上設(shè)置閾值。當(dāng)請(qǐng)求數(shù)量超過(guò)閾值時(shí),您可以直接返回錯(cuò)誤,而無(wú)需繼續(xù)訪問(wèn)后臺(tái)服務(wù)。當(dāng)流量高峰或后端服務(wù)延遲或故障時(shí),網(wǎng)關(guān)可以主動(dòng)熔斷,保護(hù)后端服務(wù),保持前端用戶體驗(yàn)良好。
黑白列表:微服務(wù)網(wǎng)關(guān)可以使用系統(tǒng)黑名單過(guò)濾HTTP請(qǐng)求特征,攔截DDOS攻擊等侵蝕帶寬或資源迫使服務(wù)中斷等異??蛻舳苏?qǐng)求,并在網(wǎng)關(guān)層面進(jìn)行攔截過(guò)濾。更常見(jiàn)的攔截策略是根據(jù)IP地址添加黑名單。在權(quán)利評(píng)估管理的路由服務(wù)中,后端服務(wù)資源可以通過(guò)設(shè)置白名單跳過(guò)權(quán)利評(píng)估管理直接訪問(wèn)。
灰度發(fā)布:微服務(wù)網(wǎng)關(guān)可以根據(jù)HTTP請(qǐng)求中的特殊標(biāo)記和后端服務(wù)列表元數(shù)據(jù)標(biāo)記進(jìn)行流量控制,實(shí)現(xiàn)灰度發(fā)布在用戶無(wú)感知的情況下完成。
流量染色:類似于灰度發(fā)布的原理,網(wǎng)關(guān)可以根據(jù)HTTP要求的Host、Head、Agent和其他標(biāo)志染色請(qǐng)求。通過(guò)網(wǎng)關(guān)的流量染色功能,我們可以跟蹤后續(xù)服務(wù)調(diào)用鏈接,并進(jìn)一步分析服務(wù)延遲和服務(wù)運(yùn)行狀態(tài)。
文檔中心:網(wǎng)關(guān)與swagger相結(jié)合,可以向網(wǎng)關(guān)暴露后端微服務(wù)。網(wǎng)關(guān)作為一個(gè)統(tǒng)一的入口,為接口用戶提供API規(guī)范,以查看后端服務(wù)。無(wú)需知道每個(gè)后端微服務(wù)的swagger地址,因此網(wǎng)關(guān)可以聚合后端API。
日志審計(jì):微服務(wù)網(wǎng)關(guān)可以作為統(tǒng)一的日志記錄和收集器,攔截服務(wù)URL粒度的日志請(qǐng)求信息和響應(yīng)信息。