數(shù)字動(dòng)能發(fā)布分布式智能代理xPort V1.0

xPort V1.0 - 基于“Service Mesh”下一代分布式微服務(wù)框架

繼發(fā)布面向量化金融的C++分布式xRPC通訊框架后,數(shù)字動(dòng)能發(fā)布用于分布式服務(wù)框架的智能代理xPort v1.0。xPort智能代理完全由C++編寫,支持數(shù)字動(dòng)能的xRPC通訊協(xié)議,主要用于實(shí)現(xiàn)多應(yīng)用服務(wù)在分布式服務(wù)框架(如Service Mesh服務(wù)網(wǎng)格)的智能調(diào)度和管理功能。xPort v1.0智能代理的發(fā)布,標(biāo)志著數(shù)字動(dòng)能將掌握下一代分布式微服務(wù)架構(gòu)-Service Mesh的核心開發(fā)技術(shù)。利用最新的分布式微服務(wù)架構(gòu),數(shù)字動(dòng)能可具備搭建多元異構(gòu)業(yè)務(wù)中臺(tái)、實(shí)現(xiàn)復(fù)雜業(yè)務(wù)解耦和跨業(yè)務(wù)間通訊、滿足多業(yè)務(wù)場景交付的能力。

數(shù)字動(dòng)能發(fā)布分布式智能代理xPort V1.0

一、xPort是什么?

智能代理,也叫Side Car,既是新一代分布式微服務(wù)框架-Service Mesh服務(wù)網(wǎng)格架構(gòu)的基石構(gòu)件,也是Service Mesh數(shù)據(jù)平面和控制平面的核心管理組件。

數(shù)字動(dòng)能發(fā)布分布式智能代理xPort V1.0

ISTO的Service Mesh通用模型

xPort是數(shù)字動(dòng)能的Service Mesh核心組件“智能代理”(也叫Side Car)。xPort以分布式通訊框架xRPC為主要通訊協(xié)議,它主要負(fù)責(zé)Service Mesh服務(wù)網(wǎng)格節(jié)點(diǎn)間的數(shù)據(jù)平臺(tái)與控制平面的管理。服務(wù)網(wǎng)格-Service Mesh被視為下一代基于分布式思路的微服務(wù)架構(gòu),它提出了利用全新的分布式、輕量級(jí)設(shè)計(jì)的Sidecar(以下稱智能代理)部署模式替代原來龐大的層級(jí)式、堆疊式的集中服務(wù)框架。應(yīng)用服務(wù)間的數(shù)據(jù)通訊將由智能代理接管,不再需要關(guān)注通信和控制細(xì)節(jié),信息可在服務(wù)網(wǎng)格間高速通訊。而對(duì)于系統(tǒng)級(jí)別的功能調(diào)用,應(yīng)用服務(wù)單元也無需再去關(guān)心如何調(diào)度,完全由智能代理負(fù)責(zé)數(shù)據(jù)平臺(tái)和控制平面的協(xié)調(diào)。這種改進(jìn)將把業(yè)務(wù)代碼和技術(shù)實(shí)現(xiàn)進(jìn)一步解耦,技術(shù)架構(gòu)的變動(dòng)對(duì)業(yè)務(wù)代碼的影響也進(jìn)一步減少。利用智能代理進(jìn)行應(yīng)用服務(wù)間信息通訊的方式是Service mesh服務(wù)網(wǎng)格設(shè)計(jì)的核心思路,數(shù)字動(dòng)能提出的Direct Exchange Mesh服務(wù)網(wǎng)格架構(gòu)對(duì)比ISTO經(jīng)典Service Mesh模型更輕量級(jí),主要針對(duì)金融行業(yè)的大數(shù)據(jù)傳輸、復(fù)雜計(jì)算和高速傳輸需求進(jìn)行了場景針對(duì)設(shè)計(jì)。其智能代理xPort完全自主研發(fā),采用大量創(chuàng)新設(shè)計(jì)。

數(shù)字動(dòng)能發(fā)布分布式智能代理xPort V1.0

數(shù)字動(dòng)能的Service Mesh 改進(jìn)模型

二、智能代理xPort v1.0有什么特點(diǎn)?

