一種基于消息鏈的輕量級(jí)數(shù)據(jù)處理框架的制作方法
【專利摘要】本發(fā)明涉及分布式計(jì)算【技術(shù)領(lǐng)域】,特別是指一種基于消息鏈的輕量級(jí)數(shù)據(jù)處理框架。當(dāng)消息被接收后進(jìn)入消息處理鏈模塊;經(jīng)過鏈上每個(gè)處理器上行處理邏輯的處理后,緩存到上行消息隊(duì)列中;上行消息隊(duì)列管理線程取出消息放入消息線程池;消息線程池將消息解析成對(duì)象或者結(jié)構(gòu)體;消息觀察者根據(jù)類型決定是否接受消息,并對(duì)其進(jìn)行特殊業(yè)務(wù)邏輯處理;另外,用戶請(qǐng)求或響應(yīng)經(jīng)過消息解析模塊轉(zhuǎn)化成消息緩存到下行消息隊(duì)列中;消息隊(duì)列把下行消息保存在待發(fā)送隊(duì)列中;按順序出列進(jìn)入消息處理鏈,經(jīng)過鏈上每個(gè)處理器下行處理邏輯處理后發(fā)送至消息通道。本發(fā)明解決了采用消息中間件所存在的問題,可用于實(shí)現(xiàn)基于本數(shù)據(jù)處理框架的第三方軟硬件的快速集成開發(fā)。
【專利說明】一種基于消息鏈的輕量級(jí)數(shù)據(jù)處理框架【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式計(jì)算【技術(shù)領(lǐng)域】,特別是指一種基于消息鏈的輕量級(jí)數(shù)據(jù)處理框架。
【背景技術(shù)】
[0002]一個(gè)分布式系統(tǒng)需要處理不同類型的消息,消息的處理邏輯既有共同之處,也會(huì)根據(jù)消息類型的不同而需要特殊的處理邏輯。我們一般采用消息中間件來(lái)處理消息的共性問題,它的處理步驟是這樣的:
[0003]1、消息中間件中一般有三個(gè)角色:消息中間件、消費(fèi)者、服務(wù)提供者;
[0004]2、消費(fèi)者組裝數(shù)據(jù)請(qǐng)求報(bào)文發(fā)送給消息;
[0005]3、消息中間件將消費(fèi)者請(qǐng)求報(bào)文轉(zhuǎn)發(fā)給各服務(wù)提供者監(jiān)聽隊(duì)列,服務(wù)提供者接收請(qǐng)求業(yè)務(wù)報(bào)文;
[0006]4、服務(wù)提供者異步返回請(qǐng)求報(bào)文的響應(yīng)報(bào)文;
[0007]5、消息中間件將消費(fèi)者請(qǐng)求報(bào)文的響應(yīng)報(bào)文返回到對(duì)應(yīng)消費(fèi)者應(yīng)答隊(duì)列,消費(fèi)者接收請(qǐng)求的響應(yīng)報(bào)文,并做相應(yīng)處理;
[0008]6、服務(wù)提供者生成消費(fèi)者所需的數(shù)據(jù),并發(fā)送報(bào)文給消息中間件;
[0009]7、消息中間件將通知報(bào)文轉(zhuǎn)發(fā)給各消費(fèi)者監(jiān)聽隊(duì)列,消費(fèi)者接收到通知業(yè)務(wù)報(bào)文;
[0010]8、消費(fèi)者異步返回通知報(bào)文的響應(yīng)報(bào)文。
[0011]可是,消息中間件在消息量不大的分布式環(huán)境中也存在以下的問題:
[0012]1、消息中間件是一個(gè)獨(dú)立的消息引擎,會(huì)占用一部分服務(wù)器資源,對(duì)于消息量不大的分布式應(yīng)用來(lái)說,沒有必要增加這樣的開銷,而且引入第三者的角色,消息(報(bào)文)在傳輸過程中經(jīng)過多一層隊(duì)列的暫存,會(huì)減低消息的實(shí)時(shí)性.[0013]2、消息中間件對(duì)消息處理邏輯沒有設(shè)計(jì)靈活的處理機(jī)制,一旦消息處理邏輯變化,需要重新編碼實(shí)現(xiàn).[0014]3、消息中間件沒有設(shè)計(jì)對(duì)消息的特殊處理邏輯機(jī)制,對(duì)特殊業(yè)務(wù)邏輯的開發(fā)不利。
【發(fā)明內(nèi)容】
[0015]本發(fā)明解決的技術(shù)問題在于提供一種基于消息鏈的輕量級(jí)數(shù)據(jù)處理框架,解決目前通用消息中間件存在的消息處理不靈活、開發(fā)效率低、消息實(shí)時(shí)性低的問題;
[0016]本發(fā)明解決上述技術(shù)問題的技術(shù)方案是: [0017]包括步驟:
[0018]上行消息從消息通道中被接收后進(jìn)入消息處理鏈模塊;
[0019]消息依次經(jīng)過鏈上每個(gè)處理器上行處理邏輯的處理后,緩存到上行消息隊(duì)列中;
[0020]上行消息隊(duì)列管理線程從消息隊(duì)列中取出消息放入消息線程池;[0021]消息線程池將消息解析成對(duì)象或者結(jié)構(gòu)體;
[0022]消息觀察者根據(jù)消息對(duì)象或結(jié)構(gòu)體的類型決定是否接受消息,并對(duì)其進(jìn)行特殊業(yè)務(wù)邏輯處理;
[0023]處理相應(yīng)或者用戶請(qǐng)求經(jīng)過消息解析模塊轉(zhuǎn)化成消息緩存到下行消息隊(duì)列中;
[0024]消息隊(duì)列把下行消息保存在待發(fā)送隊(duì)列中;
[0025]待發(fā)送隊(duì)列中消息按順序出列進(jìn)入消息處理鏈,依次經(jīng)過鏈上每個(gè)處理器下行處理邏輯處理后發(fā)送至消息通道。
[0026]所述消息分為上行消息和下行消息;上行消息是指系統(tǒng)從消息通道上接收到并需要進(jìn)行相應(yīng)命令操作的請(qǐng)求,下行消息則是指命令操作處理完后的響應(yīng)或是用戶需要發(fā)送出去的請(qǐng)求。
[0027]所述消息處理鏈?zhǔn)窍⑻幚砉ぞ叩逆準(zhǔn)郊?,包括上行消息處理鏈和下行消息處理鏈;上行消息處理鏈包括的消息處理工具有消息解包、消息解壓、消息解密及消息認(rèn)證等;下行消息處理鏈包括的消息處理工具則相應(yīng)的有消息認(rèn)證、消息加密、消息壓縮和消息打包等;
[0028]所述的消息線程池是指各個(gè)消息處理線程的集合,具有將消息解析成各個(gè)對(duì)象或者結(jié)構(gòu)體的功能;
[0029]所述的消息觀察者是指可以針對(duì)解析出來(lái)的消息對(duì)象進(jìn)行各種不同處理的接口對(duì)象,包括日志觀察者,審計(jì)觀察者,虛擬機(jī)觀察者,邏輯卷觀察者等;消息觀察者采用觀察者模式設(shè)計(jì)實(shí)現(xiàn),同一個(gè)消息支持依次被多個(gè)觀察者接收處理;,觀察者模式是編程設(shè)計(jì)中一種編程實(shí)現(xiàn)方法。
[0030]所述的上下行消息處理鏈工具集支持動(dòng)態(tài)可擴(kuò)展。
[0031]所述上下行消息隊(duì)列支持內(nèi)存形式和數(shù)據(jù)庫(kù)形式;
[0032]所述的內(nèi)存形式消息隊(duì)列是指在內(nèi)存中申請(qǐng)一定大小的空間作為消息緩沖,具有效率高的特性;
[0033]所述的數(shù)據(jù)庫(kù)形式是指將消息先保存到數(shù)據(jù)庫(kù),等待消息處理線程的調(diào)度,具有持久化特性,支持服務(wù)故障恢復(fù)消息重新處理的特點(diǎn)。
[0034]所述的消息觀察者特殊業(yè)務(wù)邏輯處理是指類似于日志觀察者進(jìn)行日志記錄,審計(jì)觀察者進(jìn)行審計(jì),虛擬機(jī)觀察者進(jìn)行創(chuàng)建虛擬機(jī)、關(guān)閉虛擬機(jī)等業(yè)務(wù)邏輯處理。
[0035]本發(fā)明方案的有益效果如下:
[0036]1、本發(fā)明的框架是輕量級(jí)的,對(duì)系統(tǒng)額外增加的開銷較少,消息的實(shí)時(shí)性高。
[0037]2、本發(fā)明的框架是高度靈活的,消息處理鏈中的處理邏輯可以按需通過配置進(jìn)行增減,無(wú)需重新編碼即可運(yùn)行;要增加對(duì)消息的特殊處理邏輯也較容易。
[0038]3、本發(fā)明的方法能在短時(shí)間內(nèi)開發(fā)分布式處理應(yīng)用,在消息處理鏈中的處理器都是根據(jù)共性處理邏輯開發(fā)的通用組件,在實(shí)際使用過程中只需要進(jìn)行配置或做少量編碼即可。
[0039]4、能提高分布式應(yīng)用開發(fā)的質(zhì)量,增加客戶滿意度。由于應(yīng)用本架構(gòu)可做到不編寫代碼或者只編寫極少量代碼,因此減少了開發(fā)過程中編碼產(chǎn)生的錯(cuò)誤,提高了軟件質(zhì)量。
【專利附圖】
【附圖說明】[0040]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說明:
[0041]圖1為本發(fā)明流程圖;
[0042]圖2為本發(fā)明上行數(shù)據(jù)處理框架分解圖;
【具體實(shí)施方式】
[0043]如圖1所示,本發(fā)明基于消息鏈的輕量級(jí)數(shù)據(jù)處理方法包括如下步驟:
[0044]上行消息從消息通道中被接收后進(jìn)入消息處理鏈模塊;
[0045]消息依次經(jīng)過鏈上每個(gè)處理器上行處理邏輯的處理后,緩存到上行消息隊(duì)列中;
[0046]上行消息隊(duì)列管理線程從消息隊(duì)列中取出消息放入消息線程池;
[0047]消息線程池將消息解析成對(duì)象或者結(jié)構(gòu)體;
[0048]消息觀察者根據(jù)消息對(duì)象或結(jié)構(gòu)體的類型決定是否接受消息,并對(duì)其進(jìn)行特殊業(yè)務(wù)邏輯處理;
[0049]處理相應(yīng)或者用戶請(qǐng)求經(jīng)過消息解析模塊轉(zhuǎn)化成消息緩存到下行消息隊(duì)列中;
[0050]消息隊(duì)列把下行消息保存在待發(fā)送隊(duì)列中;
[0051]待發(fā)送隊(duì)列中消息按順序出列進(jìn)入消息處理鏈,依次經(jīng)過鏈上每個(gè)處理器下行處理邏輯處理后發(fā)送至消息通道。
[0052]所述消息分為上行消息和下行消息;上行消息是指系統(tǒng)從消息通道上接收到并需要進(jìn)行相應(yīng)命令操作的請(qǐng)求,下行消息則是指命令操作處理完后的響應(yīng)或是用戶需要發(fā)送出去的請(qǐng)求。
[0053]消息處理鏈?zhǔn)窍⑻幚砉ぞ叩逆準(zhǔn)郊?,包括上行消息處理鏈和下行消息處理鏈;上行消息處理鏈包括的消息處理工具有消息解包、消息解壓、消息解密及消息認(rèn)證等;下行消息處理鏈包括的消息處理工具則相應(yīng)的有消息認(rèn)證、消息加密、消息壓縮和消息打包等;
[0054]消息線程池是指各個(gè)消息處理線程的集合,具有將消息解析成各個(gè)對(duì)象或者結(jié)構(gòu)體的功能;
[0055]消息觀察者是指可以針對(duì)解析出來(lái)的消息對(duì)象進(jìn)行各種不同處理的接口對(duì)象,包括日志觀察者,審計(jì)觀察者,虛擬機(jī)觀察者,邏輯卷觀察者等;消息觀察者采用觀察者模式設(shè)計(jì)實(shí)現(xiàn),同一個(gè)消息支持依次被多個(gè)觀察者接收處理;,觀察者模式是編程設(shè)計(jì)中一種編程實(shí)現(xiàn)方法。
[0056]上下行消息處理鏈工具集支持動(dòng)態(tài)可擴(kuò)展。
[0057]上下行消息隊(duì)列支持內(nèi)存形式和數(shù)據(jù)庫(kù)形式;內(nèi)存形式消息隊(duì)列是指在內(nèi)存中申請(qǐng)一定大小的空間作為消息緩沖,具有效率高的特性;數(shù)據(jù)庫(kù)形式是指將消息先保存到數(shù)據(jù)庫(kù),等待消息處理線程的調(diào)度,具有持久化特性,支持服務(wù)故障恢復(fù)消息重新處理的特點(diǎn)。
[0058]消息觀察者特殊業(yè)務(wù)邏輯處理是指類似于日志觀察者進(jìn)行日志記錄,審計(jì)觀察者進(jìn)行審計(jì),虛擬機(jī)觀察者進(jìn)行創(chuàng)建虛擬機(jī)、關(guān)閉虛擬機(jī)等業(yè)務(wù)邏輯處理。
[0059]再結(jié)合圖2所示,數(shù)據(jù)處理框架中消息處理鏈處于文本消息進(jìn)出的階段,包含解包、解壓、解密、認(rèn)證等處理過程,每一個(gè)處理過程都是一個(gè)Handler,且每個(gè)Handler需繼承MsgHandler基類,MsgHandler基類設(shè)計(jì)如下:
[0060]
【權(quán)利要求】
1.一種基于消息鏈的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:包括步驟: 上行消息從消息通道中被接收后進(jìn)入消息處理鏈模塊; 消息依次經(jīng)過鏈上每個(gè)處理器上行處理邏輯的處理后,緩存到上行消息隊(duì)列中; 上行消息隊(duì)列管理線程從消息隊(duì)列中取出消息放入消息線程池; 消息線程池將消息解析成對(duì)象或者結(jié)構(gòu)體; 消息觀察者根據(jù)消息對(duì)象或結(jié)構(gòu)體的類型決定是否接受消息,并對(duì)其進(jìn)行特殊業(yè)務(wù)邏輯處理; 處理相應(yīng)或者用戶請(qǐng)求經(jīng)過消息解析模塊轉(zhuǎn)化成消息緩存到下行消息隊(duì)列中; 消息隊(duì)列把下行消息保存在待發(fā)送隊(duì)列中; 待發(fā)送隊(duì)列中消息按順序出列進(jìn)入消息處理鏈,依次經(jīng)過鏈上每個(gè)處理器下行處理邏輯處理后發(fā)送至消息通道。
2.根據(jù)權(quán)利要求1所述的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:所述消息分為上行消息和下行消息;上行消息是指系統(tǒng)從消息通道上接收到并需要進(jìn)行相應(yīng)命令操作的請(qǐng)求,下行消息則是指命令操作處理完后的響應(yīng)或是用戶需要發(fā)送出去的請(qǐng)求。
3.根據(jù)權(quán)利要求1所述的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:所述消息處理鏈?zhǔn)窍⑻幚砉ぞ叩逆準(zhǔn)郊?,包括上行消息處理鏈和下行消息處理鏈;上行消息處理鏈包括的消息處理工具有消息解包、消息解壓、消息解密及消息認(rèn)證等;下行消息處理鏈包括的消息處理工具則相應(yīng)的有消息認(rèn)證、消息加密、消息壓縮和消息打包等; 所述的消息線程池是指各個(gè)消息處理線程的集合,具有將消息解析成各個(gè)對(duì)象或者結(jié)構(gòu)體的功能; 所述的消息觀察者是指可以針對(duì)解析出來(lái)的消息對(duì)象進(jìn)行各種不同處理的接口對(duì)象,包括日志觀察者,審計(jì)觀察者,虛擬機(jī)觀察者,邏輯卷觀察者等;消息觀察者采用觀察者模式設(shè)計(jì)實(shí)現(xiàn),同一個(gè)消息支持依次被多個(gè)觀察者接收處理;,觀察者模式是編程設(shè)計(jì)中一種編程實(shí)現(xiàn)方法。
4.根據(jù)權(quán)利要求3所述的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:所述的上下行消息處理鏈工具集支持動(dòng)態(tài)可擴(kuò)展。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:所述上下行消息隊(duì)列支持內(nèi)存形式和數(shù)據(jù)庫(kù)形式; 所述的內(nèi)存形式消息隊(duì)列是指在內(nèi)存中申請(qǐng)一定大小的空間作為消息緩沖,具有效率高的特性; 所述的數(shù)據(jù)庫(kù)形式是指將消息先保存到數(shù)據(jù)庫(kù),等待消息處理線程的調(diào)度,具有持久化特性,支持服務(wù)故障恢復(fù)消息重新處理的特點(diǎn)。
6.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:所述的消息觀察者特殊業(yè)務(wù)邏輯處理是指類似于日志觀察者進(jìn)行日志記錄,審計(jì)觀察者進(jìn)行審計(jì),虛擬機(jī)觀察者進(jìn)行創(chuàng)建虛擬機(jī)、關(guān)閉虛擬機(jī)等業(yè)務(wù)邏輯處理。
7.根據(jù)權(quán)利要求5所述的輕量級(jí)數(shù)據(jù)處理框架,其特征在于:所述的消息觀察者特殊業(yè)務(wù)邏輯處理是指類似于日志觀察者進(jìn)行日志記錄,審計(jì)觀察者進(jìn)行審計(jì),虛擬機(jī)觀察者進(jìn)行創(chuàng)建虛擬機(jī)、關(guān)閉虛擬機(jī)等業(yè)務(wù)邏輯處理。
【文檔編號(hào)】G06F9/44GK103677844SQ201310714072
【公開日】2014年3月26日 申請(qǐng)日期:2013年12月20日 優(yōu)先權(quán)日:2013年12月20日
【發(fā)明者】熊夢(mèng), 楊松, 莫展鵬, 季統(tǒng)凱 申請(qǐng)人:國(guó)云科技股份有限公司