普元EOS8網(wǎng)關設計及應用-創(chuàng)新互聯(lián)

普元EOS 8網(wǎng)關設計及應用

成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站設計、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元望謨做網(wǎng)站,已為上家服務,為望謨各地企業(yè)和個人服務,聯(lián)系電話:028-86922220

轉載本文需注明出處:微信公眾號EAWorld,違者必究。

引言:

普元EOS 8 API Gateway作為一個獨立模塊,可以對API進行創(chuàng)建、發(fā)布、維護、監(jiān)控等全生命周期管理。

目錄:

一、為什么引入EOS8網(wǎng)關

二、EOS 8網(wǎng)關的技術框架

三、API接入和監(jiān)控示例

一、為什么引入EOS8網(wǎng)關

普元EOS 8網(wǎng)關設計及應用

隨著微服務的熱度不斷上升,線上商業(yè)的發(fā)展和人們需求的擴增,企業(yè)中業(yè)務服務種類眾多,數(shù)量巨大,對如此規(guī)模的服務做升級、管理和維護,時間和資源成本的開銷不言而喻。API Gateway的價值隨之彰顯出來。與此同時對API Gateway的選擇也尤為重要。

統(tǒng)一的API管理、高并發(fā)請求全周期異步化、靈活的API適配是EOS 8 API Gateway的優(yōu)勢。

API Gateway 在各個模塊間如何運作?

普元EOS 8網(wǎng)關設計及應用

上圖展示了EOS 8 API Gateway模塊間的進程視圖,方便我們理解整個業(yè)務執(zhí)行過程。

首先,需要將網(wǎng)關和后端應用注冊到Eureka(如果后端服務不是微服務,可以忽略這一步)。

然后,在governor界面創(chuàng)建需要發(fā)布的API,并配置相應的ip認證和流控配置,這些操作都會同步到Gateway Server的緩存。

最后,服務消費者系統(tǒng)需要在Governor訂閱API,獲得網(wǎng)關頒發(fā)給調用方的token憑證(后面的版本會加入IAM授權),消費方系統(tǒng)拿到token憑證訪問已發(fā)布的API,Gateway Server從Redis讀取緩存進行ip和流控校驗,從自身緩存中讀取token信息(后面版本鑒權由IAM完成)、API配置進行請求和API適配,各個EventHeadler都完成后,由Ribbon路由到Eureka注冊的應用(如果后端服務沒有注冊到Eureka,由異步的NioClient接出)。

二、EOS 8網(wǎng)關的技術框架

EOS8 網(wǎng)關部署拓撲架構

普元EOS 8網(wǎng)關設計及應用

EOS 8 API Gateway 有兩種部署模式。

  1. EOS 8 API Gateway可以不依賴微服務架構中的注冊中心、配置中心進行單獨部署。整個生命周期中API鑒權、ip認證、流控、配置管理,協(xié)議數(shù)據(jù)轉換和調用日志監(jiān)控等功能依然具備。但是依賴注冊中心的服務路由、配置中心的統(tǒng)一配置API、監(jiān)控/日志中心的后端服務監(jiān)控等功能會缺失。

  2. EOS 8 API Gateway 作為微服務治理的重要成員,可依賴注冊中心、配置中心和監(jiān)控/日志中心做微服務治理。

    a、將API Gateway、后端應用注冊到注冊中心。當配置需要管理的API時,可選擇注冊中心的應用,亦可手動輸入后端服務地址。

    b、在配置中心可以對網(wǎng)關API進行統(tǒng)一配置,譬如:統(tǒng)一配置請求頭響應頭、統(tǒng)一請求參數(shù)響應參數(shù)等。

    c、監(jiān)控/日志中心可以監(jiān)控注冊到注冊中心的后端服務調用和資源使用情況。

管理門戶(Governor)是EOS 8微服務架構中服務治理和資產管理的門戶,由管理員頁面操作,進行API配置發(fā)布、API分組管理、黑白名單配置、流控配置、系統(tǒng)/應用注冊、統(tǒng)一配置等操作,不過上述的功能的接口都有詳細的swagger文檔,可以根據(jù)需求自行擴展。