1、智能代理通訊不再經(jīng)過通用模型的控制面板而是直接數(shù)據(jù)交換模式

Service Mesh通用模型中,智能節(jié)點(diǎn)(Side Car)區(qū)分了數(shù)據(jù)平面和控制平面。但在面向應(yīng)用服務(wù),以松耦合和高速通訊為首要目標(biāo)的Direct Exchange Mesh服務(wù)網(wǎng)格設(shè)計(jì)中,數(shù)字動(dòng)能利用xPort智能代理大膽把控制平面的部分功能下沉至智能代理內(nèi)部,同時(shí)把硬件資源的調(diào)度權(quán)交回給IaaS層,讓整個(gè)分布式架構(gòu)設(shè)計(jì)更輕量級(jí),以智能節(jié)點(diǎn)直接點(diǎn)對(duì)點(diǎn)方式進(jìn)行數(shù)據(jù)交換(Direct Exchange Model)。在原Service Mesh通用模型中,應(yīng)用服務(wù)的微服務(wù)化看似松耦合,實(shí)際上由于控制面板的集中通訊設(shè)計(jì),反而加重了網(wǎng)絡(luò)間節(jié)點(diǎn)傳輸?shù)膲毫?。?shù)字動(dòng)能的xPort智能代理大膽取舍了原來控制面板的功能,改為智能代理間完全點(diǎn)對(duì)點(diǎn)直接通訊,從而避免過多的節(jié)點(diǎn)需要同時(shí)經(jīng)過控制平面通訊所產(chǎn)生的原生架構(gòu)性能瓶頸。

2、智能代理xPort允許應(yīng)用(服務(wù))通過進(jìn)程內(nèi)調(diào)用的方式實(shí)現(xiàn)高速點(diǎn)對(duì)點(diǎn)通訊

普通Service Mesh的SideCar只是做了消息轉(zhuǎn)發(fā),xPort在滿足該功能的前提下,可以更好的滿足金融業(yè)務(wù)(如投研業(yè)務(wù))間大量數(shù)據(jù)和傳輸。智能代理xPort直接把應(yīng)用服務(wù)加載到自身的進(jìn)程內(nèi), 這樣應(yīng)用服務(wù)和智能代理xPort的通訊無需再通過網(wǎng)絡(luò)避免了頻繁通訊產(chǎn)生的網(wǎng)絡(luò)高負(fù)載,而是直接通過內(nèi)存交互。如下圖,應(yīng)用服務(wù)A和應(yīng)用服務(wù)B都是加載在xPortA的,通訊流程為:應(yīng)用服務(wù)A -> xPortA -> 應(yīng)用服務(wù)B。即使兩個(gè)應(yīng)用服務(wù)加載在不同的xPort,也只需要發(fā)起一次網(wǎng)絡(luò)調(diào)用即可。另外,不同于原來一對(duì)一的智能代理->應(yīng)用服務(wù)的單一結(jié)構(gòu),xPort允許多個(gè)應(yīng)用服務(wù)同時(shí)在進(jìn)程內(nèi)加載。如圖,應(yīng)用服務(wù)A,B,C可同時(shí)通過加載在xPortA中。

數(shù)字動(dòng)能發(fā)布分布式智能代理xPort V1.0

利用xPort實(shí)現(xiàn)進(jìn)程內(nèi)多應(yīng)用服務(wù)調(diào)用

3、智能代理xPort內(nèi)置服務(wù)發(fā)現(xiàn)功能,降低對(duì)注冊發(fā)現(xiàn)服務(wù)頻繁訪問的網(wǎng)絡(luò)消耗

