.Net微服務(wù)架構(gòu):API網(wǎng)關(guān)

本人建立了個(gè)人技術(shù)、工作經(jīng)驗(yàn)的分享×××號(hào),計(jì)劃后續(xù)公眾號(hào)同步更新分享,比在此更多具體。歡迎有興趣的同學(xué)一起加入相互學(xué)習(xí)。基于上篇微服務(wù)架構(gòu)分享,今天分享其中一個(gè)重要的基礎(chǔ)組件“API網(wǎng)關(guān)”。

一、引言

目前創(chuàng)新互聯(lián)建站已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、馬山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

隨著互聯(lián)網(wǎng)的快速發(fā)展,當(dāng)前以步入移動(dòng)互聯(lián)、物聯(lián)網(wǎng)時(shí)代。用戶訪問系統(tǒng)入口也變得多種方式,由原來單一的PC客戶端,變化到PC客戶端、各種瀏覽器、手機(jī)移動(dòng)端及智能終端等。同時(shí)系統(tǒng)之間大部分都不是單獨(dú)運(yùn)行,經(jīng)常會(huì)涉及與其他系統(tǒng)對(duì)接、共享數(shù)據(jù)的需求。所以系統(tǒng)需要升級(jí)框架滿足日新月異需求變化,支持業(yè)務(wù)發(fā)展,并將框架升級(jí)為微服務(wù)架構(gòu)?!癆PI網(wǎng)關(guān)”核心組件是架構(gòu)用于滿足此些需求。

很多互聯(lián)網(wǎng)平臺(tái)已基于網(wǎng)關(guān)的設(shè)計(jì)思路,構(gòu)建自身平臺(tái)的API網(wǎng)關(guān),國內(nèi)主要有京東、攜程、唯品會(huì)等,國外主要有Netflix、Amazon等。

二、業(yè)界相關(guān)網(wǎng)關(guān)框架

業(yè)界為了滿足這些需求,已有相關(guān)的網(wǎng)關(guān)框架。

1、基于nginx平臺(tái)實(shí)現(xiàn)的網(wǎng)關(guān)有:KONG、API Umbrella

2、自研發(fā)的網(wǎng)關(guān)有:apigee、Zuul

三、API網(wǎng)關(guān)設(shè)計(jì)

API網(wǎng)關(guān)是微服務(wù)架構(gòu)(Microservices Architecture)標(biāo)準(zhǔn)化服務(wù)的模式。API網(wǎng)關(guān)定位為應(yīng)用系統(tǒng)服務(wù)接口的網(wǎng)關(guān),區(qū)別于網(wǎng)絡(luò)技術(shù)的網(wǎng)關(guān),但是原理則是一樣。API網(wǎng)關(guān)統(tǒng)一服務(wù)入口,可方便實(shí)現(xiàn)對(duì)平臺(tái)眾多服務(wù)接口進(jìn)行管控,對(duì)訪問服務(wù)的身份認(rèn)證、防報(bào)文重放與防數(shù)據(jù)篡改、功能調(diào)用的業(yè)務(wù)鑒權(quán)、響應(yīng)數(shù)據(jù)的脫敏、流量與并發(fā)控制,甚至基于API調(diào)用的計(jì)量或者計(jì)費(fèi)等等。組件設(shè)計(jì)如下:

.Net微服務(wù)架構(gòu):API網(wǎng)關(guān)

 圖1- API網(wǎng)關(guān)功能結(jié)構(gòu)示意圖

多種客戶端程序,例如:移動(dòng)APP、PC端和智能終端設(shè)備等??蛻舳顺绦蛲ㄟ^互聯(lián)網(wǎng)或者專網(wǎng)訪問API網(wǎng)關(guān),由API網(wǎng)關(guān)統(tǒng)一接收請(qǐng)求后,通過一系列模塊定位具體處理的微服務(wù)機(jī),并將其轉(zhuǎn)發(fā)至目標(biāo)服務(wù)處理,網(wǎng)關(guān)與微服務(wù)之間通信是內(nèi)部局域網(wǎng)。API網(wǎng)關(guān)統(tǒng)一規(guī)范平臺(tái)對(duì)外的服務(wù),同時(shí)充當(dāng)了平臺(tái)的PaaS層。如上圖所示,API網(wǎng)關(guān)功能結(jié)構(gòu)基于管道模型和支持可插拔式的設(shè)計(jì)開發(fā),提供統(tǒng)一基于http協(xié)議的WebAPI訪問接口,內(nèi)部每個(gè)模塊各自實(shí)現(xiàn)功能,包括:黑白名單、日志、協(xié)議適配、身份認(rèn)證、計(jì)流限流及路由。并且依賴“訪問認(rèn)證中心、服務(wù)發(fā)布管理中心”分別實(shí)現(xiàn)API網(wǎng)關(guān)訪問權(quán)限控制和定位目標(biāo)微服務(wù)。各模塊功能說明如下:

1、黑白名單:實(shí)現(xiàn)通過IP地址控制禁止訪問網(wǎng)關(guān)功能,此功能是應(yīng)用層面控制實(shí)現(xiàn),再往前也可以通過網(wǎng)絡(luò)傳輸方面進(jìn)行控制訪問。

2、日志:實(shí)現(xiàn)訪問日志的記錄,可用于分析訪問、處理性能指標(biāo),同時(shí)將分析結(jié)果支持其他模塊功能應(yīng)用。

3、協(xié)議適配:實(shí)現(xiàn)通信協(xié)議校驗(yàn)、適配轉(zhuǎn)換的功能。

4、身份認(rèn)證:負(fù)責(zé)網(wǎng)關(guān)訪問身份認(rèn)證驗(yàn)證,此模塊與“訪問認(rèn)證中心”通信,實(shí)際認(rèn)證業(yè)務(wù)邏輯交移“訪問認(rèn)證中心”處理。

5、計(jì)流限流:實(shí)現(xiàn)微服務(wù)訪問流量計(jì)算,基于流量計(jì)算分析進(jìn)行限流,可以定義多種限流規(guī)則。

6、路由:路由是API網(wǎng)關(guān)很核心的模塊功能,此模塊實(shí)現(xiàn)根據(jù)請(qǐng)求,鎖定目標(biāo)微服務(wù)并將請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)。此模塊需要與“服務(wù)發(fā)布管理中心”通信?!胺?wù)發(fā)布管理中心”實(shí)現(xiàn)微服務(wù)發(fā)布注冊(cè)管理功能,與其通信獲得目標(biāo)微服務(wù)信息。

四、API網(wǎng)關(guān)部署

API網(wǎng)關(guān)是一個(gè)公共基礎(chǔ)組件,無狀態(tài),可支持多套分布式部署。如下圖所示:
.Net微服務(wù)架構(gòu):API網(wǎng)關(guān)

 圖2- API網(wǎng)關(guān)部署示意圖

五、API網(wǎng)關(guān)實(shí)現(xiàn)技術(shù)

1、技術(shù):框架整體基于.NET平臺(tái)構(gòu)建,所以API網(wǎng)關(guān)也暫定基于.NET4.6平臺(tái)和ASP.NET WebAPI2.0框架實(shí)現(xiàn)。具體軟件架構(gòu)就用上一篇所介紹的。

2、性能:部署于IIS7.0,1000個(gè)并發(fā)查詢請(qǐng)求,平均響應(yīng)90ms。

可能在IIS7.0和.Net4.6平臺(tái),在大并發(fā)性能處理上會(huì)更不上,后續(xù)將考慮基于.net core進(jìn)行升級(jí)開發(fā),并部署于Linux平臺(tái)。

API網(wǎng)關(guān)主要原理是相通,不同平臺(tái)結(jié)合本身平臺(tái)整體框架設(shè)計(jì),可選用不同的技術(shù)實(shí)現(xiàn),目前有些基于Spring MVC、node.js、Erlang技術(shù)進(jìn)行研發(fā)。

六、結(jié)語

以上是對(duì)API網(wǎng)關(guān)概要進(jìn)行設(shè)計(jì),還有其他方面的內(nèi)容此篇文章未討論,例如:安全性、高并發(fā)、擴(kuò)展性等特性設(shè)計(jì),同時(shí)作為平臺(tái)其中一個(gè)組件,也涉及與其他組件一并協(xié)同運(yùn)行。此塊內(nèi)容會(huì)后續(xù)分享。

當(dāng)前題目:.Net微服務(wù)架構(gòu):API網(wǎng)關(guān)
當(dāng)前鏈接:http://muchs.cn/article0/ighgoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)頁設(shè)計(jì)公司、搜索引擎優(yōu)化外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化