xPort V1.0 - 基于“Service Mesh”下一代分布式微服務(wù)框架
繼發(fā)布面向量化金融的C++分布式xRPC通訊框架后,數(shù)字動能再發(fā)布用于分布式服務(wù)框架的智能代理xPort v1.0。xPort智能代理完全由C++編寫,支持數(shù)字動能的xRPC通訊協(xié)議,主要用于實(shí)現(xiàn)多應(yīng)用服務(wù)在分布式服務(wù)框架(如Service Mesh服務(wù)網(wǎng)格)的智能調(diào)度和管理功能。xPort v1.0智能代理的發(fā)布,標(biāo)志著數(shù)字動能將掌握下一代分布式微服務(wù)架構(gòu)-Service Mesh的核心開發(fā)技術(shù)。利用最新的分布式微服務(wù)架構(gòu),數(shù)字動能可具備搭建多元異構(gòu)業(yè)務(wù)中臺、實(shí)現(xiàn)復(fù)雜業(yè)務(wù)解耦和跨業(yè)務(wù)間通訊、滿足多業(yè)務(wù)場景交付的能力。
一、xPort是什么?
智能代理,也叫Side Car,既是新一代分布式微服務(wù)框架-Service Mesh服務(wù)網(wǎng)格架構(gòu)的基石構(gòu)件,也是Service Mesh數(shù)據(jù)平面和控制平面的核心管理組件。
ISTO的Service Mesh通用模型
xPort是數(shù)字動能的Service Mesh核心組件“智能代理”(也叫Side Car)。xPort以分布式通訊框架xRPC為主要通訊協(xié)議,它主要負(fù)責(zé)Service Mesh服務(wù)網(wǎng)格節(jié)點(diǎn)間的數(shù)據(jù)平臺與控制平面的管理。服務(wù)網(wǎng)格-Service Mesh被視為下一代基于分布式思路的微服務(wù)架構(gòu),它提出了利用全新的分布式、輕量級設(shè)計的Sidecar(以下稱智能代理)部署模式替代原來龐大的層級式、堆疊式的集中服務(wù)框架。應(yīng)用服務(wù)間的數(shù)據(jù)通訊將由智能代理接管,不再需要關(guān)注通信和控制細(xì)節(jié),信息可在服務(wù)網(wǎng)格間高速通訊。而對于系統(tǒng)級別的功能調(diào)用,應(yīng)用服務(wù)單元也無需再去關(guān)心如何調(diào)度,完全由智能代理負(fù)責(zé)數(shù)據(jù)平臺和控制平面的協(xié)調(diào)。這種改進(jìn)將把業(yè)務(wù)代碼和技術(shù)實(shí)現(xiàn)進(jìn)一步解耦,技術(shù)架構(gòu)的變動對業(yè)務(wù)代碼的影響也進(jìn)一步減少。利用智能代理進(jìn)行應(yīng)用服務(wù)間信息通訊的方式是Service mesh服務(wù)網(wǎng)格設(shè)計的核心思路,數(shù)字動能提出的Direct Exchange Mesh服務(wù)網(wǎng)格架構(gòu)對比ISTO經(jīng)典Service Mesh模型更輕量級,主要針對金融行業(yè)的大數(shù)據(jù)傳輸、復(fù)雜計算和高速傳輸需求進(jìn)行了場景針對設(shè)計。其智能代理xPort完全自主研發(fā),采用大量創(chuàng)新設(shè)計。
數(shù)字動能的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è)計中,數(shù)字動能利用xPort智能代理大膽把控制平面的部分功能下沉至智能代理內(nèi)部,同時把硬件資源的調(diào)度權(quán)交回給IaaS層,讓整個分布式架構(gòu)設(shè)計更輕量級,以智能節(jié)點(diǎn)直接點(diǎn)對點(diǎn)方式進(jìn)行數(shù)據(jù)交換(Direct Exchange Model)。在原Service Mesh通用模型中,應(yīng)用服務(wù)的微服務(wù)化看似松耦合,實(shí)際上由于控制面板的集中通訊設(shè)計,反而加重了網(wǎng)絡(luò)間節(jié)點(diǎn)傳輸?shù)膲毫?。?shù)字動能的xPort智能代理大膽取舍了原來控制面板的功能,改為智能代理間完全點(diǎn)對點(diǎn)直接通訊,從而避免過多的節(jié)點(diǎn)需要同時經(jīng)過控制平面通訊所產(chǎn)生的原生架構(gòu)性能瓶頸。
2、智能代理xPort允許應(yīng)用(服務(wù))通過進(jìn)程內(nèi)調(diào)用的方式實(shí)現(xiàn)高速點(diǎn)對點(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。即使兩個應(yīng)用服務(wù)加載在不同的xPort,也只需要發(fā)起一次網(wǎng)絡(luò)調(diào)用即可。另外,不同于原來一對一的智能代理->應(yīng)用服務(wù)的單一結(jié)構(gòu),xPort允許多個應(yīng)用服務(wù)同時在進(jìn)程內(nèi)加載。如圖,應(yīng)用服務(wù)A,B,C可同時通過加載在xPortA中。
利用xPort實(shí)現(xiàn)進(jìn)程內(nèi)多應(yīng)用服務(wù)調(diào)用
3、智能代理xPort內(nèi)置服務(wù)發(fā)現(xiàn)功能,降低對注冊發(fā)現(xiàn)服務(wù)頻繁訪問的網(wǎng)絡(luò)消耗
通用Service Mesh服務(wù)網(wǎng)格模型對服務(wù)注冊中心的依賴度很高,應(yīng)用服務(wù)通過智能代理必須和服務(wù)注冊中心保持連接,以確保服務(wù)注冊中心能觀測到各個節(jié)點(diǎn)的狀態(tài)變化。這種方式在大規(guī)模的分布式應(yīng)用中容易產(chǎn)生單點(diǎn)問題,隨著應(yīng)用服務(wù)節(jié)點(diǎn)的數(shù)量增加,服務(wù)注冊中心的壓力會隨之變大,一旦服務(wù)注冊中心發(fā)生故障,所有的應(yīng)用服務(wù)都將被掛起無法工作。xPort為避免此問題,在智能代理中內(nèi)置了服務(wù)發(fā)現(xiàn)功能。當(dāng)應(yīng)用服務(wù)把消息傳遞給xPort后,智能代理會先查詢內(nèi)置的本地路由表,查看是否有目標(biāo)應(yīng)用服務(wù)的地址,如果沒有才會從服務(wù)注冊中心獲取目標(biāo)服務(wù)(應(yīng)用)的地址。對于首次應(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會開始自動相互各自的應(yīng)用服務(wù)信息,不再需要通過服務(wù)注冊中心。
4、xPort具有帶消息隊列的點(diǎn)對點(diǎn)通訊功能
在通用Service Mesh架構(gòu)中,應(yīng)用服務(wù)和智能代理、智能代理自身相互之間均是點(diǎn)對點(diǎn)通訊。點(diǎn)對點(diǎn)通訊在獲得高性能的同時,卻要求被調(diào)用方必須保持在線。在分布式場景中,應(yīng)用服務(wù)可能會出現(xiàn)短時間(或極短時間)的通訊中斷現(xiàn)象。xPort智能代理將會允許這些臨時中斷現(xiàn)象的發(fā)生,并將其視為信息在節(jié)點(diǎn)間傳輸?shù)挠行芷凇Port通過改進(jìn)并融入ZeroMQ的技術(shù)達(dá)到此目的。應(yīng)用服務(wù)把消息傳給xPort之后,會在本地創(chuàng)建該消息目標(biāo)應(yīng)用服務(wù)的隊列,然后再由該應(yīng)用服務(wù)把消息發(fā)送給目標(biāo)應(yīng)用服務(wù);如果目標(biāo)應(yīng)用服務(wù)不在線,那么在消息的生命周期內(nèi)會存放在這個隊列里面,待目標(biāo)應(yīng)用服務(wù)上線,該隊列會繼續(xù)完成消息傳輸。因此,智能代理間的消息傳輸只要在其生命周期內(nèi)被處理即可,并不要求各個智能代理節(jié)點(diǎn)必須立即響應(yīng)。與原來傳統(tǒng)點(diǎn)對點(diǎn)的即時信息通訊方式不一樣,xPort在與應(yīng)用服務(wù)和智能代理間的相互調(diào)用,并不認(rèn)為只要對方不在線,消息傳輸就是失敗的,而是允許消息只要還在生命周期內(nèi),都可以隊列方式進(jìn)入等待響應(yīng)狀態(tài)。在點(diǎn)對點(diǎn)通訊效率提升方面,xPort同時借鑒了RabbitMQ一個連接可以創(chuàng)建多個通道(channel)的思路,大大減少了xPort之間的連接數(shù)量。xPort內(nèi)置的節(jié)點(diǎn)智能連接算法,可讓xPort智能代理會根據(jù)服務(wù)節(jié)點(diǎn)間線路情況自動增加連接,在空閑時自動降低連接數(shù)量。
5、xPort同時支持多線程編程模型和Actor編程模型
通用Service Mesh的架構(gòu)中,智能代理(Side Car)只作為消息代理所用,xPort在實(shí)現(xiàn)消息代理功能的同時,允許應(yīng)用服務(wù)加載到自身進(jìn)程,使其具備對應(yīng)用服務(wù)的調(diào)度功能。為滿足高并發(fā)的使用場景,xPort進(jìn)一步提供了線程池和Actor兩種并發(fā)模型。線程池并發(fā)模型的多個線程間交互是通過共享內(nèi)存的方式進(jìn)行的,多個線程對共享進(jìn)行操作,達(dá)到同步消息的目的。這種方式極大提升響應(yīng)速度,降低延時,但多線程編程模型難以保證應(yīng)用運(yùn)行的正確性。該問題需要用到鎖等機(jī)制來解決,這將會影響性能,并且容易導(dǎo)致死鎖等問題。因此,xPort同時提供了Actor并發(fā)模型。Actor不是通過共享內(nèi)存來通信,而是通過通信來共享內(nèi)存的。Actor的狀態(tài)由自身來進(jìn)行維護(hù),其他線程不能直接對Actor發(fā)起調(diào)用,而是要把調(diào)用的消息發(fā)送給Actor,由Actor來執(zhí)行操作,這樣就可以保證Actor內(nèi)部的數(shù)據(jù)只有由它自身進(jìn)行改變。這種編程模型大大的降低多線程編程的復(fù)雜度,容易編寫出高并發(fā)的應(yīng)用程序。xPort的使用對象可以根據(jù)業(yè)務(wù)選擇不同的編程模型即可。
三、xPort可以解決什么問題?
xPort作為數(shù)字動能分布式微服務(wù)框架DX Mesh的核心組件,主要解決各個應(yīng)用服務(wù)間的數(shù)據(jù)、通訊和控制問題,為多業(yè)務(wù)場景設(shè)計,復(fù)雜系統(tǒng)構(gòu)建和中臺業(yè)務(wù)架構(gòu)方案提供了全新的實(shí)現(xiàn)思路。利用智能代理xPort實(shí)現(xiàn)的業(yè)務(wù)間互聯(lián)互通,將對大型業(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è)計。
3、通過智能代理,業(yè)務(wù)間不再考慮統(tǒng)一設(shè)計,而是分立設(shè)計,甚至進(jìn)行動態(tài)業(yè)務(wù)邏輯設(shè)計,彼此相互聯(lián)系又各自獨(dú)立。
4、智能代理所形成的分布式業(yè)務(wù)群可實(shí)現(xiàn)快速部署,快速遷移。
5、通過智能代理,可實(shí)現(xiàn)異構(gòu)開發(fā)語言間的相互通訊。
6、系統(tǒng)從集中式設(shè)計變成網(wǎng)絡(luò)化,節(jié)點(diǎn)化的分布式設(shè)計,可無限延申業(yè)務(wù)體系。
7、智能代理的分布式接入架構(gòu)對傳統(tǒng)的PaaS集中接入式架構(gòu)發(fā)起了挑戰(zhàn),但成本更低,新業(yè)務(wù)接入迅速,舊業(yè)務(wù)系統(tǒng)無需推倒重來。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- 比亞迪第五代DM技術(shù)問世,首搭秦L/海豹06 DM-i,開創(chuàng)油耗2時代!
- 小紅書沉帖降權(quán)怎么做,有效方法大盤點(diǎn)!
- 亞洲時刻京東送上電視好禮 以舊換新一體化服務(wù)讓低價更靠譜
- 互聯(lián)網(wǎng)營銷師和全媒體運(yùn)營師的區(qū)別?
- 聯(lián)想集團(tuán)車計算“超級大腦”概念機(jī)亮相
- 華策影視設(shè)立專項基金成立AIGC應(yīng)用研究院
- 三部委審批,聯(lián)合發(fā)布9個新職業(yè),“互聯(lián)網(wǎng)營銷師”上榜
- 互聯(lián)網(wǎng)營銷師的報考條件是什么?
- 互聯(lián)網(wǎng)營銷師的適合人群有哪些?
- 互聯(lián)網(wǎng)營銷師行業(yè)前景怎么樣?
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。