通用Service Mesh服務(wù)網(wǎng)格模型對(duì)服務(wù)注冊中心的依賴度很高,應(yīng)用服務(wù)通過智能代理必須和服務(wù)注冊中心保持連接,以確保服務(wù)注冊中心能觀測到各個(gè)節(jié)點(diǎn)的狀態(tài)變化。這種方式在大規(guī)模的分布式應(yīng)用中容易產(chǎn)生單點(diǎn)問題,隨著應(yīng)用服務(wù)節(jié)點(diǎn)的數(shù)量增加,服務(wù)注冊中心的壓力會(huì)隨之變大,一旦服務(wù)注冊中心發(fā)生故障,所有的應(yīng)用服務(wù)都將被掛起無法工作。xPort為避免此問題,在智能代理中內(nèi)置了服務(wù)發(fā)現(xiàn)功能。當(dāng)應(yīng)用服務(wù)把消息傳遞給xPort后,智能代理會(huì)先查詢內(nèi)置的本地路由表,查看是否有目標(biāo)應(yīng)用服務(wù)的地址,如果沒有才會(huì)從服務(wù)注冊中心獲取目標(biāo)服務(wù)(應(yīng)用)的地址。對(duì)于首次應(yīng)用服務(wù)注冊,只需要通過智能代理向服務(wù)注冊中心做一次性注冊,后面的所有調(diào)用或應(yīng)用服務(wù)目標(biāo)的狀態(tài)無需再通過服務(wù)注冊中心。如上圖的服務(wù)(應(yīng)用)A發(fā)送消息給應(yīng)用服務(wù)D,當(dāng)xPortA和xPortB通過服務(wù)注冊中心建立連接后, xPortA和xPortB會(huì)開始自動(dòng)相互各自的應(yīng)用服務(wù)信息,不再需要通過服務(wù)注冊中心。

4、xPort具有帶消息隊(duì)列的點(diǎn)對(duì)點(diǎn)通訊功能

在通用Service Mesh架構(gòu)中,應(yīng)用服務(wù)和智能代理、智能代理自身相互之間均是點(diǎn)對(duì)點(diǎn)通訊。點(diǎn)對(duì)點(diǎn)通訊在獲得高性能的同時(shí),卻要求被調(diào)用方必須保持在線。在分布式場景中,應(yīng)用服務(wù)可能會(huì)出現(xiàn)短時(shí)間(或極短時(shí)間)的通訊中斷現(xiàn)象。xPort智能代理將會(huì)允許這些臨時(shí)中斷現(xiàn)象的發(fā)生,并將其視為信息在節(jié)點(diǎn)間傳輸?shù)挠行芷?。xPort通過改進(jìn)并融入ZeroMQ的技術(shù)達(dá)到此目的。應(yīng)用服務(wù)把消息傳給xPort之后,會(huì)在本地創(chuàng)建該消息目標(biāo)應(yīng)用服務(wù)的隊(duì)列,然后再由該應(yīng)用服務(wù)把消息發(fā)送給目標(biāo)應(yīng)用服務(wù);如果目標(biāo)應(yīng)用服務(wù)不在線,那么在消息的生命周期內(nèi)會(huì)存放在這個(gè)隊(duì)列里面,待目標(biāo)應(yīng)用服務(wù)上線,該隊(duì)列會(huì)繼續(xù)完成消息傳輸。因此,智能代理間的消息傳輸只要在其生命周期內(nèi)被處理即可,并不要求各個(gè)智能代理節(jié)點(diǎn)必須立即響應(yīng)。與原來傳統(tǒng)點(diǎn)對(duì)點(diǎn)的即時(shí)信息通訊方式不一樣,xPort在與應(yīng)用服務(wù)和智能代理間的相互調(diào)用,并不認(rèn)為只要對(duì)方不在線,消息傳輸就是失敗的,而是允許消息只要還在生命周期內(nèi),都可以隊(duì)列方式進(jìn)入等待響應(yīng)狀態(tài)。在點(diǎn)對(duì)點(diǎn)通訊效率提升方面,xPort同時(shí)借鑒了RabbitMQ一個(gè)連接可以創(chuàng)建多個(gè)通道(channel)的思路,大大減少了xPort之間的連接數(shù)量。xPort內(nèi)置的節(jié)點(diǎn)智能連接算法,可讓xPort智能代理會(huì)根據(jù)服務(wù)節(jié)點(diǎn)間線路情況自動(dòng)增加連接,在空閑時(shí)自動(dòng)降低連接數(shù)量。

5、xPort同時(shí)支持多線程編程模型和Actor編程模型

