一種分布式消息隊列中間件的制作方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明屬于服務(wù)器內(nèi)部數(shù)據(jù)處理領(lǐng)域,具體涉及一種分布式消息隊列中間件。
【背景技術(shù)】
[0002]計算機系統(tǒng)軟件具有大量的后臺任務(wù)執(zhí)行管理,設(shè)備和服務(wù)器間的消息通訊需要穩(wěn)定可靠高效的執(zhí)行方法。傳統(tǒng)的方法是用戶在操作時需要等待長時間的執(zhí)行過程才能得到結(jié)果,在該過程中往往會因為各種原因?qū)е聢?zhí)行失敗而使得用戶不得不再一次從新操作;用戶的這個操作過程同時也是無序不可控的,在執(zhí)行過程中無疑加大了服務(wù)器的壓力。
[0003]也就是說傳統(tǒng)的方法是一個同步過程,每次都需要等待上一步操作完成后才能進入下一步操作,如果操作的數(shù)據(jù)太大或者服務(wù)器執(zhí)行效率低下,用戶需要等待很長的響應時間才能得到結(jié)果,甚至請求超時導致執(zhí)行失敗無法進行后續(xù)工作;同時如此長時間的執(zhí)行過程會占用服務(wù)器CPU和內(nèi)存導致系統(tǒng)整體效能下降,影響了更多用戶的使用。
【發(fā)明內(nèi)容】
[0004]為了克服上述技術(shù)問題,本發(fā)明的目的為了提供一種異步處理的分布式消息隊列中間件。
[0005]本發(fā)明采用的技術(shù)方案是:
一種分布式消息隊列中間件,包括消息隊列、隊列管理模塊、消息轉(zhuǎn)發(fā)模塊和分布式路由,該消息隊列用于存儲用戶操作時提交的消息以等待處理,隊列管理模塊用于創(chuàng)建隊列以及管理隊列的序號和優(yōu)先級,并根據(jù)隊列的序號和優(yōu)先級控制消息轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)隊列中的消息,消息轉(zhuǎn)發(fā)模塊所轉(zhuǎn)發(fā)隊列中的消息經(jīng)分布式路由分配給空閑的目標服務(wù)器進行消息處理。
[0006]進一步,所述消息隊列采用反射技術(shù)將序列化的消息保存。
[0007]進一步,所述消息隊列為基于.NET和SQL server平臺服務(wù)端中所引用一個動態(tài)鏈接庫。
[0008]進一步,所述消息隊列存儲于緩存數(shù)據(jù)庫以供調(diào)用。
[0009]進一步,當觸發(fā)隊列執(zhí)行時,調(diào)用緩存數(shù)據(jù)庫中的消息隊列和數(shù)據(jù),并進行反序列化數(shù)據(jù)和隊列、反射隊列操作,然后調(diào)用系統(tǒng)功能進行處理并返回調(diào)用結(jié)果,最后根據(jù)調(diào)用結(jié)果更新緩存數(shù)據(jù)庫中的消息隊列和數(shù)據(jù)。
[0010]本發(fā)明的有益效果是:
本發(fā)明由于使用的異步處理,用戶提交操作請求后,消息隊列作為消息容器保存了所有的消息并做了有序管理,后臺根據(jù)隊列的序號和優(yōu)先級分配不同的服務(wù)器或線程各自運行,因為所有操作已經(jīng)分發(fā)到負載服務(wù)器上,所以用戶在使用系統(tǒng)軟件時不會受到其他用戶的操作影響。如果隊列執(zhí)行過程中發(fā)生意外,由于消息隊列已經(jīng)保存了整個信息,可以在恢復后重新執(zhí)行,保障了操作的可恢復性。即使服務(wù)器損壞,消息隊列可以在其他負載服務(wù)器上運行,不影響系統(tǒng)的整體運行。本發(fā)明使用反射技術(shù)將序列化的消息保存在隊列,不與系統(tǒng)模塊直接引用,把隊列功能都封裝在消息中,達到了低耦合高內(nèi)聚的目的;同時使得擴展更加容易,各模塊只需引用消息隊列中間件并實現(xiàn)接口,就可以增加新功能。
【附圖說明】
[0011]下面結(jié)合附圖對本發(fā)明的【具體實施方式】做進一步的說明。
[0012]圖1是本發(fā)明消息隊列中間件的工作原理圖;
圖2是本發(fā)明的第一是實施例示意圖;
圖3是本發(fā)明的第一是實施例示意圖;
圖4是本發(fā)明的第一是實施例示意圖。
【具體實施方式】
[0013]參考圖1所示,為本發(fā)明的一種分布式消息隊列中間件,包括消息隊列、隊列管理模塊、消息轉(zhuǎn)發(fā)模塊和分布式路由,該消息隊列用于存儲用戶操作時提交的消息以等待處理,隊列管理模塊用于創(chuàng)建隊列以及管理隊列的序號和優(yōu)先級,并根據(jù)隊列的序號和優(yōu)先級控制消息轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)隊列中的消息,消息轉(zhuǎn)發(fā)模塊所轉(zhuǎn)發(fā)隊列中的消息經(jīng)分布式路由分配給空閑的目標服務(wù)器進行消息處理,,降低主服務(wù)器的負載,實現(xiàn)負載均衡。
[0014]所述消息隊列采用反射技術(shù)將序列化的消息保存,所述消息隊列存儲于緩存數(shù)據(jù)庫以供調(diào)用,當觸發(fā)隊列執(zhí)行時,調(diào)用緩存數(shù)據(jù)庫中的消息隊列和數(shù)據(jù),并進行反序列化數(shù)據(jù)和隊列、反射隊列操作,然后調(diào)用系統(tǒng)功能進行處理并返回調(diào)用結(jié)果,最后根據(jù)調(diào)用結(jié)果更新緩存數(shù)據(jù)庫中的消息隊列和數(shù)據(jù)。
[0015]所述消息隊列為基于.NET和SQL server平臺服務(wù)端中所引用一個動態(tài)鏈接庫(DLL),新增隊列只需另外添加處理過程即可,不需要改變代碼,不需要調(diào)節(jié)參數(shù),非常有利與功能擴展。僅需要在項目中導入消息隊列中間件的引用,不用客戶端和服務(wù)端即可完成所有安裝。
[0016]如圖2所不,為本發(fā)明的基礎(chǔ)實施例:
A:實例繼承接口,實現(xiàn)接口定義的處理過程;
B:實例對象轉(zhuǎn)化成消息文本加入隊列等待調(diào)度中心分配執(zhí)行服務(wù)器,結(jié)束實例操作返回結(jié)果給用戶;
C:消息調(diào)度中心根據(jù)隊列加入順序和優(yōu)先級分配實例對象至負載較低的服務(wù)器;
D:接收實例的服務(wù)器對象化實例,執(zhí)行實例的處理過程。
[0017]如圖3所示,為本發(fā)明的第二實施例,數(shù)據(jù)同步消息隊列:
A:平臺數(shù)據(jù)變更;
B:同步實例繼承接口,實現(xiàn)接口定義的處理過程,同步實例對象轉(zhuǎn)化成消息文本加入隊列等待調(diào)度中心分配執(zhí)行服務(wù)器。結(jié)束實例操作返回結(jié)果給用戶;
C:消息調(diào)度中心根據(jù)隊列加入順序和優(yōu)先級分配同步實例對象至負載較低的服務(wù)器;
D:接收實例的服務(wù)器對象化實例,執(zhí)行實例的處理過程,調(diào)用目標服務(wù)器的webservice同步數(shù)據(jù)。
[0018]如圖4所示,為本發(fā)明的第三實施例,微信消息推送隊列: A:微信消息推送;
B:推送實例繼承接口,實現(xiàn)接口定義的處理過程,推送實例對象轉(zhuǎn)化成消息文本加入隊列等待調(diào)度中心分配執(zhí)行服務(wù)器。結(jié)束實例操作返回結(jié)果給用戶;
C:消息調(diào)度中心根據(jù)隊列加入順序和優(yōu)先級分配同步實例對象至負載較低的服務(wù)器;
D:接收實例的服務(wù)器對象化實例,執(zhí)行實例的處理過程,調(diào)用微信服務(wù)器的開放接口提交推送內(nèi)容信息。
[0019]如上所述,本發(fā)明就是提供了一個有序可控的消息隊列,對這些操作進行管理,控制任務(wù)執(zhí)行的優(yōu)先級,通過分布式路由實現(xiàn)多機負載以降低服務(wù)器的壓力,從而實現(xiàn)前端用戶無需最終執(zhí)行結(jié)果,大大的提升用戶的體驗度,使得服務(wù)器得到更大的利用價值。
[0020]以上所述僅為本發(fā)明的優(yōu)先實施方式,本發(fā)明并不限定于上述實施方式,只要以基本相同手段實現(xiàn)本發(fā)明目的的技術(shù)方案都屬于本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種分布式消息隊列中間件,其特征在于:包括消息隊列、隊列管理模塊、消息轉(zhuǎn)發(fā)模塊和分布式路由,該消息隊列用于存儲用戶操作時提交的消息以等待處理,隊列管理模塊用于創(chuàng)建隊列以及管理隊列的序號和優(yōu)先級,并根據(jù)隊列的序號和優(yōu)先級控制消息轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)隊列中的消息,消息轉(zhuǎn)發(fā)模塊所轉(zhuǎn)發(fā)隊列中的消息經(jīng)分布式路由分配給空閑的目標服務(wù)器進行消息處理。2.根據(jù)權(quán)利要求1所述的一種分布式消息隊列中間件,其特征在于:所述消息隊列采用反射技術(shù)將序列化的消息保存。3.根據(jù)權(quán)利要求1所述的一種分布式消息隊列中間件,其特征在于:所述消息隊列為基于.NET和SQL server平臺服務(wù)端中所引用一個動態(tài)鏈接庫。4.根據(jù)權(quán)利要求1所述的一種分布式消息隊列中間件,其特征在于:所述消息隊列存儲于緩存數(shù)據(jù)庫以供調(diào)用。5.根據(jù)權(quán)利要求4所述的一種分布式消息隊列中間件,其特征在于:當觸發(fā)隊列執(zhí)行時,調(diào)用緩存數(shù)據(jù)庫中的消息隊列和數(shù)據(jù),并進行反序列化數(shù)據(jù)和隊列、反射隊列操作,然后調(diào)用系統(tǒng)功能進行處理并返回調(diào)用結(jié)果,最后根據(jù)調(diào)用結(jié)果更新緩存數(shù)據(jù)庫中的消息隊列和數(shù)據(jù)。
【專利摘要】本發(fā)明公開了一種分布式消息隊列中間件,包括消息隊列、隊列管理模塊、消息轉(zhuǎn)發(fā)模塊和分布式路由,該消息隊列用于存儲用戶操作時提交的消息以等待處理,隊列管理模塊用于創(chuàng)建隊列以及管理隊列的序號和優(yōu)先級,并根據(jù)隊列的序號和優(yōu)先級控制消息轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)隊列中的消息,消息轉(zhuǎn)發(fā)模塊所轉(zhuǎn)發(fā)隊列中的消息經(jīng)分布式路由分配給空閑的目標服務(wù)器進行消息處理。消息隊列中間件對這些操作進行管理,控制任務(wù)執(zhí)行的優(yōu)先級,通過分布式路由實現(xiàn)多機負載以降低服務(wù)器的壓力,從而實現(xiàn)前端用戶無需最終執(zhí)行結(jié)果,大大的提升用戶的體驗度,使得服務(wù)器得到更大的利用價值。
【IPC分類】H04L29/08, H04L12/863
【公開號】CN105187327
【申請?zhí)枴緾N201510502177
【發(fā)明人】余敬龍
【申請人】廣東能龍教育股份有限公司
【公開日】2015年12月23日
【申請日】2015年8月14日