專利名稱:用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng)和數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù)領(lǐng)域,具體而言,涉及用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng)和數(shù)據(jù)傳輸方法。
背景技術(shù):
在分布部署的企業(yè)應(yīng)用系統(tǒng)之間要進(jìn)行通訊,存在著許多問(wèn)題,其中最重要的問(wèn)題之一是這些軟件系統(tǒng)之間由于從屬不同企業(yè)組織、遠(yuǎn)距離等原因而帶來(lái)在運(yùn)行狀態(tài)、網(wǎng)絡(luò)連接狀態(tài)的獨(dú)立性,這種獨(dú)立性意味著這些需要互相通訊的系統(tǒng)有可能并不是都同時(shí)處于運(yùn)行狀態(tài)或者連通狀態(tài)(比如停機(jī)維護(hù)等)。這類企業(yè)應(yīng)用系統(tǒng)間的數(shù)據(jù)交換通常都具有數(shù)據(jù)量大、通訊持續(xù)時(shí)間長(zhǎng)等特點(diǎn),因而在這樣的場(chǎng)景中直接采用傳統(tǒng)的面向連接的通訊方案(如TCP、HTTP)實(shí)現(xiàn)企業(yè)應(yīng)用系統(tǒng)間的業(yè)務(wù)數(shù)據(jù)交換會(huì)面臨很大復(fù)雜度和開(kāi)發(fā)風(fēng)險(xiǎn),因?yàn)橥ㄓ嵉碾p方的部署特性而無(wú)法一致地維持著良好的連接性。
基于發(fā)布/訂閱模型的消息通訊方案相對(duì)于傳統(tǒng)的面向連接的通訊方案,天然地具備了將通訊的發(fā)送、接收雙方分離的特點(diǎn),使得發(fā)送方和接收方之間得到解耦:發(fā)送方將數(shù)據(jù)發(fā)送到特定的主題而不用管接收方何時(shí)接收;而接收方可在任意合適的時(shí)候從其關(guān)注的主題中接收數(shù)據(jù)。
目前,典型的基于發(fā)布/訂閱模型的消息通訊方案就是采用消息中間件作為通訊基礎(chǔ)設(shè)施,然而直接在消息中間件之上進(jìn)行業(yè)務(wù)數(shù)據(jù)通訊仍面臨著諸多困難。消息中間件單一地以消息作為載體與業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作的多樣性之間形成矛盾,這種矛盾產(chǎn)生的問(wèn)題包括:1、在消息流中區(qū)分業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作的邊界的問(wèn)題;2、大數(shù)據(jù)量傳輸?shù)氖聞?wù)問(wèn)題;3、群集部署的接收方的接收處理問(wèn)題。
1、在消息流中區(qū)分業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作的邊界的問(wèn)題
典型的消息中間件對(duì)于一個(gè)消息的大小都是有限制的,一次業(yè)務(wù)操作的數(shù)據(jù)通常都由于數(shù)據(jù)量大小的問(wèn)題無(wú)法只用一個(gè)消息就完成傳輸,需要分成多個(gè)消息進(jìn)行?;谙⒅虚g件都需要面臨的一個(gè)問(wèn)題就是將業(yè)務(wù)數(shù)據(jù)分解為多個(gè)消息發(fā)送并能夠在接收方重新組合,并且能夠區(qū)分不同業(yè)務(wù)操作發(fā)起的同一種業(yè)務(wù)數(shù)據(jù)類型的多次傳輸。這就是所謂業(yè)務(wù)數(shù)據(jù)邊界和業(yè)務(wù)操作邊界,即一次業(yè)務(wù)操作和業(yè)務(wù)數(shù)據(jù)與承載了這些信息的多個(gè)消息的對(duì)應(yīng)關(guān)系。
在一次通訊過(guò)程中,發(fā)送方的業(yè)務(wù)數(shù)據(jù)會(huì)按照消息中間件定義的消息格式生成一系列的消息并通過(guò)消息中間件發(fā)送出去,接收方訂閱接收到消息之后需要從大量的消息中重新識(shí)別出其中包含的業(yè)務(wù)數(shù)據(jù)和對(duì)應(yīng)的業(yè)務(wù)操作。
現(xiàn)有的在消息中區(qū)分業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作邊界的方法就是:
(I)將業(yè)務(wù)類別標(biāo)識(shí)符加到消息中,發(fā)送方在發(fā)送數(shù)據(jù)時(shí),將消息打上標(biāo)識(shí),并按順序發(fā)送給消息中間件。
(2)接收方在從中間件訂閱收到的每一個(gè)消息時(shí)根據(jù)消息中的標(biāo)識(shí)符對(duì)消息分類進(jìn)行業(yè)務(wù)處理。
具體地,如圖1所示,用戶通過(guò)操作A將多個(gè)數(shù)據(jù)消息A1A2A3按順序發(fā)送至A系統(tǒng),并通過(guò)操作B將多個(gè)數(shù)據(jù)消息B1B2B3按順序發(fā)送至A系統(tǒng),然后由A系統(tǒng)按照預(yù)定的順序,如采用A1B1A2B2A3B3將多個(gè)數(shù)據(jù)消息發(fā)送至消息中間件。然后,B系統(tǒng)按照相同的順序,比如A1B1A2B2A3B3從消息中間件獲取多個(gè)數(shù)據(jù)消息,并按照每個(gè)操作對(duì)應(yīng)的數(shù)據(jù)消息,分為A1A2A3和B1B2B3后分別用于處理A和處理B。
上述方法依賴于消息中間件的隊(duì)列中消息順序的保證,接收方對(duì)消息的處理以順序接收為前提。這種方式存在以下的限制或問(wèn)題:
(I)發(fā)送方需要保證消息發(fā)送順序而無(wú)法并發(fā)發(fā)送;
(2)接收方的處理以順序接收為前提而無(wú)法支持并發(fā)接收處理;
(3)在每一個(gè)消息上的都需要加上了描述數(shù)據(jù)的業(yè)務(wù)屬性以及相關(guān)消息的標(biāo)識(shí)符的業(yè)務(wù)邊界識(shí)別方法增大了在網(wǎng)絡(luò)傳輸中非業(yè)務(wù)數(shù)據(jù)的冗余。
2、大數(shù)據(jù)量傳輸完整性問(wèn)題
傳輸完整性是指將一個(gè)業(yè)務(wù)操作數(shù)據(jù)的多個(gè)消息一起發(fā)送出去,如果全部消息都成功,則全部消息一起得到處理時(shí),如果存在失敗的消息,則已經(jīng)發(fā)送的消息最終會(huì)被忽略不做處理。
為了保證一次業(yè)務(wù)操作的數(shù)據(jù)都能完整地傳輸,現(xiàn)有的做法是將一次業(yè)務(wù)操作的所有數(shù)據(jù)生成的全部消息都在同一個(gè)由消息中間件定義和提供的事務(wù)中發(fā)送出去。然而這種依賴于消息中間件事務(wù)來(lái)保證完整性的方式會(huì)受到內(nèi)存的限制,如果數(shù)據(jù)量過(guò)大(如GB級(jí)以上)將會(huì)大量占用內(nèi)存而導(dǎo)致消息中間件的崩潰。
3、群集部署的接收方的接收處理問(wèn)題
在企業(yè)應(yīng)用中,以群集部署應(yīng)用系統(tǒng)來(lái)分擔(dān)單臺(tái)服務(wù)器壓力以提高整個(gè)應(yīng)用系統(tǒng)的吞吐量和處理能力是很常見(jiàn)的實(shí)施方案。在群集部署中,邏輯上的一個(gè)應(yīng)用系統(tǒng)在物理上是兩個(gè)以上的運(yùn)行于同一臺(tái)服務(wù)器或者不同服務(wù)器上的進(jìn)程,應(yīng)用系統(tǒng)的處理請(qǐng)求被按照某種特定的規(guī)則被均衡地分配給不同的進(jìn)程實(shí)例來(lái)處理。
按照問(wèn)題I所述的現(xiàn)有的實(shí)現(xiàn)方法在群集部署的場(chǎng)景中,由于同一業(yè)務(wù)操作的多個(gè)消息都可能會(huì)在同一個(gè)系統(tǒng)的不同進(jìn)程實(shí)例接收并觸發(fā)業(yè)務(wù)處理。如果不加額外的進(jìn)程間并行處理機(jī)制,系統(tǒng)的每一個(gè)進(jìn)程實(shí)例都由于無(wú)法收到完整的消息而未能完成業(yè)務(wù)處理。而要施加額外的進(jìn)程間并發(fā)控制的機(jī)制確帶來(lái)不小的復(fù)雜度,同時(shí)也會(huì)增加系統(tǒng)實(shí)現(xiàn)風(fēng)險(xiǎn)和成本。
因此,需要一種新的數(shù)據(jù)傳輸技術(shù),以期解決上述多個(gè)問(wèn)題中的至少之一。發(fā)明內(nèi)容
本發(fā)明正是基于上述問(wèn)題,提出了一種新的數(shù)據(jù)傳輸技術(shù),可以不依賴于具體的消息中間件,從而實(shí)現(xiàn)異步的、松耦合的分布式數(shù)據(jù)傳輸,具有良好的可移植性,能夠有效降低系統(tǒng)實(shí)現(xiàn)的復(fù)雜性,尤其是解決了在大數(shù)據(jù)量和集群環(huán)境下的常見(jiàn)內(nèi)存問(wèn)題、并發(fā)問(wèn)題。
有鑒于此,本發(fā)明提出了一種用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),包括發(fā)送方和接收方,其中,所述發(fā)送方包括:數(shù)據(jù)拆分單元,用于將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)消息;消息生成單元,用于生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息;數(shù)據(jù)發(fā)送單元,用于將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)控制消息來(lái)對(duì)數(shù)據(jù)消息的傳輸進(jìn)行控制,從而脫離了對(duì)具體的消息中間件的依賴,有利于降低對(duì)系統(tǒng)實(shí)現(xiàn)的復(fù)雜性。
在上述技術(shù)方案中,優(yōu)選地,所述發(fā)送方還包括:標(biāo)識(shí)添加單元,用于為每個(gè)所述數(shù)據(jù)消息添加相應(yīng)的唯一標(biāo)識(shí);其中,所述控制消息中包含每個(gè)所述數(shù)據(jù)消息的唯一標(biāo)識(shí)、所述多個(gè)數(shù)據(jù)消息的排列順序以及對(duì)所述多個(gè)數(shù)據(jù)消息的處理方式。在該技術(shù)方案中,通過(guò)為每個(gè)數(shù)據(jù)包添加唯一標(biāo)識(shí),使得可以根據(jù)控制消息中記錄的數(shù)據(jù)包的排列順序、處理方式等信息,對(duì)數(shù)據(jù)包進(jìn)行妥善處理。
在上述技術(shù)方案中,優(yōu)選地,所述數(shù)據(jù)發(fā)送單元采用非事務(wù)連接方式向所述消息中間件發(fā)送所述數(shù)據(jù)消息和所述控制消息。在該技術(shù)方案中,通過(guò)采用非事務(wù)連接方式進(jìn)行消息發(fā)送,從而避免消息中間件因大數(shù)據(jù)量而致內(nèi)存崩潰,同時(shí)也避免對(duì)特定的消息中間件產(chǎn)生依賴。
在上述技術(shù)方案中,優(yōu)選地,所述接收方還包括:消息獲取單元,用于從所述消息中間件中獲取數(shù)據(jù)消息和控制消息;消息存儲(chǔ)單元,用于對(duì)所述數(shù)據(jù)消息和所述控制消息進(jìn)行記錄和存儲(chǔ);消息解析單元,用于對(duì)所述消息存儲(chǔ)單元中存儲(chǔ)的指定控制消息進(jìn)行解析,以獲取所述指定控制消息中包含的標(biāo)識(shí)、排列順序和處理方式;消息處理單元,用于將所述標(biāo)識(shí)與存儲(chǔ)的數(shù)據(jù)消息的唯一標(biāo)識(shí)進(jìn)行匹配,以確定對(duì)應(yīng)于所述指定控制消息的指定數(shù)據(jù)消息,并根據(jù)所述排列順序和所述處理方式,對(duì)所述指定數(shù)據(jù)消息進(jìn)行處理。在該技術(shù)方案中,接收方可以直接接收任意消息,然后根據(jù)需要進(jìn)行挑選和處理,而無(wú)需在接收的過(guò)程中進(jìn)行數(shù)據(jù)包的選擇等,避免數(shù)據(jù)阻塞,提高數(shù)據(jù)傳輸效率。
在上述技術(shù)方案中,優(yōu)選地,所述發(fā)送方還包括:信息添加單元,用于在所述控制消息中添加觸發(fā)指示信息;所述接收方還包括:事件觸發(fā)單元,用于根據(jù)從所述控制消息中解析出的觸發(fā)指示信息觸發(fā)指定的事件,以處理所述控制消息對(duì)應(yīng)的數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)添加觸發(fā)指示信息,使得接收方可以據(jù)此觸發(fā)指定的事件,有利于數(shù)據(jù)處理的連續(xù)性。
根據(jù)本發(fā)明的又一方面,還提出了一種用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法,包括:步驟302,發(fā)送方將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)消息;步驟304,所述發(fā)送方生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息;步驟306,所述發(fā)送方將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)控制消息來(lái)對(duì)數(shù)據(jù)消息的傳輸進(jìn)行控制,從而脫離了對(duì)具體的消息中間件的依賴,有利于降低對(duì)系統(tǒng)實(shí)現(xiàn)的復(fù)雜性。
在上述技術(shù)方案中,優(yōu)選地,所述步驟302還包括:為每個(gè)所述數(shù)據(jù)消息添加相應(yīng)的唯一標(biāo)識(shí);以及所述步驟304還包括:所述控制消息中包含每個(gè)所述數(shù)據(jù)消息的唯一標(biāo)識(shí)、所述多個(gè)數(shù)據(jù)消息的排列順序以及對(duì)所述多個(gè)數(shù)據(jù)消息的處理方式。在該技術(shù)方案中,通過(guò)為每個(gè)數(shù)據(jù)包添加唯一標(biāo)識(shí),使得可以根據(jù)控制消息中記錄的數(shù)據(jù)包的排列順序、處理方式等信息,對(duì)數(shù)據(jù)包進(jìn)行妥善處理。
在上述技術(shù)方案中,優(yōu)選地,所述發(fā)送方采用非事務(wù)連接方式向所述消息中間件發(fā)送所述數(shù)據(jù)消息和所述控制消息。在該技術(shù)方案中,通過(guò)采用非事務(wù)連接方式進(jìn)行消息發(fā)送,從而避免消息中間件因大數(shù)據(jù)量而致內(nèi)存崩潰,同時(shí)也避免對(duì)特定的消息中間件產(chǎn)生依賴。
在上述技術(shù)方案中,優(yōu)選地,所述步驟306之后,還包括:步驟308,所述接收方從所述消息中間件中獲取數(shù)據(jù)消息和控制消息,并對(duì)其進(jìn)行記錄和存儲(chǔ);步驟310,所述接收方根據(jù)從指定控制消息中解析出的標(biāo)識(shí),與存儲(chǔ)的數(shù)據(jù)消息的唯一標(biāo)識(shí)進(jìn)行匹配,以確定對(duì)應(yīng)于所述指定控制消息的指定數(shù)據(jù)消息;步驟312,所述接收方根據(jù)從所述指定控制消息中解析出的排列順序和處理方式,對(duì)所述指定數(shù)據(jù)消息進(jìn)行處理。在該技術(shù)方案中,接收方可以直接接收任意消息,然后根據(jù)需要進(jìn)行挑選和處理,而無(wú)需在接收的過(guò)程中進(jìn)行數(shù)據(jù)包的選擇等,避免數(shù)據(jù)阻塞,提高數(shù)據(jù)傳輸效率。
在上述技術(shù)方案中,優(yōu)選地,還包括:所述發(fā)送方還在所述控制消息中添加觸發(fā)指示信息;以及所述接收方還根據(jù)從所述控制消息中解析出的觸發(fā)指示信息觸發(fā)指定的事件,以處理所述控制消息對(duì)應(yīng)的數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)添加觸發(fā)指示信息,使得接收方可以據(jù)此觸發(fā)指定的事件,有利于數(shù)據(jù)處理的連續(xù)性。
通過(guò)以上技術(shù)方案,可以不依賴于具體的消息中間件,從而實(shí)現(xiàn)異步的、松耦合的分布式數(shù)據(jù)傳輸,具有良好的可移植性,能夠有效降低系統(tǒng)實(shí)現(xiàn)的復(fù)雜性,尤其是解決了在大數(shù)據(jù)量和集群環(huán)境下的常見(jiàn)內(nèi)存問(wèn)題、并發(fā)問(wèn)題。
圖1示出了相關(guān)技術(shù)中的數(shù)據(jù)傳輸?shù)氖疽鈭D2示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)傳輸系統(tǒng)的框圖3示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)傳輸方法的流程圖4A示出了根據(jù)本發(fā)明的實(shí)施例的發(fā)送方將數(shù)據(jù)傳輸至消息中間件的示意圖4B示出了根據(jù)本發(fā)明的實(shí)施例的接收方從消息中間件獲取和處理數(shù)據(jù)的示意圖5示出了根據(jù)本發(fā)明的實(shí)施例的發(fā)送方對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行拆分的示意圖6示出了根據(jù)本發(fā)明的實(shí)施例的發(fā)送方生成的控制消息的構(gòu)成示意圖7示出了根據(jù)本發(fā)明的實(shí)施例的發(fā)送方發(fā)送數(shù)據(jù)的流程圖8示出了根據(jù)本發(fā)明的實(shí)施例的接收方接收數(shù)據(jù)的流程圖9示出了根據(jù)本發(fā)明的實(shí)施例的發(fā)送方和接收方雙向傳輸數(shù)據(jù)的流程圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開(kāi)的具體實(shí)施例的限制。
圖2示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)傳輸系統(tǒng)的框圖。
如圖2所示,根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)傳輸系統(tǒng)200,包括發(fā)送方202和接收方206,其中,所述發(fā)送方202包括:數(shù)據(jù)拆分單元2020,用于將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)消息;消息生成單元2022,用于生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息;數(shù)據(jù)發(fā)送單元2024,用于將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方206進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)控制消息來(lái)對(duì)數(shù)據(jù)消息的傳輸進(jìn)行控制,從而脫離了對(duì)具體的消息中間件的依賴,有利于降低對(duì)系統(tǒng)實(shí)現(xiàn)的復(fù)雜性。
在上述技術(shù)方案中,優(yōu)選地,所述發(fā)送方202還包括:標(biāo)識(shí)添加單元2026,用于為每個(gè)所述數(shù)據(jù)消息添加相應(yīng)的唯一標(biāo)識(shí);其中,所述控制消息中包含每個(gè)所述數(shù)據(jù)消息的唯一標(biāo)識(shí)、所述多個(gè)數(shù)據(jù)消息的排列順序以及對(duì)所述多個(gè)數(shù)據(jù)消息的處理方式。在該技術(shù)方案中,通過(guò)為每個(gè)數(shù)據(jù)包添加唯一標(biāo)識(shí),使得可以根據(jù)控制消息中記錄的數(shù)據(jù)包的排列順序、處理方式等信息,對(duì)數(shù)據(jù)包進(jìn)行妥善處理。
在上述技術(shù)方案中,優(yōu)選地,所述數(shù)據(jù)發(fā)送單元2024采用非事務(wù)連接方式向所述消息中間件發(fā)送所述數(shù)據(jù)消息和所述控制消息。在該技術(shù)方案中,通過(guò)采用非事務(wù)連接方式進(jìn)行消息發(fā)送,從而避免消息中間件因大數(shù)據(jù)量而致內(nèi)存崩潰,同時(shí)也避免對(duì)特定的消息中間件產(chǎn)生依賴。
在上述技術(shù)方案中,優(yōu)選地,所述接收方206還包括:消息獲取單元2060,用于從所述消息中間件中獲取數(shù)據(jù)消息和控制消息;消息存儲(chǔ)單元2062,用于對(duì)所述數(shù)據(jù)消息和所述控制消息進(jìn)行記錄和存儲(chǔ);消息解析單元2064,用于對(duì)所述消息存儲(chǔ)單元2062中存儲(chǔ)的指定控制消息進(jìn)行解析,以獲取所述指定控制消息中包含的標(biāo)識(shí)、排列順序和處理方式;消息處理單元2066,用于將所述標(biāo)識(shí)與存儲(chǔ)的數(shù)據(jù)消息的唯一標(biāo)識(shí)進(jìn)行匹配,以確定對(duì)應(yīng)于所述指定控制消息的指定數(shù)據(jù)消息,并根據(jù)所述排列順序和所述處理方式,對(duì)所述指定數(shù)據(jù)消息進(jìn)行處理。在該技術(shù)方案中,接收方206可以直接接收任意消息,然后根據(jù)需要進(jìn)行挑選和處理,而無(wú)需在接收的過(guò)程中進(jìn)行數(shù)據(jù)包的選擇等,避免數(shù)據(jù)阻塞,提高數(shù)據(jù)傳輸效率。
在上述技術(shù)方案中,優(yōu)選地,所述發(fā)送方202還包括:信息添加單元2028,用于在所述控制消息中添加觸發(fā)指示信息;所述接收方206還包括:事件觸發(fā)單元2068,用于根據(jù)從所述控制消息中解析出的觸發(fā)指示信息觸發(fā)指定的事件,以處理所述控制消息對(duì)應(yīng)的數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)添加觸發(fā)指示信息,使得接收方可以據(jù)此觸發(fā)指定的事件,有利于數(shù)據(jù)處理的連續(xù)性。
圖3示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)傳輸方法的流程圖。
如圖3所示,根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)傳輸方法,包括:步驟302,發(fā)送方將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)消息;步驟304,所述發(fā)送方生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息;步驟306,所述發(fā)送方將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)控制消息來(lái)對(duì)數(shù)據(jù)消息的傳輸進(jìn)行控制,從而脫離了對(duì)具體的消息中間件的依賴,有利于降低對(duì)系統(tǒng)實(shí)現(xiàn)的復(fù)雜性。
在上述技術(shù)方案中,優(yōu)選地,所述步驟302還包括:為每個(gè)所述數(shù)據(jù)消息添加相應(yīng)的唯一標(biāo)識(shí);以及所述步驟304還包括:所述控制消息中包含每個(gè)所述數(shù)據(jù)消息的唯一標(biāo)識(shí)、所述多個(gè)數(shù)據(jù)消息的排列順序以及對(duì)所述多個(gè)數(shù)據(jù)消息的處理方式。在該技術(shù)方案中,通過(guò)為每個(gè)數(shù)據(jù)包添加唯一標(biāo)識(shí),使得可以根據(jù)控制消息中記錄的數(shù)據(jù)包的排列順序、處理方式等信息,對(duì)數(shù)據(jù)包進(jìn)行妥善處理。
在上述技術(shù)方案中,優(yōu)選地,所述發(fā)送方采用非事務(wù)連接方式向所述消息中間件發(fā)送所述數(shù)據(jù)消息和所述控制消息。在該技術(shù)方案中,通過(guò)采用非事務(wù)連接方式進(jìn)行消息發(fā)送,從而避免消息中間件因大數(shù)據(jù)量而致內(nèi)存崩潰,同時(shí)也避免對(duì)特定的消息中間件產(chǎn)生依賴。
在上述技術(shù)方案中,優(yōu)選地,所述步驟306之后,還包括:步驟308,所述接收方從所述消息中間件中獲取數(shù)據(jù)消息和控制消息,并對(duì)其進(jìn)行記錄和存儲(chǔ);步驟310,所述接收方根據(jù)從指定控制消息中解析出的標(biāo)識(shí),與存儲(chǔ)的數(shù)據(jù)消息的唯一標(biāo)識(shí)進(jìn)行匹配,以確定對(duì)應(yīng)于所述指定控制消息的指定數(shù)據(jù)消息;步驟312,所述接收方根據(jù)從所述指定控制消息中解析出的排列順序和處理方式,對(duì)所述指定數(shù)據(jù)消息進(jìn)行處理。在該技術(shù)方案中,接收方可以直接接收任意消息,然后根據(jù)需要進(jìn)行挑選和處理,而無(wú)需在接收的過(guò)程中進(jìn)行數(shù)據(jù)包的選擇等,避免數(shù)據(jù)阻塞,提高數(shù)據(jù)傳輸效率。
在上述技術(shù)方案中,優(yōu)選地,還包括:所述發(fā)送方還在所述控制消息中添加觸發(fā)指示信息;以及所述接收方還根據(jù)從所述控制消息中解析出的觸發(fā)指示信息觸發(fā)指定的事件,以處理所述控制消息對(duì)應(yīng)的數(shù)據(jù)消息。在該技術(shù)方案中,通過(guò)添加觸發(fā)指示信息,使得接收方可以據(jù)此觸發(fā)指定的事件,有利于數(shù)據(jù)處理的連續(xù)性。
圖4A和圖4B共同展現(xiàn)了本發(fā)明中進(jìn)行數(shù)據(jù)傳輸?shù)氖疽鈭D。
實(shí)際上,本發(fā)明通過(guò)改善在消息中標(biāo)識(shí)業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作邊界的方式、改善發(fā)送和接收處理機(jī)制的方式來(lái)解決問(wèn)題,核心思想是將觸發(fā)處理的控制信息單點(diǎn)化,即控制信息由獨(dú)立的消息傳輸,發(fā)送方唯一地以控制消息的發(fā)送作為完整發(fā)送的標(biāo)志而不依賴于通訊基礎(chǔ)設(shè)施的事務(wù),接收方唯一地以收到控制消息作為觸發(fā)業(yè)務(wù)處理的標(biāo)志以解決集群環(huán)境下多點(diǎn)分配的問(wèn)題。其基本特征有:
(I)將消息通過(guò)加入的標(biāo)識(shí)符分為兩類:數(shù)據(jù)消息和控制消息。數(shù)據(jù)消息加入具有唯一性的標(biāo)識(shí)符,指示此消息包含的是業(yè)務(wù)數(shù)據(jù)??刂葡⒓尤胛ㄒ恍缘臉?biāo)識(shí)符指示此消息包含的是作為一次業(yè)務(wù)操作引發(fā)的傳輸中包含的數(shù)據(jù)消息的唯一性標(biāo)識(shí)符列表以及其它指示接收方如何處理的控制信息。
(2)數(shù)據(jù)消息和控制消息各自分開(kāi)獨(dú)立發(fā)送,多個(gè)數(shù)據(jù)消息之間無(wú)需保持順序,數(shù)據(jù)消息與控制消息之間的先后不是必要因素,接收方需要相應(yīng)地進(jìn)行一致的處理。
(3)接收方訂閱接收到消息后,對(duì)于數(shù)據(jù)消息做存儲(chǔ)和記錄,不觸發(fā)業(yè)務(wù)處理,對(duì)于控制消息,則根據(jù)其中記錄的業(yè)務(wù)操作相關(guān)的數(shù)據(jù)消息的唯一標(biāo)識(shí)符從存儲(chǔ)記錄中查找獲取數(shù)據(jù)消息,并觸發(fā)對(duì)應(yīng)的業(yè)務(wù)處理過(guò)程。
依照這三項(xiàng)實(shí)現(xiàn)的傳輸裝置的基本構(gòu)成包括:發(fā)送裝置、接收裝置、消息存儲(chǔ)裝置。
(I)發(fā)送裝置負(fù)責(zé)將業(yè)務(wù)數(shù)據(jù)分解成數(shù)據(jù)消息和控制消息發(fā)送到消息中間件。
(2)接收裝置負(fù)責(zé)在收到數(shù)據(jù)消息或控制消息后保存消息或觸發(fā)業(yè)務(wù)處理。
(3)消息存儲(chǔ)裝置負(fù)責(zé)存儲(chǔ)消息和檢索消息。
當(dāng)然,對(duì)于本發(fā)明中的“消息中間件”,需要說(shuō)明的是:本發(fā)明的通訊機(jī)制是基于消息發(fā)布/訂閱模型,但并不局限于特定的消息中間件,只要是實(shí)現(xiàn)了消息發(fā)布/訂閱模型的基礎(chǔ)通訊設(shè)施都可以作為本發(fā)明的通訊基礎(chǔ)。
那么,基于上述原理,本發(fā)明的數(shù)據(jù)傳輸過(guò)程如下:
如圖4A所示,將數(shù)據(jù)(DATA)傳輸至發(fā)送裝置后,發(fā)送裝置對(duì)數(shù)據(jù)進(jìn)行拆分處理,得到數(shù)據(jù)消息(如圖4A中的Dl、D2、D3)和控制消息(如圖4A中的TC),并將數(shù)據(jù)消息和控制消息發(fā)送至消息中間件。
如圖4B所示,接收裝置從消息中間件獲取所有的數(shù)據(jù)消息和控制消息后,存儲(chǔ)至消息存儲(chǔ)裝置中;然后,根據(jù)控制消息中記錄的信息,確定相應(yīng)的數(shù)據(jù)消息,以對(duì)其進(jìn)行處理。
下面針對(duì)圖4A和圖4B所示的本發(fā)明的數(shù)據(jù)傳輸方案,做出進(jìn)一步的解釋。
1、在消息中標(biāo)識(shí)和識(shí)別業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作邊界的方法
將消息標(biāo)識(shí)為數(shù)據(jù)消息和控制消息兩類是本發(fā)明最主要的特征之一,也是整個(gè)傳輸機(jī)制的實(shí)現(xiàn)基礎(chǔ)。控制消息整個(gè)傳輸機(jī)制中的核心,發(fā)送方以發(fā)出的控制消息標(biāo)識(shí)了數(shù)據(jù)傳輸?shù)耐暾裕邮辗揭允盏娇刂葡⒆鳛檫M(jìn)行業(yè)務(wù)處理的觸發(fā)點(diǎn)。
構(gòu)成控制消息的核心要素包括:
a、能夠表示消息類型為控制消息的標(biāo)識(shí)符;
b、能夠表示數(shù)據(jù)關(guān)聯(lián)的業(yè)務(wù)類型或操作類型的標(biāo)識(shí)符;
C、能夠表示包含業(yè)務(wù)數(shù)據(jù)被分解生成的數(shù)據(jù)消息的唯一標(biāo)識(shí)符的列表。
此外,控制消息還可以加入其它的信息,例如:消息的有效期、是否允許部分處理、處理超時(shí)時(shí)長(zhǎng)、是否順序處理。
構(gòu)成數(shù)據(jù)消息的核心要素是表示數(shù)據(jù)消息唯一性的標(biāo)識(shí),此外,也可以根據(jù)實(shí)現(xiàn)的需要加入其它必要信息。
舉例如下:
如圖5所示,一份需要發(fā)送的業(yè)務(wù)數(shù)據(jù)共計(jì)有1280KB,每個(gè)消息的大小最大限制為512KB。這樣,這份數(shù)據(jù)需要分成3個(gè)數(shù)據(jù)消息進(jìn)行發(fā)送,為每個(gè)數(shù)據(jù)消息進(jìn)行唯一編號(hào),以字母“D”開(kāi)頭,分別編為Dl、D2、D3。對(duì)應(yīng)生成的控制消息的標(biāo)識(shí)符以“TC”開(kāi)頭編號(hào)為“TC001”以唯一標(biāo)識(shí)此次發(fā)送操作,TC001中同時(shí)包含了一個(gè)數(shù)據(jù)消息ID列表“Dl,D2, D3”,表示此次發(fā)送操作共包含了 3個(gè)數(shù)據(jù)消息及其唯一編號(hào)。
在示例中為了便于描述而使用簡(jiǎn)單字符作為消息的唯一性標(biāo)識(shí)符,在實(shí)際實(shí)現(xiàn)中可以采用全局唯一標(biāo)識(shí)符(GUID)或者其它更復(fù)雜的或帶有業(yè)務(wù)屬性信息的唯一標(biāo)識(shí)符,亦或者是某些消息中間件創(chuàng)建消息時(shí)生成的編號(hào)。
此外,圖5中作為示例僅描述了包含最核心要素的控制消息和數(shù)據(jù)消息的結(jié)構(gòu),實(shí)際實(shí)現(xiàn)中可以根據(jù)需要加入其它的內(nèi)容,比如業(yè)務(wù)數(shù)據(jù)是一段用戶數(shù)據(jù),發(fā)送方希望接收方收到數(shù)據(jù)后觸發(fā)“用戶信息更新”事件,由事件響應(yīng)程序處理這些數(shù)據(jù),那么如圖6所示,可以以類似的方式加入額外的控制標(biāo)識(shí)符PR0C_TYPE =EVENT和EVT_TYPE:UPDATE,USERS。
2、發(fā)送裝置的數(shù)據(jù)發(fā)送機(jī)制及其實(shí)現(xiàn)
發(fā)送裝置負(fù)責(zé)按照標(biāo)識(shí)和識(shí)別業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作邊界的方法將業(yè)務(wù)數(shù)據(jù)分解成多個(gè)數(shù)據(jù)消息并生成相應(yīng)的控制消息發(fā)送到消息中間件。發(fā)送裝置的基本工作步驟主要包括:a、將業(yè)務(wù)數(shù)據(jù)分解成多個(gè)數(shù)據(jù)消息;b、根據(jù)數(shù)據(jù)消息列表生成控制消息;c、通過(guò)消息通訊基礎(chǔ)設(shè)施發(fā)送數(shù)據(jù)消息和控制消息。
具體地,發(fā)送裝置的數(shù)據(jù)傳輸過(guò)程包括:
步驟702,獲取業(yè)務(wù)數(shù)據(jù)。
步驟704,生成數(shù)據(jù)消息。
步驟706,生成控制消息。
步驟708,逐個(gè)發(fā)送數(shù)據(jù)消息。
步驟710,判斷所有的數(shù)據(jù)消息是否全部發(fā)送成功,若是,則進(jìn)入步驟712,否則結(jié)束。
步驟712,發(fā)送控制消息。
發(fā)送裝置的核心是將數(shù)據(jù)消息和控制消息分開(kāi)發(fā)送。
在發(fā)送數(shù)據(jù)消息時(shí),多個(gè)數(shù)據(jù)消息采用串行發(fā)送還是并行發(fā)送可以根據(jù)實(shí)際需要來(lái)實(shí)現(xiàn),均屬于本發(fā)明的傳輸機(jī)制允許的實(shí)現(xiàn)方案。
在基于典型的消息中間件實(shí)現(xiàn)時(shí),數(shù)據(jù)消息的發(fā)送不需要采用消息中間件的事務(wù)型連接進(jìn)行發(fā)送,這樣可以避免消息中間件因大數(shù)據(jù)量而致內(nèi)存崩潰,同時(shí)也避免對(duì)特定的消息中間件行程。采取非事務(wù)連接方式向消息中間發(fā)送能夠使得基于本發(fā)明的機(jī)制下可以支持極大數(shù)據(jù)量的傳輸,支持的最大數(shù)據(jù)量(Sm)收到兩個(gè)因素的限制:每個(gè)消息的最大尺寸(Sa),控制消息在消息最大尺寸下能夠記錄的數(shù)據(jù)消息的標(biāo)識(shí)符的最大個(gè)數(shù)(N),Sm=Sa*N,可以一般性地認(rèn)為N等于Sa除以每個(gè)標(biāo)識(shí)符的大小(Si),那么Sm=Sa*Sa/Si。
假設(shè),消息中間件允許的每個(gè)消息最大尺寸為1MB,每個(gè)數(shù)據(jù)消息的標(biāo)識(shí)符大小為32Byte,則Sm=lMB*lMB/32Byte=32GB ;如果消息中間件允許的每個(gè)消息的最大尺寸為5MB,則Sm=5MB*5MB/32Byte=800GB。此外,如果輔以數(shù)據(jù)壓縮手段還可以成倍地提高最大數(shù)據(jù)量。
3、接收裝置的數(shù)據(jù)接收機(jī)制及其實(shí)現(xiàn)
接收裝置是配合發(fā)送裝置實(shí)現(xiàn)的發(fā)送過(guò)程而實(shí)現(xiàn)數(shù)據(jù)接收。數(shù)據(jù)接收包含兩個(gè)基本過(guò)程:
a、數(shù)據(jù)消息的接收:從消息中間件將數(shù)據(jù)消息讀取出來(lái),通過(guò)消息存儲(chǔ)裝置進(jìn)行記錄和保存。
b、控制消息的接收:從消息中間件將控制消息讀取出來(lái),通過(guò)消息存儲(chǔ)裝置進(jìn)行記錄和保存之后,根據(jù)控制消息中記錄的數(shù)據(jù)消息標(biāo)識(shí)符列表,通過(guò)消息存儲(chǔ)裝置檢索出數(shù)據(jù)消息,按照控制消息中指定的數(shù)據(jù)順序和處理方式觸發(fā)對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)處理過(guò)程。
接收裝置執(zhí)行數(shù)據(jù)傳輸?shù)木唧w過(guò)程包括:
步驟802,收到消息,包括數(shù)據(jù)消息和控制消息。
步驟804,保存消息。
步驟806,判斷當(dāng)前是否為控制消息,若是,則進(jìn)入步驟808,否則結(jié)束。
步驟808,按標(biāo)識(shí)符列表檢索存儲(chǔ)的數(shù)據(jù)消息。
步驟810,判斷是否收到全部數(shù)據(jù)消息,若是,則進(jìn)入步驟812,否則結(jié)束。
步驟812,處理數(shù)據(jù)消息。
以圖6所示的控制消息為例,當(dāng)收到控制消息TC001時(shí),則通過(guò)消息存儲(chǔ)裝置檢索消息標(biāo)識(shí)符列表中的Dl、D2、D3數(shù)據(jù)消息是否已經(jīng)收到,如果已經(jīng)收到,則觸發(fā)UPDATE_USERS事件,將D1、D2、D3數(shù)據(jù)消息的內(nèi)容作為事件參數(shù)傳遞。
對(duì)于未收到時(shí)需要進(jìn)行的處理可以根據(jù)實(shí)際情況實(shí)現(xiàn),例如可以等待重試,或者拋棄處理,或者觸發(fā)某類約定的錯(cuò)誤等等,但這些并不是本裝置的必要要求。
從消息中間件接收消息的具體編程實(shí)現(xiàn)是需要調(diào)用具體消息中間件提供的API實(shí)現(xiàn)的,由選用的消息中間件決定。例如,對(duì)于實(shí)現(xiàn)了 JMS的消息中間件,則按照J(rèn)MS定義的MessageConsumer進(jìn)行監(jiān)聽(tīng)和接收消息。
4、消息存儲(chǔ)裝置的消息存儲(chǔ)機(jī)制及其實(shí)現(xiàn)
消息存儲(chǔ)裝置需要滿足對(duì)消息的存儲(chǔ)和按標(biāo)識(shí)符檢索的功能,在實(shí)現(xiàn)上可以有許多實(shí)現(xiàn)方式可以選擇,例如基于文件系統(tǒng)存儲(chǔ)、基于數(shù)據(jù)庫(kù)存儲(chǔ)等,同時(shí)還需要考慮其它技術(shù)因素,例如集群環(huán)境因素、數(shù)據(jù)庫(kù)壓力狀況等。例如在集群環(huán)境下,如果采用基于文件系統(tǒng)的消息存儲(chǔ)裝置實(shí)現(xiàn),則需要將存儲(chǔ)位置單點(diǎn)化,提供存儲(chǔ)的文件系統(tǒng)必須是各個(gè)集群節(jié)點(diǎn)都能共同訪問(wèn)到網(wǎng)絡(luò)文件系統(tǒng)。
符合本發(fā)明的消息存儲(chǔ)裝置需要實(shí)現(xiàn)最基本的兩點(diǎn):
1、能夠按照消息標(biāo)識(shí)符保存消息;
2、能夠按照消息標(biāo)識(shí)符檢索到已保存的消息。
以文件系統(tǒng)存儲(chǔ)為例,需要將消息標(biāo)識(shí)或者由標(biāo)識(shí)符生成的格式字符作為文件名保存,在檢索時(shí)按消息標(biāo)識(shí)符或者由標(biāo)識(shí)符生成的格式字符作為文件名進(jìn)行磁盤文件查找。
以數(shù)據(jù)庫(kù)存儲(chǔ)為例,保存消息的數(shù)據(jù)表最基本的需要消息標(biāo)識(shí)符列(char/varchar類型)和消息內(nèi)容列(blob類型)兩個(gè)列分別保存消息標(biāo)識(shí)符和消息內(nèi)容。
此外,消息存儲(chǔ)裝置的獨(dú)立實(shí)現(xiàn)并非是實(shí)現(xiàn)本發(fā)明的必要的要素,其功能也可以與消息接收裝置合并在一起進(jìn)行實(shí)現(xiàn)。
5、雙向傳輸?shù)膶?shí)現(xiàn)
本發(fā)明的裝置中,一個(gè)消息發(fā)送裝置和一個(gè)消息接收/存儲(chǔ)裝置構(gòu)成了 一個(gè)單向傳輸單元。要實(shí)現(xiàn)雙向傳輸只需要將此單向傳輸單元再反向部署一套即可,即需要傳輸雙方中的每一方都同時(shí)具有消息發(fā)送裝置和消息接收/存儲(chǔ)裝置。具體地,如圖9所示,展現(xiàn)了一個(gè)具備雙向傳輸能力的系統(tǒng)裝置。
以上結(jié)合附圖詳細(xì)說(shuō)明了本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案與現(xiàn)有的應(yīng)用消息中間件的技術(shù)最大區(qū)別之處是,本技術(shù)方案提出一套基于消息發(fā)布/訂閱模型的數(shù)據(jù)傳輸?shù)臋C(jī)制,該機(jī)制的核心是建立在本方案提出的對(duì)業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)操作的邊界標(biāo)識(shí)方法以及與之對(duì)應(yīng)的發(fā)送、接收處理機(jī)制,并不依賴于具體的消息中間件廠商,在上層應(yīng)用和通訊基礎(chǔ)設(shè)置之間維持了獨(dú)立性,給應(yīng)用系統(tǒng)提供了一套更加通用、靈活和更具移植性的分布式通訊解決方案。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),其特征在于,包括發(fā)送方和接收方,其中,所述發(fā)送方包括: 數(shù)據(jù)拆分單元,用于將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)消息; 消息生成單元,用于生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息; 數(shù)據(jù)發(fā)送單元,用于將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。
2.根據(jù)權(quán)利要求1所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述發(fā)送方還包括: 標(biāo)識(shí)添加單元,用于為每個(gè)所述數(shù)據(jù)消息添加相應(yīng)的唯一標(biāo)識(shí); 其中,所述控制消息中包含每個(gè)所述數(shù)據(jù)消息的唯一標(biāo)識(shí)、所述多個(gè)數(shù)據(jù)消息的排列順序以及對(duì)所述多個(gè)數(shù)據(jù)消息的處理方式。
3.根據(jù)權(quán)利要求1所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述數(shù)據(jù)發(fā)送單元采用非事務(wù)連接方式向所述消息中間件發(fā)送所述數(shù)據(jù)消息和所述控制消息。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述接收方還包括: 消息獲取單元,用于從所述消息中間件中獲取數(shù)據(jù)消息和控制消息; 消息存儲(chǔ)單元,用于對(duì)所述數(shù)據(jù)消息和所述控制消息進(jìn)行記錄和存儲(chǔ); 消息解析單元,用于對(duì)所述消息存儲(chǔ)單元中存儲(chǔ)的指定控制消息進(jìn)行解析,以獲取所述指定控制消息中包含的標(biāo)識(shí)、排列順序和處理方式; 消息處理單元,用于將所述標(biāo)識(shí)與存儲(chǔ)的數(shù)據(jù)消息的唯一標(biāo)識(shí)進(jìn)行匹配,以確定對(duì)應(yīng)于所述指定控制消息的指定數(shù)據(jù)消息,并根據(jù)所述排列順序和所述處理方式,對(duì)所述指定數(shù)據(jù)消息進(jìn)行處理。
5.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),其特征在于, 所述發(fā)送方還包括:信息添加單元,用于在所述控制消息中添加觸發(fā)指示信息; 所述接收方還包括:事件觸發(fā)單元,用于根據(jù)從所述控制消息中解析出的觸發(fā)指示信息觸發(fā)指定的事件,以處理所述控制消息對(duì)應(yīng)的數(shù)據(jù)消息。
6.一種用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法,其特征在于,包括: 步驟302,發(fā)送方將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為`多個(gè)數(shù)據(jù)消息; 步驟304,所述發(fā)送方生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息; 步驟306,所述發(fā)送方將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。
7.根據(jù)權(quán)利要求6所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法,其特征在于,所述步驟302還包括: 為每個(gè)所述數(shù)據(jù)消息添加相應(yīng)的唯一標(biāo)識(shí);以及 所述步驟304還包括: 所述控制消息中包含每個(gè)所述數(shù)據(jù)消息的唯一標(biāo)識(shí)、所述多個(gè)數(shù)據(jù)消息的排列順序以及對(duì)所述多個(gè)數(shù)據(jù)消息的處理方式。
8.根據(jù)權(quán)利要求6所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法,其特征在于,所述發(fā)送方采用非事務(wù)連接方式向所述消息中間件發(fā)送所述數(shù)據(jù)消息和所述控制消息。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法,其特征在于,所述步驟306之后,還包括: 步驟308,所述接收方從所述消息中間件中獲取數(shù)據(jù)消息和控制消息,并對(duì)其進(jìn)行記錄和存儲(chǔ); 步驟310,所述接收方根據(jù)從指定控制消息中解析出的標(biāo)識(shí),與存儲(chǔ)的數(shù)據(jù)消息的唯一標(biāo)識(shí)進(jìn)行匹配,以確定對(duì)應(yīng)于所述指定控制消息的指定數(shù)據(jù)消息; 步驟312,所述接收方根據(jù)從所述指定控制消息中解析出的排列順序和處理方式,對(duì)所述指定數(shù)據(jù)消息進(jìn)行處理。
10.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法,其特征在于,還包括: 所述發(fā)送方還在所述控制消息中添加觸發(fā)指示信息;以及 所述接收方還根據(jù)從所述控制消息中解析出的觸發(fā)指示信息觸發(fā)指定的事件,以處理所述控制消息對(duì) 應(yīng)的數(shù)據(jù)消息。
全文摘要
本發(fā)明提供了一種用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸系統(tǒng),包括發(fā)送方和接收方,其中,所述發(fā)送方包括數(shù)據(jù)拆分單元,用于將待發(fā)送的業(yè)務(wù)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)消息;消息生成單元,用于生成對(duì)應(yīng)于所述數(shù)據(jù)消息的控制消息;數(shù)據(jù)發(fā)送單元,用于將所述數(shù)據(jù)消息和所述控制消息發(fā)送至消息中間件,以供接收方進(jìn)行獲取并按照所述控制消息來(lái)處理所述數(shù)據(jù)消息。本發(fā)明還提出了一種用于分布式應(yīng)用系統(tǒng)的數(shù)據(jù)傳輸方法。通過(guò)本發(fā)明的技術(shù)方案,可以不依賴于具體的消息中間件,從而實(shí)現(xiàn)異步的、松耦合的分布式數(shù)據(jù)傳輸,具有良好的可移植性,能夠有效降低系統(tǒng)實(shí)現(xiàn)的復(fù)雜性,尤其是解決了在大數(shù)據(jù)量和集群環(huán)境下的常見(jiàn)內(nèi)存問(wèn)題、并發(fā)問(wèn)題。
文檔編號(hào)H04L29/08GK103179193SQ20131005554
公開(kāi)日2013年6月26日 申請(qǐng)日期2013年2月21日 優(yōu)先權(quán)日2013年2月21日
發(fā)明者黃海泉 申請(qǐng)人:用友軟件股份有限公司