通用Service Mesh的架構(gòu)中,智能代理(Side Car)只作為消息代理所用,xPort在實(shí)現(xiàn)消息代理功能的同時(shí),允許應(yīng)用服務(wù)加載到自身進(jìn)程,使其具備對(duì)應(yīng)用服務(wù)的調(diào)度功能。為滿足高并發(fā)的使用場景,xPort進(jìn)一步提供了線程池和Actor兩種并發(fā)模型。線程池并發(fā)模型的多個(gè)線程間交互是通過共享內(nèi)存的方式進(jìn)行的,多個(gè)線程對(duì)共享進(jìn)行操作,達(dá)到同步消息的目的。這種方式極大提升響應(yīng)速度,降低延時(shí),但多線程編程模型難以保證應(yīng)用運(yùn)行的正確性。該問題需要用到鎖等機(jī)制來解決,這將會(huì)影響性能,并且容易導(dǎo)致死鎖等問題。因此,xPort同時(shí)提供了Actor并發(fā)模型。Actor不是通過共享內(nèi)存來通信,而是通過通信來共享內(nèi)存的。Actor的狀態(tài)由自身來進(jìn)行維護(hù),其他線程不能直接對(duì)Actor發(fā)起調(diào)用,而是要把調(diào)用的消息發(fā)送給Actor,由Actor來執(zhí)行操作,這樣就可以保證Actor內(nèi)部的數(shù)據(jù)只有由它自身進(jìn)行改變。這種編程模型大大的降低多線程編程的復(fù)雜度,容易編寫出高并發(fā)的應(yīng)用程序。xPort的使用對(duì)象可以根據(jù)業(yè)務(wù)選擇不同的編程模型即可。

三、xPort可以解決什么問題?

xPort作為數(shù)字動(dòng)能分布式微服務(wù)框架DX Mesh的核心組件,主要解決各個(gè)應(yīng)用服務(wù)間的數(shù)據(jù)、通訊和控制問題,為多業(yè)務(wù)場景設(shè)計(jì),復(fù)雜系統(tǒng)構(gòu)建和中臺(tái)業(yè)務(wù)架構(gòu)方案提供了全新的實(shí)現(xiàn)思路。利用智能代理xPort實(shí)現(xiàn)的業(yè)務(wù)間互聯(lián)互通,將對(duì)大型業(yè)務(wù)系統(tǒng)構(gòu)建和擁有復(fù)雜業(yè)務(wù)邏輯的核心系統(tǒng)研發(fā)帶來革命性的改變:

1、業(yè)務(wù)架構(gòu)簡單化 – 復(fù)雜業(yè)務(wù)結(jié)構(gòu)通過xPort接入方式進(jìn)行解耦,快速實(shí)現(xiàn)應(yīng)用模塊化。

2、以組織形態(tài)看待業(yè)務(wù),而不是進(jìn)行龐大臃腫的大架構(gòu)設(shè)計(jì)。

3、通過智能代理,業(yè)務(wù)間不再考慮統(tǒng)一設(shè)計(jì),而是分立設(shè)計(jì),甚至進(jìn)行動(dòng)態(tài)業(yè)務(wù)邏輯設(shè)計(jì),彼此相互聯(lián)系又各自獨(dú)立。

4、智能代理所形成的分布式業(yè)務(wù)群可實(shí)現(xiàn)快速部署,快速遷移。

5、通過智能代理,可實(shí)現(xiàn)異構(gòu)開發(fā)語言間的相互通訊。

6、系統(tǒng)從集中式設(shè)計(jì)變成網(wǎng)絡(luò)化,節(jié)點(diǎn)化的分布式設(shè)計(jì),可無限延申業(yè)務(wù)體系。

7、智能代理的分布式接入架構(gòu)對(duì)傳統(tǒng)的PaaS集中接入式架構(gòu)發(fā)起了挑戰(zhàn),但成本更低,新業(yè)務(wù)接入迅速,舊業(yè)務(wù)系統(tǒng)無需推倒重來。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2019-09-11
數(shù)字動(dòng)能發(fā)布分布式智能代理xPort V1.0
xPort V1.0 - 基于“Service Mesh”下一代分布式微服務(wù)框架繼發(fā)布面向量化金融的C++分布式xRPC通訊框架后,數(shù)字

長按掃碼 閱讀全文