API_Gateway_Monitor是網(wǎng)關自帶的日志解析組件。網(wǎng)關現(xiàn)支持Mysql、Oracle、PG數(shù)據(jù)庫,Redis存放流控數(shù)據(jù)。

EOS8 網(wǎng)關部署拓撲架構主要技術

普元EOS 8網(wǎng)關設計及應用

注冊中心使用Spring Cloud Eureka,配置中心使用Ctrip Apollo。

網(wǎng)關主要的技術框架:

  1. 網(wǎng)關使用了Oauth3鑒權技術(后續(xù)配合IAM做權限校驗)。

  2. 在java8、Spring4的大環(huán)境下,Spring Boot加大了開發(fā)效率。

  3. 嵌入了Jetty容器讓網(wǎng)關更輕,讓系統(tǒng)性能維持在一個可接受狀態(tài)。

  4. 使用了基于傳輸層的Netty框架,提供異步的、事件驅動的網(wǎng)絡應用程序框架,為我們核心框架分階段消息異步處理架構奠定基礎。

分階段消息異步處理

普元EOS 8網(wǎng)關設計及應用

可以將一次請求Api Gateway,并從API Gateway獲得響應視為整個流程。

  1. 邏輯分段。將整個流程劃分成:請求接入/響應接出、代理服務處理、業(yè)務服務處理、請求接出/響應接入四個業(yè)務Stage。

  2. 段之間基于隊列/消息通信。每個業(yè)務Stage都有自己獨立的業(yè)務處理Event Handler、Event Queue和線程池,每個階段之間沒有任何依賴,當前的Stage事件處理完成,封裝到Message中,然后派發(fā)到其他Stage的Event Queue,直到整個Stage處理完成有Nio Client或者Ribbon Client接出。當Event queue吸納過量的負載,有限的線程池維持并發(fā)。

  3. Stage控制器負責資源的分配和調度,控制派發(fā)給Event Handler的事件的數(shù)量和順序,Event Handler可能在內部丟棄、過濾、重排序事件。

分階段消息異步處理架構實現(xiàn)了EOS 8網(wǎng)關高并發(fā)請求全周期異步化。

API Gateway 提供了統(tǒng)一的API管理

普元EOS 8網(wǎng)關設計及應用

EOS 8 API Gateway從功能層面提供了統(tǒng)一的API管理。

首先,具有多協(xié)議接入和接出,例如HTTP協(xié)議、REST協(xié)議、WS協(xié)議等,發(fā)布出來的API可供企業(yè)內部系統(tǒng)、第三方應用系統(tǒng)和前端研發(fā)人員調用。

其次,在服務接入層,實現(xiàn)了權限認證、IP認證和用戶名密碼認證,再加上可靠的流控機制保障了通過網(wǎng)關的傳輸安全。

最后,Api Gateway Server服務引擎有以下幾個內容:

  1. Api Gateway Server內部實現(xiàn)了協(xié)議擴展和消息轉換,根據(jù)需求在Governor管理頁面進行配置。

  2. Server端的接出由Ribbon Client實現(xiàn),可根據(jù)Eureka注冊的應用進行路由。

  3. 流控數(shù)據(jù)皆保存在Redis中,在有限的JVM資源下優(yōu)先保障傳輸效率。

  4. server附帶的普元自主研發(fā)的API Gateway Monitor,可以輕松解析千萬級并發(fā)調用的日志文件,為governor呈現(xiàn)有效的API的調用詳情和調用趨勢。

  5. API Gateway可使用F5或者Nginx進行橫向擴展,應對更大調用需求。

  6. 斷路器機制可以有效的保護JVM主線程,為傳輸安全提供保障。

豐富的服務引擎使API管理更加完善。

三、API接入和監(jiān)控示例

如何使用EOS 8網(wǎng)關?用EOS 8網(wǎng)關如何注冊和發(fā)布一個API?服務消費者系統(tǒng)又如何根據(jù)token調用已發(fā)布的網(wǎng)關?

API注冊

創(chuàng)建后端應用

普元EOS 8網(wǎng)關設計及應用

如果需要API Gateway動態(tài)路由到后端應用,需要將該應用服務注冊到Eureka,然后在Governor注冊。為API注冊選擇后端服務時做好準備。

