本發(fā)明涉及數(shù)據(jù)協(xié)議轉(zhuǎn)換,尤其涉及一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件及數(shù)據(jù)協(xié)議轉(zhuǎn)換方法。
背景技術(shù):
1、在物聯(lián)網(wǎng)和分布式系統(tǒng)中,為了不同系統(tǒng)之間能進(jìn)行有效的通訊,數(shù)據(jù)傳輸協(xié)議扮演著重要的角色,它允許系統(tǒng)之間的數(shù)據(jù)交互都是通過(guò)各個(gè)獨(dú)立系統(tǒng)基于自身實(shí)現(xiàn)的歸約和協(xié)議進(jìn)行各種i/o行為。目前,雙方協(xié)議對(duì)接的傳統(tǒng)實(shí)現(xiàn)方式是由雙方約定其中一方系統(tǒng)去適配對(duì)方系統(tǒng)的協(xié)議進(jìn)行定制性質(zhì)的代碼開(kāi)發(fā),轉(zhuǎn)換成對(duì)方系統(tǒng)的協(xié)議形式和數(shù)據(jù)格式,適用于正在開(kāi)發(fā)中的系統(tǒng),實(shí)現(xiàn)工作量較小。另一種方式是引入一種專門(mén)開(kāi)發(fā)的中間件,進(jìn)行協(xié)議轉(zhuǎn)換開(kāi)發(fā),將協(xié)議轉(zhuǎn)換的工作從雙方系統(tǒng)中解耦出來(lái),獨(dú)自部署中間件實(shí)現(xiàn),適用于歷舊系統(tǒng)或者不能做迭代性開(kāi)發(fā)的系統(tǒng)使用,實(shí)現(xiàn)工作量較大。
2、針對(duì)第一種方式,在原有系統(tǒng)中做協(xié)議轉(zhuǎn)換開(kāi)發(fā),只能由原有系統(tǒng)的開(kāi)發(fā)者或者對(duì)原有系統(tǒng)比較熟悉的程序員來(lái)主導(dǎo)開(kāi)發(fā),并會(huì)一定程度影響到原有系統(tǒng)的健壯性;在原系統(tǒng)的基礎(chǔ)上增加接口對(duì)接的改動(dòng),會(huì)一定程度破壞原系統(tǒng)的穩(wěn)定性,甚至有可能使得原系統(tǒng)功能異常,在一定軟件標(biāo)準(zhǔn)流程體系中的系統(tǒng)變更發(fā)布流程上會(huì)增加相應(yīng)的審核和測(cè)試環(huán)節(jié),增加系統(tǒng)的實(shí)施周期和成本。針對(duì)第二種方式,使用獨(dú)自開(kāi)發(fā)的中間件,則開(kāi)發(fā)工作量比較大,而且復(fù)用性比較差,只能適用于原系統(tǒng)協(xié)議轉(zhuǎn)換成特定協(xié)議的特定場(chǎng)景,其余場(chǎng)景則無(wú)法進(jìn)行完全復(fù)用,需要重新開(kāi)發(fā)或者進(jìn)行變更。
3、所以研發(fā)出一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件及數(shù)據(jù)協(xié)議轉(zhuǎn)換方法來(lái)解決上述問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提出一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件及數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,以解決現(xiàn)有協(xié)議轉(zhuǎn)換中間件會(huì)影響原有系統(tǒng)的健壯性、穩(wěn)定性且復(fù)用性較差的問(wèn)題。
2、本發(fā)明通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)上述目的:
3、一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,包括:標(biāo)準(zhǔn)化協(xié)議組件,所述標(biāo)準(zhǔn)化協(xié)議組件包括:
4、協(xié)議初始化模塊,所述協(xié)議初始化模塊用于加載相應(yīng)系統(tǒng)的靜態(tài)配置數(shù)據(jù)、動(dòng)態(tài)緩存數(shù)據(jù),生成協(xié)議組件實(shí)例,所述協(xié)議組件實(shí)例包括協(xié)議業(yè)務(wù)接口和協(xié)議服務(wù),所述協(xié)議業(yè)務(wù)接口用于發(fā)送或接收業(yè)務(wù)數(shù)據(jù),所述協(xié)議服務(wù)用于業(yè)務(wù)邏輯轉(zhuǎn)換;
5、協(xié)議數(shù)據(jù)接口,所述協(xié)議數(shù)據(jù)接口用于使用數(shù)據(jù)交互隊(duì)列實(shí)現(xiàn)不同協(xié)議組件實(shí)例之間的交互通信;
6、編碼器,所述編碼器用于對(duì)接收到的業(yè)務(wù)數(shù)據(jù)進(jìn)行去業(yè)務(wù)化;
7、解碼器,所述解碼器用于將接收到的數(shù)據(jù)進(jìn)行本地業(yè)務(wù)化處理,得到本地業(yè)務(wù)化數(shù)據(jù);
8、業(yè)務(wù)邏輯轉(zhuǎn)換模塊,所述業(yè)務(wù)邏輯轉(zhuǎn)換模塊用于根據(jù)協(xié)議服務(wù)基于所述靜態(tài)配置數(shù)據(jù)、動(dòng)態(tài)緩存數(shù)據(jù)對(duì)所述本地業(yè)務(wù)化數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯轉(zhuǎn)換;
9、配置結(jié)構(gòu),所述配置結(jié)構(gòu)用于存儲(chǔ)所述靜態(tài)配置數(shù)據(jù);
10、緩存結(jié)構(gòu),所述緩存結(jié)構(gòu)用于存儲(chǔ)所述動(dòng)態(tài)緩存數(shù)據(jù)。
11、進(jìn)一步地,所述數(shù)據(jù)交互隊(duì)列為基于先進(jìn)先出的雙向阻塞隊(duì)列。
12、進(jìn)一步地,所述數(shù)據(jù)交互隊(duì)列與所述協(xié)議組件實(shí)例之間通過(guò)南向接口或北向接口連接。
13、進(jìn)一步地,所述數(shù)據(jù)交互隊(duì)列的框架隊(duì)列包括異步隊(duì)列和同步通道
14、進(jìn)一步地,還包括協(xié)議組件底座,所述協(xié)議組件底座用于將多個(gè)標(biāo)準(zhǔn)化協(xié)議組件和所有暴露的所述協(xié)議業(yè)務(wù)接口封裝成可承載運(yùn)行的協(xié)議組件實(shí)例的底層驅(qū)動(dòng)程序,所述協(xié)議組件底座啟動(dòng)時(shí)會(huì)觸發(fā)所述標(biāo)準(zhǔn)化協(xié)議組件的協(xié)議初始化模塊運(yùn)行以及加載。
15、進(jìn)一步地,還包括協(xié)議轉(zhuǎn)換框架,所述協(xié)議轉(zhuǎn)換框架包括運(yùn)行監(jiān)控模塊、調(diào)試模塊、流量統(tǒng)計(jì)模塊、控制模塊、過(guò)濾模塊、參數(shù)配置模塊和運(yùn)行維護(hù)web接口,所述過(guò)濾模塊用于對(duì)所述數(shù)據(jù)交互隊(duì)列進(jìn)行過(guò)濾處理,所述調(diào)試模塊用于對(duì)所述數(shù)據(jù)交互隊(duì)列進(jìn)行調(diào)試處理,所述運(yùn)行監(jiān)控模塊用于監(jiān)控所述數(shù)據(jù)交互隊(duì)列的運(yùn)行,所述參數(shù)配置模塊用于加載數(shù)據(jù)交互隊(duì)列的初始化參數(shù)配置,所述控制模塊用于對(duì)所述數(shù)據(jù)交互隊(duì)列的啟停、限流進(jìn)行控制。
16、本發(fā)明還提供了一種數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,包括:
17、構(gòu)建標(biāo)準(zhǔn)化協(xié)議組件,所述標(biāo)準(zhǔn)化協(xié)議組件包括協(xié)議初始化模塊、協(xié)議數(shù)據(jù)接口、配置結(jié)構(gòu)、緩存結(jié)構(gòu)、業(yè)務(wù)邏輯轉(zhuǎn)換模塊、編碼器和解碼器;
18、通過(guò)若干個(gè)所述標(biāo)準(zhǔn)化協(xié)議組件的協(xié)議初始化模塊對(duì)應(yīng)分別加載相應(yīng)系統(tǒng)的靜態(tài)配置數(shù)據(jù)、動(dòng)態(tài)緩存數(shù)據(jù)至所述配置結(jié)構(gòu)、緩存結(jié)構(gòu)中,得到若干個(gè)本端系統(tǒng)協(xié)議組件實(shí)例和對(duì)端系統(tǒng)協(xié)議組件實(shí)例,相應(yīng)所述協(xié)議組件實(shí)例均包括協(xié)議業(yè)務(wù)接口、協(xié)議服務(wù),所述協(xié)議業(yè)務(wù)接口用于發(fā)送或接收業(yè)務(wù)數(shù)據(jù),所述協(xié)議服務(wù)用于業(yè)務(wù)邏輯轉(zhuǎn)換;
19、進(jìn)入轉(zhuǎn)換運(yùn)行流程:
20、通過(guò)本端系統(tǒng)協(xié)議組件實(shí)例的協(xié)議業(yè)務(wù)接口接收本端系統(tǒng)中待轉(zhuǎn)化的業(yè)務(wù)數(shù)據(jù);
21、通過(guò)所述本端系統(tǒng)協(xié)議組件實(shí)例的協(xié)議服務(wù)基于所述本端系統(tǒng)的所述靜態(tài)配置數(shù)據(jù)、動(dòng)態(tài)緩存數(shù)據(jù)對(duì)所述待轉(zhuǎn)化的業(yè)務(wù)數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯轉(zhuǎn)換,得到業(yè)務(wù)邏輯轉(zhuǎn)換數(shù)據(jù);
22、采用本端系統(tǒng)協(xié)議組件實(shí)例的編碼器對(duì)所述業(yè)務(wù)邏輯轉(zhuǎn)換數(shù)據(jù)進(jìn)行去業(yè)務(wù)化,得到去業(yè)務(wù)化數(shù)據(jù);
23、通過(guò)所述協(xié)議數(shù)據(jù)接口基于數(shù)據(jù)交互隊(duì)列將所述去業(yè)務(wù)化數(shù)據(jù)傳遞給對(duì)端系統(tǒng)協(xié)議組件實(shí)例;
24、通過(guò)所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例的解碼器對(duì)所述去業(yè)務(wù)化數(shù)據(jù)進(jìn)行本地業(yè)務(wù)化處理,得到本地業(yè)務(wù)化數(shù)據(jù);
25、通過(guò)所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例的協(xié)議服務(wù)基于所述對(duì)端系統(tǒng)的所述靜態(tài)配置數(shù)據(jù)、動(dòng)態(tài)緩存數(shù)據(jù)對(duì)所述本地業(yè)務(wù)化數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯轉(zhuǎn)換,得到目標(biāo)協(xié)議格式業(yè)務(wù)數(shù)據(jù);
26、通過(guò)所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例的協(xié)議業(yè)務(wù)接口將所述目標(biāo)協(xié)議格式業(yè)務(wù)數(shù)據(jù)推送至對(duì)端系統(tǒng);
27、若所述業(yè)務(wù)數(shù)據(jù)為push行為數(shù)據(jù),則結(jié)束所述轉(zhuǎn)換運(yùn)行流程;
28、若所述業(yè)務(wù)數(shù)據(jù)為ack行為數(shù)據(jù),則將所述對(duì)端系統(tǒng)在接收所述目標(biāo)協(xié)議格式業(yè)務(wù)數(shù)據(jù)之后發(fā)出的反饋結(jié)果,經(jīng)過(guò)所述轉(zhuǎn)換運(yùn)行流程的反向過(guò)程處理后流回所述本端系統(tǒng)。
29、進(jìn)一步地,所述數(shù)據(jù)交互隊(duì)列為所述數(shù)據(jù)交互隊(duì)列為基于先進(jìn)先出的雙向阻塞隊(duì)列。
30、進(jìn)一步地,所述數(shù)據(jù)交互隊(duì)列的框架隊(duì)列包括異步隊(duì)列和同步通道,所述本端系統(tǒng)協(xié)議組件實(shí)例通過(guò)異步隊(duì)列主動(dòng)推送數(shù)據(jù),所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例通過(guò)異步隊(duì)列被動(dòng)接收所述本端系統(tǒng)協(xié)議組件實(shí)例推送的數(shù)據(jù),所述本端系統(tǒng)協(xié)議組件實(shí)例通過(guò)同步通道主動(dòng)請(qǐng)求數(shù)據(jù),所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例通過(guò)同步通道被動(dòng)響應(yīng)所述本端系統(tǒng)協(xié)議組件實(shí)例的請(qǐng)求并發(fā)送數(shù)據(jù)給所述本端系統(tǒng)協(xié)議組件實(shí)例。
31、進(jìn)一步地,所述數(shù)據(jù)交互隊(duì)列的最大隊(duì)列個(gè)數(shù)m的計(jì)算公式如下:
32、m=n(n-1)
33、n為標(biāo)準(zhǔn)化協(xié)議組件的個(gè)數(shù)。
34、本發(fā)明的有益效果在于:
35、本發(fā)明提出的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件及數(shù)據(jù)協(xié)議轉(zhuǎn)換方法不依賴于原系統(tǒng),保持了原系統(tǒng)的健壯性、穩(wěn)定性,復(fù)用性好,大大提高了開(kāi)發(fā)和實(shí)施的效率。
1.一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,其特征在于,包括:標(biāo)準(zhǔn)化協(xié)議組件,所述標(biāo)準(zhǔn)化協(xié)議組件包括:
2.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,其特征在于,所述數(shù)據(jù)交互隊(duì)列為基于先進(jìn)先出的雙向阻塞隊(duì)列。
3.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,其特征在于,所述數(shù)據(jù)交互隊(duì)列與所述協(xié)議組件實(shí)例之間通過(guò)南向接口或北向接口連接。
4.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,其特征在于,所述數(shù)據(jù)交互隊(duì)列的框架隊(duì)列包括異步隊(duì)列和同步通道。
5.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,其特征在于,還包括協(xié)議組件底座,所述協(xié)議組件底座用于將多個(gè)標(biāo)準(zhǔn)化協(xié)議組件和所有暴露的所述協(xié)議業(yè)務(wù)接口封裝成可承載運(yùn)行的協(xié)議組件實(shí)例的底層驅(qū)動(dòng)程序,所述協(xié)議組件底座啟動(dòng)時(shí)會(huì)觸發(fā)所述標(biāo)準(zhǔn)化協(xié)議組件的協(xié)議初始化模塊運(yùn)行以及加載。
6.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件,其特征在于,還包括協(xié)議轉(zhuǎn)換框架,所述協(xié)議轉(zhuǎn)換框架包括運(yùn)行監(jiān)控模塊、調(diào)試模塊、流量統(tǒng)計(jì)模塊、控制模塊、過(guò)濾模塊、參數(shù)配置模塊和運(yùn)行維護(hù)web接口,所述過(guò)濾模塊用于對(duì)所述數(shù)據(jù)交互隊(duì)列進(jìn)行過(guò)濾處理,所述調(diào)試模塊用于對(duì)所述數(shù)據(jù)交互隊(duì)列進(jìn)行調(diào)試處理,所述運(yùn)行監(jiān)控模塊用于監(jiān)控所述數(shù)據(jù)交互隊(duì)列的運(yùn)行,所述參數(shù)配置模塊用于加載數(shù)據(jù)交互隊(duì)列的初始化參數(shù)配置,所述控制模塊用于對(duì)所述數(shù)據(jù)交互隊(duì)列的啟停、限流進(jìn)行控制。
7.用于權(quán)利要求1-6任一所述一種數(shù)據(jù)協(xié)議轉(zhuǎn)換中間件的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,包括:
8.根據(jù)權(quán)利要求7所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述數(shù)據(jù)交互隊(duì)列為所述數(shù)據(jù)交互隊(duì)列為基于先進(jìn)先出的雙向阻塞隊(duì)列。
9.根據(jù)權(quán)利要求7所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述數(shù)據(jù)交互隊(duì)列的框架隊(duì)列包括異步隊(duì)列和同步通道,所述本端系統(tǒng)協(xié)議組件實(shí)例通過(guò)異步隊(duì)列主動(dòng)推送數(shù)據(jù),所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例通過(guò)異步隊(duì)列被動(dòng)接收所述本端系統(tǒng)協(xié)議組件實(shí)例推送的數(shù)據(jù),所述本端系統(tǒng)協(xié)議組件實(shí)例通過(guò)同步通道主動(dòng)請(qǐng)求數(shù)據(jù),所述對(duì)端系統(tǒng)協(xié)議組件實(shí)例通過(guò)同步通道被動(dòng)響應(yīng)所述本端系統(tǒng)協(xié)議組件實(shí)例的請(qǐng)求并發(fā)送數(shù)據(jù)給所述本端系統(tǒng)協(xié)議組件實(shí)例。
10.根據(jù)權(quán)利要求7所述的一種數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述數(shù)據(jù)交互隊(duì)列的最大隊(duì)列個(gè)數(shù)m的計(jì)算公式如下: