本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體地說,涉及一種基于消息路由方式的數(shù)據(jù)同步方法和系統(tǒng)。
背景技術(shù):
在電商配送訂單包裹過程中,需要由中心交易平臺將此訂單的運單信息下發(fā)到包裹經(jīng)過的分揀中心。這樣每個分揀中心才能知道包裹的去向,從而快速分揀。因而,分揀中心的系統(tǒng)及時、快速地獲得運單數(shù)據(jù)成為了準確分揀包裹的關(guān)鍵。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的不足,提供一種基于消息路由方式的數(shù)據(jù)同步方法和系統(tǒng),用于解決現(xiàn)有技術(shù)中不同系統(tǒng)間的數(shù)據(jù)同步成本高、可靠性差的問題。
為了解決上述技術(shù)問題,根據(jù)本發(fā)明的一個方面,本發(fā)明提供了一種基于消息路由方式的數(shù)據(jù)同步方法,其中,包括如下步驟:
將目標數(shù)據(jù)經(jīng)過數(shù)據(jù)路由系統(tǒng)從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)到與遠程目標系統(tǒng)對應的消息隊列中;
所述消息隊列將所述目標數(shù)據(jù)推送到對應的遠程目標系統(tǒng);和
所述遠程目標系統(tǒng)接收所述消息隊列推送的所述目標數(shù)據(jù),并寫入本地數(shù)據(jù)庫中。
優(yōu)選地,將目標數(shù)據(jù)經(jīng)過數(shù)據(jù)路由系統(tǒng)從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)到與遠程目標系統(tǒng)對應的消息隊列中之前還包括:
在消息中間件中建立與目標系統(tǒng)匹配的消息隊列,并為每個消息隊列設(shè)置數(shù)據(jù)接口。
優(yōu)選地,將目標數(shù)據(jù)經(jīng)過數(shù)據(jù)路由系統(tǒng)從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)到與遠程目標系統(tǒng)對應的消息隊列中,具體包括:
將目標數(shù)據(jù)寫入與遠程目標系統(tǒng)對應的消息隊列中;和
根據(jù)目標系統(tǒng)和對應的消息隊列,配置與其對應的數(shù)據(jù)接口。
優(yōu)選地,所述消息隊列將所述目標數(shù)據(jù)推送到對應的遠程目標系統(tǒng),具體包括:
檢測所述消息隊列中是否有目標數(shù)據(jù),如果有需要推送的目標數(shù)據(jù),通過所述消息隊列的數(shù)據(jù)接口向?qū)哪繕讼到y(tǒng)輸出所述的目標數(shù)據(jù)。
優(yōu)選地,所述目標數(shù)據(jù)包括運單數(shù)據(jù),或所述遠程目標系統(tǒng)包括遠程分揀中心。
優(yōu)選地,所述運單數(shù)據(jù)包括運單號和至少一個目標系統(tǒng)的數(shù)據(jù)。
為了解決上述技術(shù)問題,根據(jù)本發(fā)明的另一個方面,本發(fā)明提供了一種基于消息路由方式的數(shù)據(jù)同步系統(tǒng),其中,包括:
消息中間件集群,用于為不同的目標系統(tǒng)建立相應的消息隊列,并將隊列中的目標數(shù)據(jù)推送到相應的目標系統(tǒng);
數(shù)據(jù)路由系統(tǒng),與所述消息中間件集群相連接,用于將需要同步到目標系統(tǒng)的目標數(shù)據(jù)從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)到所述消息中間件集群中對應的消息隊列中;和
目標系統(tǒng),用于接收所述消息中間件集群推送的、與其對應的消息隊列中的目標數(shù)據(jù),并將所述目標數(shù)據(jù)寫入相應的數(shù)據(jù)庫。
優(yōu)選地,所述消息中間件集群包括:
多個消息隊列,分別與對應的目標系統(tǒng)連接,用于存放從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)的目標數(shù)據(jù);
消息中間件接口,與所述數(shù)據(jù)路由系統(tǒng)相連接,用于將數(shù)據(jù)路由系統(tǒng)轉(zhuǎn)發(fā)來的目標數(shù)據(jù)寫入相應的消息隊列;和
多個消息隊列數(shù)據(jù)接口,分別與對應的消息隊列相連接,用于從對應的消息隊列中取出目標數(shù)據(jù),并推送給相應的目標系統(tǒng)。
優(yōu)選地,所述目標系統(tǒng)至少為一個,且包括:
數(shù)據(jù)庫,用于存儲從數(shù)據(jù)源系統(tǒng)下發(fā)的目標數(shù)據(jù);和
數(shù)據(jù)接口,與所述數(shù)據(jù)庫相連接,用于接收所述消息中間件集群推 送的目標數(shù)據(jù),并將其寫入到所述數(shù)據(jù)庫中。
優(yōu)選地,基于消息路由方式的數(shù)據(jù)同步系統(tǒng)還包括:
數(shù)據(jù)源系統(tǒng),用于產(chǎn)生需要同步到目標系統(tǒng)的目標數(shù)據(jù),并將所述目標數(shù)據(jù)發(fā)送給數(shù)據(jù)路由系統(tǒng)。
本發(fā)明通過消息中間件自身所具有的消息消費失敗重試功能,可以在網(wǎng)絡(luò)波動后繼續(xù)從中斷點傳輸運單數(shù)據(jù),保證數(shù)據(jù)不丟失。即使出現(xiàn)數(shù)據(jù)庫物理機損壞的情況下,也能在新機數(shù)據(jù)庫啟動后從斷點續(xù)傳數(shù)據(jù),提高了數(shù)據(jù)同步的可靠性。
通過消息中間件集群上的多個區(qū)域的消息隊列代替進行數(shù)據(jù)庫復制的機器,有效降低系統(tǒng)部署成本。
附圖說明
通過參照以下附圖對本發(fā)明實施例的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)點將更為清楚,在附圖中:
圖1為現(xiàn)有技術(shù)中數(shù)據(jù)同步的原理結(jié)構(gòu)示意圖;
圖2為本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步系統(tǒng)的原理結(jié)構(gòu)示意圖;
圖3為本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步方法的流程圖;
圖4為本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步系統(tǒng)一實施例的原理結(jié)構(gòu)示意圖;
圖5為本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步方法的實施例的流程圖;和
圖6為本發(fā)明一實施例中的數(shù)據(jù)同步的原理結(jié)構(gòu)示意圖。
具體實施方式
以下基于實施例對本發(fā)明進行描述,但是本發(fā)明并不僅僅限于這些實施例。在下文對本發(fā)明的細節(jié)描述中,詳盡描述了一些特定的細節(jié)部分。對本領(lǐng)域技術(shù)人員來說沒有這些細節(jié)部分的描述也可以完全理解本發(fā)明。為了避免混淆本發(fā)明的實質(zhì),公知的方法、過程、流程沒有詳細敘述。另外附圖不一定是按比例繪制的。
附圖中的流程圖、框圖圖示了本發(fā)明實施例的系統(tǒng)、方法、裝置的可能的體系框架、功能和操作,流程圖和框圖上的方框可以代表一個模塊、程序段或僅僅是一段代碼,所述模塊、程序段和代碼都是用來實現(xiàn)規(guī)定邏輯功能的可執(zhí)行指令。也應當注意,所述實現(xiàn)規(guī)定邏輯功能的可執(zhí)行指令可以重新組合,從而生成新的模塊和程序段。因此附圖的方框以及方框順序只是用來更好的圖示實施例的過程和步驟,而不應以此作為對發(fā)明本身的限制。
如圖2所示,本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步系統(tǒng)的原理結(jié)構(gòu)示意圖;所述系統(tǒng)包括數(shù)據(jù)路由系統(tǒng)1、消息中間件集群2和目標系統(tǒng)3。其中,所述消息中間件集群2用于為不同的目標系統(tǒng)3建立相應的消息隊列,并將隊列中的目標數(shù)據(jù)推送到相應的目標系統(tǒng)3;所述數(shù)據(jù)路由系統(tǒng)1與所述消息中間件集群2相連接,用于將需要同步到目標系統(tǒng)3的目標數(shù)據(jù)從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)到所述消息中間件集群2中對應的消息隊列中;所述目標系統(tǒng)3用于接收所述消息中間件集群推送的的目標數(shù)據(jù),并將所述目標數(shù)據(jù)寫入相應的數(shù)據(jù)庫。
其中,基于圖2所示系統(tǒng)的數(shù)據(jù)同步方法的流程圖如圖3所示。
步驟s1,數(shù)據(jù)路由系統(tǒng)將目標數(shù)據(jù)經(jīng)過數(shù)據(jù)路由系統(tǒng)從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)到與遠程目標系統(tǒng)對應的消息隊列中;
步驟s2,所述消息隊列將所述目標數(shù)據(jù)推送到對應的遠程目標系統(tǒng);和
步驟s3,所述遠程目標系統(tǒng)接收所述消息隊列推送的所述目標數(shù)據(jù),并寫入本地數(shù)據(jù)庫中。
本發(fā)明引入消息中間件,利用消息中間件自身所具有的消息消費失敗重試功能,可以在網(wǎng)絡(luò)波動后繼續(xù)從中斷點傳輸數(shù)據(jù),保證數(shù)據(jù)不丟失。即使出現(xiàn)數(shù)據(jù)庫物理損壞的情況下,也能在新數(shù)據(jù)庫啟動后從斷點續(xù)傳數(shù)據(jù)。降低數(shù)據(jù)庫恢復成本、及對支持人員的技術(shù)要求。并且,消息中間件集群上的多個區(qū)域的消息隊列代替了進行數(shù)據(jù)庫復制的機器,通過軟件的方式替代了高性能物理機,從而有效降低系統(tǒng)部署成本。在通常使用數(shù)據(jù)庫復制技術(shù)的情況時,數(shù)據(jù)源系統(tǒng)需要將數(shù)據(jù)寫入多個區(qū)域主庫中,主庫需要有備機,如果是10個區(qū)域就需要有20臺高性能服 務(wù)器。對于消息隊列集群來說只需要10臺服務(wù)器就夠了,物理機器減少一半,減少了成本。
以下通過具體實施例對本發(fā)明上述的技術(shù)方案進行詳細說明。如圖4所示,本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步系統(tǒng)一實施例的原理結(jié)構(gòu)示意圖,圖5為本發(fā)明所述基于消息路由方式的數(shù)據(jù)同步方法的實施例的流程圖。結(jié)合圖4和圖5,本實施例中的數(shù)據(jù)同步系統(tǒng)的具體結(jié)構(gòu)如下:
所述消息中間件集群2包括消息中間件接口21、多個消息隊列22和多個與其相匹配的消息隊列數(shù)據(jù)接口23。其中,消息中間件接口21與所述數(shù)據(jù)路由系統(tǒng)1相連接,用于將數(shù)據(jù)路由系統(tǒng)1轉(zhuǎn)發(fā)來的目標數(shù)據(jù)寫入相應的消息隊列;每一個消息隊列對應一個目標系統(tǒng),用于存放從數(shù)據(jù)源系統(tǒng)轉(zhuǎn)發(fā)的目標數(shù)據(jù);每一個消息隊列連接一個數(shù)據(jù)接口23,通過數(shù)據(jù)接口23從對應的消息隊列中取出目標數(shù)據(jù),并推送給相應的目標系統(tǒng)。
所述目標系統(tǒng)3包括數(shù)據(jù)接口31和數(shù)據(jù)庫32,所述目標系統(tǒng)3通過數(shù)據(jù)接口31接收所述消息中間件集群2推送的目標數(shù)據(jù),并將其寫入到所述數(shù)據(jù)庫32中。
步驟s1a,在消息中間件集群2中建立與目標系統(tǒng)相匹配的消息隊列,并為每個消息隊列設(shè)置數(shù)據(jù)接口。
步驟s2a,將目標數(shù)據(jù)轉(zhuǎn)發(fā)到與遠程目標系統(tǒng)3對應的消息隊列22中。
步驟s3a,配置消息隊列數(shù)據(jù)接口23。也就是給接口指定需要消費的隊列,不同的遠程系統(tǒng)消費的隊列不同,所以配置也不同。例如,不同的消息隊列,命名不同,以便于區(qū)分。
步驟s4a,判斷所述消息隊列22中是否有數(shù)據(jù)需要同步,如果有,轉(zhuǎn)向步驟s5a。
步驟s5a,所述消息隊列22將所述目標數(shù)據(jù)通過消息隊列數(shù)據(jù)接口23推送到對應的遠程目標系統(tǒng)3。
步驟s6a,所述遠程目標系統(tǒng)3通過數(shù)據(jù)接口31接收所述目標數(shù)據(jù),并寫入本地數(shù)據(jù)庫32中或發(fā)送到其他目標系統(tǒng)。
如圖6所示,為本發(fā)明一實施例中的數(shù)據(jù)同步的原理結(jié)構(gòu)示意圖。在本實施例中,需要將運單數(shù)據(jù)從交易系統(tǒng)同步到不同的分揀中心a和分揀中心b中。本發(fā)明中所述的數(shù)據(jù)同步系統(tǒng)包括消息中間件集群、數(shù)據(jù)路由器、遠程分揀中心(用于進行數(shù)據(jù)接收的目標系統(tǒng))、本地數(shù)據(jù)庫a和數(shù)據(jù)庫b。
其中,分揀中心是物流行業(yè)運作的經(jīng)濟活動組織,是集加工、理貨、送貨等多種職能于一體的物流據(jù)點。
消息中間件利用高效、可靠的消息傳遞機制進行與平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環(huán)境下擴展進程間的通信。在本發(fā)明中,消息中間件集群負責維持與遠程分揀中心對應的消息隊列,接收運單數(shù)據(jù)并下發(fā)數(shù)據(jù)到遠程分揀中心。比如給分揀中心a建立消息隊列dmsdataqueuea,給分揀中心b建立消息隊列dmsdataqueueb。
數(shù)據(jù)路由器負責接收并轉(zhuǎn)發(fā)運單數(shù)據(jù)(包含運單號、目的地、始發(fā)分揀中心a、目的分揀中心b)到與遠程分揀中心對應的消息隊列dmsdataqueuea、dmsdataqueueb中。其中,所述運單數(shù)據(jù)是指一個訂單在配送階段需要的信息,比如運單號、配送站點、始發(fā)分揀中心、目的分揀中心、收貨人、收貨地址、運輸類型、配送方式等信息。這些數(shù)據(jù)用于各個配送節(jié)點的狀態(tài)識別與校驗。包裹出庫后,始發(fā)分揀中心和目的分揀中心各需要現(xiàn)場分揀一次,所以兩個分揀中心都需要同步運單數(shù)據(jù)。從功能上來說,始發(fā)分揀中心、目的分揀中心是用來確定消費分配到哪個隊列中去。而運單其余的字段的信息是分揀中心現(xiàn)場操作里使用的,比如里面的配送站點信息用于現(xiàn)場包裹分堆。
遠程分揀中心,也就是目標系統(tǒng),提供與消息中間件集群交互的接口,接收消息隊列推送數(shù)據(jù),并寫入本地數(shù)據(jù)庫中。
運單數(shù)據(jù)的同步流程具體如下:
交易系統(tǒng)將運單數(shù)據(jù)輸出給數(shù)據(jù)路由器,數(shù)據(jù)路由器根據(jù)運單系統(tǒng)中的始發(fā)分揀中心、目的分揀中心的標識,調(diào)用消息中間件接口,將相應的數(shù)據(jù)分別寫入隊列dmsdataqueuea、dmsdataqueueb中。
在消息中間件中配置分揀中心a接口datareceiver()來消費隊列 dmsdataqueuea的數(shù)據(jù)。分揀中心b接口datareceiver()來消費隊列dmsdataqueueb的數(shù)據(jù)。也就是說,指定datareceiver()消費哪個隊列的數(shù)據(jù)。
當消息中間件集群檢測到隊列dmsdataqueuea中有數(shù)據(jù),調(diào)用分揀中心a接口datareceiver(),輸出隊列中運單數(shù)據(jù)。分揀中心a將數(shù)據(jù)存入本地數(shù)據(jù)庫中完成數(shù)據(jù)同步。同理,當消息中間件集群檢測到隊列dmsdataqueueb中有數(shù)據(jù),調(diào)用分揀中心b接口datareceiver(),輸出隊列中運單數(shù)據(jù)。分揀中心b將數(shù)據(jù)存入本地數(shù)據(jù)庫中完成數(shù)據(jù)同步。
實物包裹到達分揀中心a,分揀中心a的掃描設(shè)備掃描包裹標簽,根據(jù)本地數(shù)據(jù)庫中獲得的運單數(shù)據(jù),判斷得知該包裹需要路由到分揀中心b。則將包裹運往分揀中心b。
分揀中心b接收到包裹,掃描包裹標簽,從數(shù)據(jù)庫b中獲得運單數(shù)據(jù),根據(jù)目的地進行配送。
以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。