創(chuàng)建API第一步(配置基本信息)

普元EOS 8網(wǎng)關設計及應用

創(chuàng)建API第一步配置基本信息,對需要注冊的API進行定義分組、協(xié)議、名稱的配置。

創(chuàng)建API第二步(配置API接入【協(xié)議/數(shù)據(jù)轉換】)

普元EOS 8網(wǎng)關設計及應用

創(chuàng)建API第二步,配置API接入,當外部系統(tǒng)調用網(wǎng)關發(fā)布的API時涉及到的配置。

一共有四個基本配置:

  1. “請求Path”是API的URI。

  2. “HTTP Method”是http請求的方法。

  3. “入?yún)⒛J健狈謨煞N:穿透和轉換,穿透與轉換的區(qū)別是前者網(wǎng)關在服務調用生命周期只做代理轉發(fā),后者可以對請求報文進行適配和轉換。

  4. “報文類型”請求報文的數(shù)據(jù)類型,默認有:JSON、XML、FORM表單,如有其他需求,可在數(shù)據(jù)字典擴展。

本次示例是http穿透,路徑參數(shù) ”num1“加入了參數(shù)列表,參數(shù)列表中定義過的參數(shù)皆可在后端服務的Path、Header、Body中使用。

在系統(tǒng)對接過程,常見的API適配有json轉json、xml轉json、json轉xml。

在EOS8 API Gateway中,無論請求方的報文是什么格式的,只要能在請求的Path、Header或者Body中提取出后端服務請求所需的報文數(shù)據(jù),便可重構后端服務請求報文。

如圖所示,在入?yún)⒍x中,當提取HTTP報文體,”參數(shù)路徑“是根據(jù)報文類型而選擇,當請求報文是JSON格式,用“$.*”JSONPath提取參數(shù),當報文是XML格式,就用“/*/*”XPath提取參數(shù)。

將請求報文的關鍵數(shù)據(jù)都提取出來保存到參數(shù)列表中,待后端服務配置使用。

創(chuàng)建API第三步(配置API后端服務)

普元EOS 8網(wǎng)關設計及應用

創(chuàng)建API第三步,配置API后端服務。

一共有6個基本配置:

  1. “后端協(xié)議”是請求后端服務的網(wǎng)絡協(xié)議(HTTPS協(xié)議將在下個版本加入)。

  2. “服務地址”是后端服務的地址,如果部署架構中將網(wǎng)關獨立部署,這里可以選擇“手動輸入”配置后端服務,如果部署EOS8微服務架構,可選擇“應用”進行動態(tài)路由。

  3. “HTTP Method”是請求后端服務的方法。

  4. “超時時間”是后端服務響應的熔斷時間。

  5. “后端請求Path”是后端服務請求的URI。

  6. “報文類型”是請求后端服務的請求報文類型。

后端服務參數(shù)中,可根據(jù)參數(shù)位置配置參數(shù)路徑,如:在“后端請求Path””/json/library/book/{library}”路徑中,library可作為參數(shù)路徑變量,在參數(shù)列表中找到對應的參數(shù)進行賦值。

對于后端服務報文的重構,根據(jù)已知的后端服務請求報文格式,使用了VTL語言重構,使用參數(shù)列表中的參數(shù)對重構報文的value進行賦值。VTL重構的報文示例:

{
"id":"$ReqBody_Did.asText()",
"name":"$ReqBody_Dname.asText()",
"isbn":"$ReqBody_Disbn.asText()",
"author":"$ReqBody_Dauthor.asText()",
"price":$ReqBody_Dprice.asText()
}

關于VTL腳本語言更多介紹請參考(http://t.cn/EGsgPrP)

創(chuàng)建API第四步(響應結果配置)

普元EOS 8網(wǎng)關設計及應用

創(chuàng)建API第四步,響應結果配置。

  • “返回ContentType”配置后端服務響應的報文類型。

  • “錯誤碼定義”可以自定義后端服務非正常響應。

到這里,一個完整的實現(xiàn)了報文轉換的API注冊成功,接下來介紹剛注冊好的API如何添加策略配置。

API策略配置

ip配置

普元EOS 8網(wǎng)關設計及應用

首先創(chuàng)建黑白名單策略,“控制類型”可選擇黑名單或者白名單,“IP列表”可用正則表達式定義,然后在剛剛創(chuàng)建好的白名單策略上綁定API,綁定成功則白名單策略生效。

調用數(shù)配置

普元EOS 8網(wǎng)關設計及應用

首先創(chuàng)建調用數(shù)控制策略,配置單位時間內的API被調用次數(shù)和單位時間內調用方的調用次數(shù),然后在剛剛創(chuàng)建好的調用數(shù)策略上綁定API,綁定成功則調用數(shù)策略生效。

接下來開始介紹如何調用API。

調用API

API發(fā)布

普元EOS 8網(wǎng)關設計及應用

API處于“已發(fā)布”狀態(tài)才能被調用。

創(chuàng)建調用方系統(tǒng)

普元EOS 8網(wǎng)關設計及應用

首先創(chuàng)建調用方系統(tǒng)。

調用方系統(tǒng)訂閱API

普元EOS 8網(wǎng)關設計及應用

然后調用方系統(tǒng)訂閱API。

獲取網(wǎng)關頒發(fā)給調用方系統(tǒng)的憑證token

普元EOS 8網(wǎng)關設計及應用

訂閱完成后,網(wǎng)關會頒發(fā)一個令牌,調用系統(tǒng)想要調用剛才訂閱的API需要傳這個令牌做認證。

調用系統(tǒng)調用訂閱后的API

普元EOS 8網(wǎng)關設計及應用

請求已發(fā)布的API,將剛剛獲取的令牌放入“access_token”請求頭中,在IP策略和調用數(shù)策略允許范圍內,調用成功。

多調用幾次后,監(jiān)控調用詳情。

API調用監(jiān)控

普元EOS 8網(wǎng)關設計及應用

剛才調用后,API Gateway Server會產生日志文件,API_Gateway_Monitor自動解析完日志后會產生監(jiān)控數(shù)據(jù),如上圖展示。

總結:


EOS 8 API Gateway有以上諸多優(yōu)點,更為關鍵的是,兩種部署模式能夠滿足廣大用戶的不同需求。其消息異步處理機制和統(tǒng)一API管理等功能,必將吸引廣泛的用戶體驗并得到他們的青睞。而豐富的服務引擎也將會使API管理更加完善,給用戶以最優(yōu)的開發(fā)體驗。

精選提問:

問1:請問網(wǎng)關本身的高可用和擴展性怎么保證?

答:當高并發(fā)調用時,EOS8網(wǎng)關可部署在容器云,通過F5或Nginx等工具做橫向擴展。流控機制可對API、調用方進行限流,減少并發(fā)問題的發(fā)生。業(yè)務服務端有熔斷機制保障線程高可用,接出時可配置后端服務超時的重連次數(shù),當調用異常發(fā)生做相應的處理。

問2:api授權是采取什么模式?

答:授權采取API發(fā)布訂閱模式。當API處于“已發(fā)布”狀態(tài),消費者系統(tǒng)可訂閱API獲取網(wǎng)關頒發(fā)的令牌,當調用網(wǎng)關的目標API,網(wǎng)關會根據(jù)令牌校驗調用是否合法。

問3:單節(jié)點部署支持訪問多少并發(fā)?

答:1K報文在1000并發(fā)下,網(wǎng)關的TPS有2362,隨著報文增加,TPS會隨之有所下降。

普元EOS 8網(wǎng)關設計及應用

關于作者:李鋮,普元java開發(fā)工程師,負責ESB/BIIP/DSB的維護,參與普元EOS 8網(wǎng)關的開發(fā),現(xiàn)階段進行ESB 6.7升級的研發(fā)工作。 

文章題目:普元EOS8網(wǎng)關設計及應用-創(chuàng)新互聯(lián)
轉載來于:http://muchs.cn/article8/cdcdop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣關鍵詞優(yōu)化、微信小程序、軟件開發(fā)、搜索引擎優(yōu)化、網(wǎng)站導航

廣告

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

成都定制網(wǎng)站網(wǎng)頁設計