本申請(qǐng)涉及通信
技術(shù)領(lǐng)域:
,特別涉及一種分布式事物處理的方法、裝置及系統(tǒng)。
背景技術(shù):
:為了完成網(wǎng)商銀行的一項(xiàng)業(yè)務(wù),往往需要調(diào)用多個(gè)子系統(tǒng),因此子系統(tǒng)間的依賴(lài)關(guān)系比較復(fù)雜,而子系統(tǒng)之間的依賴(lài)越多,每個(gè)子系統(tǒng)的可用性就越重要,如果整個(gè)系統(tǒng)中涉及的某一個(gè)子系統(tǒng)無(wú)法提供服務(wù),則可能導(dǎo)致整個(gè)業(yè)務(wù)無(wú)法完成,降低了整個(gè)系統(tǒng)的可用性。可以參見(jiàn)圖1所示為現(xiàn)有技術(shù)的上游子系統(tǒng)和下游子系統(tǒng)之間發(fā)送消息的示意圖,在該圖中上游子系統(tǒng)例如可以為支付系統(tǒng),下游子系統(tǒng)例如可以為發(fā)貨系統(tǒng),當(dāng)用戶(hù)在支付系統(tǒng)完成支付后,由支付系統(tǒng)通過(guò)中間的消息系統(tǒng)通知發(fā)貨系統(tǒng)進(jìn)行發(fā)貨,如果中間的消息系統(tǒng)出現(xiàn)問(wèn)題,或者發(fā)貨系統(tǒng)出現(xiàn)問(wèn)題,則可能導(dǎo)致該發(fā)貨業(yè)務(wù)無(wú)法完成,整個(gè)系統(tǒng)的可用性較低。技術(shù)實(shí)現(xiàn)要素:為了解決現(xiàn)有技術(shù)中由于某個(gè)子系統(tǒng)出現(xiàn)問(wèn)題不能提供服務(wù),導(dǎo)致整個(gè)系統(tǒng)可用性低的問(wèn)題,提供了一種分布式事物處理的方法、裝置及系統(tǒng),通過(guò)將通知消息存儲(chǔ)于上游子系統(tǒng)的數(shù)據(jù)庫(kù)中,通過(guò)中間件定時(shí)將數(shù)據(jù)庫(kù)中新的通知消息發(fā)送給下游子系統(tǒng),從而避免了現(xiàn)有技術(shù)中對(duì)每個(gè)子系統(tǒng)可用性要求過(guò)高的問(wèn)題。本申請(qǐng)實(shí)施例提供了一種分布式事物處理方法,包括:根據(jù)上游子系統(tǒng)的業(yè)務(wù)處理結(jié)果,生成通知消息;將所述通知消息存儲(chǔ)于數(shù)據(jù)庫(kù)中。本申請(qǐng)實(shí)施例還提供了一種分布式事物處理方法,包括:定時(shí)掃描存儲(chǔ)有上游子系統(tǒng)生成的通知消息的數(shù)據(jù)庫(kù);將所述數(shù)據(jù)庫(kù)中新加入的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng);接收所述下游子系統(tǒng)返回的對(duì)所述通知消息的處理結(jié)果;根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理。本申請(qǐng)實(shí)施例還提供了一種上游子系統(tǒng),包括,生成單元,用于根據(jù)上游子系統(tǒng)的業(yè)務(wù)處理結(jié)果,生成通知消息;存儲(chǔ)單元,用于將所述通知消息存儲(chǔ)于數(shù)據(jù)庫(kù)中。本申請(qǐng)實(shí)施例還提供了一種同步裝置,包括:掃描單元,用于定時(shí)掃描存儲(chǔ)有上游子系統(tǒng)生成的通知消息的數(shù)據(jù)庫(kù);發(fā)送單元,用于將所述數(shù)據(jù)庫(kù)中新加入的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng);接收單元,用于接收所述下游子系統(tǒng)返回的對(duì)所述通知消息的處理結(jié)果;處理單元,用于根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理。本申請(qǐng)實(shí)施例還提供了一種分布式事物處理系統(tǒng),包括:上游子系統(tǒng),用于根據(jù)上游子系統(tǒng)的業(yè)務(wù)處理結(jié)果,生成通知消息,并將所述通知消息存儲(chǔ)于數(shù)據(jù)庫(kù)中;同步裝置,用于定時(shí)掃描存儲(chǔ)有上游子系統(tǒng)生成的通知消息的數(shù)據(jù)庫(kù),將所述數(shù)據(jù)庫(kù)中新加入的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng),接收所述下游子系統(tǒng)返回的對(duì)所述通知消息的處理結(jié)果,并根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理。由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見(jiàn),將通知消息存儲(chǔ)在上游子系統(tǒng)中,令同步裝置定時(shí)獲取通知消息,并將該通知消息發(fā)送給下游子系統(tǒng),實(shí)現(xiàn)了上游子系統(tǒng)和下游子系統(tǒng)之間的隔離,提高了整個(gè)分布式事務(wù)處理系統(tǒng)的可用性,即便下游子系統(tǒng)不能工作,也可以在恢復(fù)正常后通過(guò)同步裝置自動(dòng)查詢(xún)通知消息,并進(jìn)行同步,還可以減少對(duì)每個(gè)上游子系統(tǒng)和下游子系統(tǒng)之間通信的編碼成本。當(dāng)然實(shí)施本申請(qǐng)的任一產(chǎn)品或者方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。附圖說(shuō)明為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1所示為本申請(qǐng)實(shí)施例一種分布式事物處理方法的流程圖;圖2所示為本申請(qǐng)實(shí)施例一種分布式事物處理方法的流程圖;圖3所示為本申請(qǐng)實(shí)施例一種上游子系統(tǒng)結(jié)構(gòu)示意圖;圖4所示為本申請(qǐng)實(shí)施例一種同步裝置結(jié)構(gòu)示意圖;圖5所示為本申請(qǐng)實(shí)施例一種分布式事物處理系統(tǒng)的結(jié)構(gòu)示意圖;圖6所示為本申請(qǐng)實(shí)施例一種分布式事物處理系統(tǒng)的具體數(shù)據(jù)流圖。具體實(shí)施方式本申請(qǐng)實(shí)施例提供一種分布式事物處理的方法、裝置及系統(tǒng)。為了使本
技術(shù)領(lǐng)域:
的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。如圖1所示為本申請(qǐng)實(shí)施例一種分布式事物處理方法的流程圖,在本圖中描述了上游子系統(tǒng)將通知消息存儲(chǔ)于本地?cái)?shù)據(jù)庫(kù)中,以供同步裝置查詢(xún)?cè)L問(wèn),從而確保了整個(gè)系統(tǒng)高可用性的目的,該方法主要在上游子系統(tǒng)中執(zhí)行。在本實(shí)施例的方法中具體包括,步驟101,根據(jù)上游子系統(tǒng)的業(yè)務(wù)處理結(jié)果,生成通知消息。步驟102,將所述通知消息存儲(chǔ)于數(shù)據(jù)庫(kù)中。作為本申請(qǐng)的一個(gè)實(shí)施例,所述通知消息包括通知編號(hào)和通知內(nèi)容,或者其它能夠唯一標(biāo)識(shí)該通知消息的標(biāo)記。其中,所述通知編號(hào)是用于唯一確定通知消息的信息,所述通知內(nèi)容中進(jìn)一步包括訂單號(hào)、時(shí)間、業(yè)務(wù)數(shù)據(jù)以及業(yè)務(wù)處理結(jié)果。所述業(yè)務(wù)處理結(jié)果例如為下單是否成功、支付業(yè)務(wù)是否成功的結(jié)果信息。作為本申請(qǐng)的一個(gè)實(shí)施例,所述數(shù)據(jù)庫(kù)可以是上游子系統(tǒng)的本地?cái)?shù)據(jù)庫(kù),或者所述數(shù)據(jù)庫(kù)可以獨(dú)立于上游子系統(tǒng)單獨(dú)存在的數(shù)據(jù)庫(kù)服務(wù)器。通過(guò)上述本申請(qǐng)實(shí)施例中的方法,可以通過(guò)數(shù)據(jù)庫(kù)的方式將上游子系統(tǒng)生成的通知消息進(jìn)行存儲(chǔ),并不直接將該通知消息發(fā)送給下游子系統(tǒng)或者中間的消息系統(tǒng),這樣可以節(jié)省針對(duì)各個(gè)上游子系統(tǒng)向下游子系統(tǒng)發(fā)送消息的編碼成本,并且通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)通知消息的手段,可以保證各個(gè)子系統(tǒng)之間(包括上游子系統(tǒng)、下游子系統(tǒng))數(shù)據(jù)的正確性,也就是保證了數(shù)據(jù)庫(kù)的acid:原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持久性(durability),從而保證整個(gè)業(yè)務(wù)過(guò)程的穩(wěn)定性和數(shù)據(jù)安全性。如圖2所示為本申請(qǐng)實(shí)施例一種分布式事物處理方法的流程圖,在本圖中描述了同步裝置在上游子系統(tǒng)和下游子系統(tǒng)之間進(jìn)行數(shù)據(jù)同步的過(guò)程,該同步裝置通過(guò)檢測(cè)上游子系統(tǒng)更新的數(shù)據(jù)庫(kù)中的通知信息,將新的通知信息同步給下游子系統(tǒng),并根據(jù)下游子系統(tǒng)的處理結(jié)果反饋刪除所述數(shù)據(jù)庫(kù)中的相應(yīng)通知消息,從而對(duì)所述數(shù)據(jù)庫(kù)進(jìn)行維護(hù),通過(guò)這樣的手段即便是下游子系統(tǒng)出現(xiàn)問(wèn)題無(wú)法進(jìn)行后繼業(yè)務(wù),或者同步裝置出現(xiàn)問(wèn)題無(wú)法向下游子系統(tǒng)同步通知消息,只要下游子系統(tǒng)恢復(fù)正常或者同步裝置恢復(fù)就可以繼續(xù)同步通知消息以完成相關(guān) 業(yè)務(wù)。該方法具體包括步驟201,定時(shí)掃描存儲(chǔ)有上游子系統(tǒng)生成的通知消息的數(shù)據(jù)庫(kù)。步驟202,將所述數(shù)據(jù)庫(kù)中新加入的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng)。步驟203,接收所述下游子系統(tǒng)返回的對(duì)所述通知消息的處理結(jié)果。步驟204,根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理。作為本申請(qǐng)的一個(gè)實(shí)施例,所述通知消息包括通知編號(hào)和通知內(nèi)容,或者其它能夠唯一標(biāo)識(shí)該通知消息的標(biāo)記。作為本申請(qǐng)的一個(gè)實(shí)施例,根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理進(jìn)一步包括,若所述處理結(jié)果為處理成功,則刪除所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息,若在一預(yù)定時(shí)間內(nèi)沒(méi)有接收到所述處理結(jié)果,則重復(fù)將所述通知消息發(fā)送給相應(yīng)的下游子系統(tǒng)。其中,所述處理結(jié)果為處理成功或者處理不成功,均可以使用例如0、1等標(biāo)識(shí)符來(lái)表示,或者還可以采用其它字符串進(jìn)行表示,在此不作限定。作為本申請(qǐng)的一個(gè)實(shí)施例,所述處理結(jié)果中還包括有通知編號(hào),根據(jù)所述通知編號(hào)匹配得到數(shù)據(jù)庫(kù)中相應(yīng)的通知消息。作為本申請(qǐng)的一個(gè)實(shí)施例,將所述數(shù)據(jù)庫(kù)中的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng)進(jìn)一步包括,根據(jù)所述數(shù)據(jù)庫(kù)中通知消息的標(biāo)志位,來(lái)判斷所述通知消息是否為新加入的通知消息,并修改已發(fā)送通知消息的標(biāo)志位。其中,可以采用多狀態(tài)的標(biāo)志位來(lái)標(biāo)識(shí)新寫(xiě)入的通知消息,例如在上游子系統(tǒng)在數(shù)據(jù)庫(kù)中寫(xiě)入通知消息時(shí),將該通知消息的標(biāo)志位標(biāo)記為0,當(dāng)同步裝置掃描得到所有標(biāo)志位為0的通知消息后,向下游子系統(tǒng)進(jìn)行同步時(shí),將相應(yīng)的通知消息的標(biāo)志位改為1,如果收到下游子系統(tǒng)處理成功的信息后,將這些通知消息的標(biāo)志位改為2,并刪除標(biāo)志位為2的通知消息,如果沒(méi)有接收到處理成功的信息,則重復(fù)向下游子系統(tǒng)同步標(biāo)志位為1的通知消息,當(dāng)再次掃描數(shù)據(jù)庫(kù)時(shí),同樣將標(biāo)志位為0的通知消息作為新寫(xiě)入的通知消息,將這些新寫(xiě)入的通知消息向下游子系統(tǒng)進(jìn)行同步,在上述的預(yù)定時(shí)間內(nèi)不會(huì)再次重發(fā)標(biāo)志位為1的處理失敗的通知消息,只有等到預(yù)定時(shí)間之后,例如5秒之后,重復(fù)發(fā)送該標(biāo)志位為1的通知消息到下游子系統(tǒng)。通過(guò)上述本申請(qǐng)實(shí)施例的方法,可以從上游子系統(tǒng)的數(shù)據(jù)庫(kù)中獲取通知消息,并不依賴(lài)下游子系統(tǒng)或者同步裝置是否可用,當(dāng)下游子系統(tǒng)和同步裝置正常時(shí)就可以從數(shù)據(jù)庫(kù)中獲得通知消息,使得上游子系統(tǒng)和中間的同步裝置以及下游子系統(tǒng)隔離,減少了子系統(tǒng)之間的依賴(lài)性,提高了整個(gè)系統(tǒng)的可用性,并且對(duì)于新增的上游子系統(tǒng)也可以節(jié)省上游子系統(tǒng)和下游子系統(tǒng)之間通信的編碼成本。如圖3所示為本申請(qǐng)實(shí)施例一種上游子系統(tǒng)結(jié)構(gòu)示意圖,在本圖中描述了上游子系統(tǒng)將通知消息存儲(chǔ)于本地?cái)?shù)據(jù)庫(kù)中,以供同步裝置查詢(xún)?cè)L問(wèn),從而確保了整個(gè)系統(tǒng)的高可用性的目的,在本實(shí)施例中上游子系統(tǒng)可以為任何業(yè)務(wù)子系統(tǒng),例如支付業(yè)務(wù)子系統(tǒng)、訂單子系統(tǒng)、發(fā)貨子系統(tǒng)等等,該上游子系統(tǒng)中的各個(gè)功能模塊可以由計(jì)算機(jī)或者計(jì)算機(jī)集群來(lái)實(shí)現(xiàn),或者通過(guò)專(zhuān)用的可編程邏輯器件等芯片來(lái)實(shí)現(xiàn),其中的數(shù)據(jù)庫(kù)可以與上游子系統(tǒng)集成在一起,或者單獨(dú)設(shè)立,運(yùn)行于不同的計(jì)算機(jī)或者計(jì)算機(jī)集群。該上游子系統(tǒng)具體包括生成單元301,用于根據(jù)上游子系統(tǒng)的業(yè)務(wù)處理結(jié)果,生成通知消息。存儲(chǔ)單元302,用于將所述通知消息存儲(chǔ)于數(shù)據(jù)庫(kù)中。作為本申請(qǐng)的一個(gè)實(shí)施例,所述通知消息包括通知編號(hào)和通知內(nèi)容,或者其它能夠唯一標(biāo)識(shí)該通知消息的標(biāo)記。通過(guò)上述本申請(qǐng)實(shí)施例中的上游子系統(tǒng),可以通過(guò)數(shù)據(jù)庫(kù)的方式將上游子系統(tǒng)生成的通知消息進(jìn)行存儲(chǔ),并不直接將該通知消息發(fā)送給下游子系統(tǒng)或者中間的消息系統(tǒng),這樣可以節(jié)省針對(duì)各個(gè)上游子系統(tǒng)向下游子系統(tǒng)發(fā)送消息的編碼成本,并且通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)通知消息的手段,可以保證各個(gè)子系統(tǒng)之間的acid,從而保證整個(gè)業(yè)務(wù)過(guò)程的穩(wěn)定性和數(shù)據(jù)安全性。如圖4所示為本申請(qǐng)實(shí)施例一種同步裝置結(jié)構(gòu)示意圖,在本圖中描述了同步上游子系統(tǒng)和下游子系統(tǒng)之間通信消息的同步裝置,該同步裝置可以與上游子系統(tǒng)結(jié)合在一起,或者單獨(dú)位于不同的計(jì)算機(jī)或者計(jì)算機(jī)集群,該同步裝置中的各個(gè)功能模塊均可以由計(jì)算機(jī)實(shí)現(xiàn),或者可以由可編程邏輯器件等芯片實(shí)現(xiàn)。具體包括掃描單元401,用于定時(shí)掃描存儲(chǔ)有上游子系統(tǒng)生成的通知消息的數(shù)據(jù)庫(kù)。發(fā)送單元402,用于將所述數(shù)據(jù)庫(kù)中新加入的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng)。接收單元403,用于接收所述下游子系統(tǒng)返回的對(duì)所述通知消息的處理結(jié)果。處理單元404,用于根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理。作為本申請(qǐng)的一個(gè)實(shí)施例,所述通知消息包括通知編號(hào)和通知內(nèi)容,或者其它能夠唯一標(biāo)識(shí)該通知消息的標(biāo)記。作為本申請(qǐng)的一個(gè)實(shí)施例,所述處理單元進(jìn)一步用于,若所述處理結(jié)果為處理成功,則刪除所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息,若在一預(yù)定時(shí)間內(nèi)沒(méi)有接收到所述處理結(jié)果,則調(diào)用發(fā)送單元重復(fù)將所述通知消息發(fā)送給相應(yīng)的下游子系統(tǒng)。作為本申請(qǐng)的一個(gè)實(shí)施例,所述處理結(jié)果中還包括有通知編號(hào),所述處理單元根據(jù)所述通知編號(hào)匹配得到數(shù)據(jù)庫(kù)中相應(yīng)的通知消息。作為本申請(qǐng)的一個(gè)實(shí)施例,發(fā)送單元進(jìn)一步用于,據(jù)所述數(shù)據(jù)庫(kù)中通知消息的標(biāo)志位, 來(lái)判斷所述通知消息是否為新加入的通知消息,并修改已發(fā)送通知消息的標(biāo)志位。通過(guò)上述本申請(qǐng)實(shí)施例的裝置,可以從上游子系統(tǒng)的數(shù)據(jù)庫(kù)中獲取通知消息,并不依賴(lài)下游子系統(tǒng)或者同步裝置是否可用,當(dāng)下游子系統(tǒng)和同步裝置正常時(shí)就可以從數(shù)據(jù)庫(kù)中獲得通知消息,使得上游子系統(tǒng)和中間的同步裝置以及下游子系統(tǒng)隔離,減少了子系統(tǒng)之間的依賴(lài)性,提高了整個(gè)系統(tǒng)的可用性,并且對(duì)于新增的上游子系統(tǒng)也可以節(jié)省上游子系統(tǒng)和下游子系統(tǒng)之間通信的編碼成本。如圖5所示為本申請(qǐng)實(shí)施例一種分布式事物處理系統(tǒng)的結(jié)構(gòu)示意圖,在本圖中描述了分布式事物處理系統(tǒng)的結(jié)構(gòu),通過(guò)在上游子系統(tǒng)的數(shù)據(jù)庫(kù)中保存通知消息,利用同步裝置將數(shù)據(jù)庫(kù)中的通知消息同步給下游子系統(tǒng),可以實(shí)現(xiàn)子系統(tǒng)之間的隔離,提高整個(gè)系統(tǒng)的可用性,并且節(jié)省了為每個(gè)上游子系統(tǒng)通信編碼的成本。該系統(tǒng)具體包括上游子系統(tǒng)501,用于根據(jù)上游子系統(tǒng)的業(yè)務(wù)處理結(jié)果,生成通知消息,并將所述通知消息存儲(chǔ)于數(shù)據(jù)庫(kù)中;同步裝置502,用于定時(shí)掃描存儲(chǔ)有上游子系統(tǒng)生成的通知消息的數(shù)據(jù)庫(kù),將所述數(shù)據(jù)庫(kù)中新加入的通知消息發(fā)送給相應(yīng)的下游子系統(tǒng),接收所述下游子系統(tǒng)返回的對(duì)所述通知消息的處理結(jié)果,并根據(jù)所述處理結(jié)果對(duì)所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息進(jìn)行處理。作為本申請(qǐng)的一個(gè)實(shí)施例,所述通知消息包括通知編號(hào)和通知內(nèi)容,或者其它能夠唯一標(biāo)識(shí)該通知消息的標(biāo)記。作為本申請(qǐng)的一個(gè)實(shí)施例,所述同步裝置進(jìn)一步用于,若所述處理結(jié)果為處理成功,則刪除所述數(shù)據(jù)庫(kù)中相應(yīng)的通知消息,若在一預(yù)定時(shí)間內(nèi)沒(méi)有接收到所述處理結(jié)果,則調(diào)用發(fā)送單元重復(fù)將所述通知消息發(fā)送給相應(yīng)的下游子系統(tǒng)。作為本申請(qǐng)的一個(gè)實(shí)施例,所述同步裝置進(jìn)一步用于,根據(jù)據(jù)所述數(shù)據(jù)庫(kù)中通知消息的標(biāo)志位,來(lái)判斷所述通知消息是否為新加入的通知消息,并修改已發(fā)送通知消息的標(biāo)志位。通過(guò)本申請(qǐng)實(shí)施例的分布式事物處理系統(tǒng),將通知消息存儲(chǔ)在上游子系統(tǒng)中,令同步裝置定時(shí)獲取通知消息,并將該通知消息發(fā)送給下游子系統(tǒng),實(shí)現(xiàn)了上游子系統(tǒng)和下游子系統(tǒng)之間的隔離,提高了整個(gè)分布式事務(wù)處理系統(tǒng)的可用性,即便下游子系統(tǒng)不能工作,也可以在恢復(fù)正常后通過(guò)同步裝置自動(dòng)查詢(xún)通知消息,并進(jìn)行同步,還可以減少對(duì)每個(gè)上游子系統(tǒng)和下游子系統(tǒng)之間通信的編碼成本。如圖6所示為本申請(qǐng)實(shí)施例一種分布式事物處理系統(tǒng)的具體數(shù)據(jù)流圖,在本圖中描述了該分布式事物處理系統(tǒng)通過(guò)將通知消息存儲(chǔ)于上游子系統(tǒng),并通過(guò)同步裝置將通知消息與下游子系統(tǒng)進(jìn)行同步的過(guò)程,在該系統(tǒng)中同步裝置可以與上游子系統(tǒng)位于同一臺(tái)計(jì)算機(jī)中,也可以位于不同的計(jì)算機(jī)中。在本例中上游子系統(tǒng)例如可以為支付子系統(tǒng),下游子系統(tǒng)可以為 發(fā)貨系統(tǒng),當(dāng)上游子系統(tǒng)完成支付后,下游子系統(tǒng)會(huì)進(jìn)行發(fā)貨業(yè)務(wù)的處理,同步裝置可以采用rpc客戶(hù)端實(shí)現(xiàn),其中rpc為remoteprocedurecallprotocol,遠(yuǎn)程過(guò)程調(diào)用協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議,還可以采用其它軟硬件相結(jié)合的設(shè)備實(shí)現(xiàn)同步裝置的功能,例如采用能夠完成相應(yīng)功能的中間件來(lái)實(shí)現(xiàn),上游子系統(tǒng)中的數(shù)據(jù)庫(kù)可以采用mysql關(guān)系型數(shù)據(jù)庫(kù),以下對(duì)該系統(tǒng)進(jìn)行詳細(xì)描述:包括步驟601,用戶(hù)在支付子系統(tǒng)進(jìn)行支付業(yè)務(wù)處理。在本步驟中,在支付子系統(tǒng)中進(jìn)行支付業(yè)務(wù)的處理為現(xiàn)有技術(shù),可以參考現(xiàn)有技術(shù)中的內(nèi)容,該支付子系統(tǒng)還可以為其它業(yè)務(wù)子系統(tǒng),在此不再贅述。步驟602,在支付業(yè)務(wù)處理成功后,將通知消息存儲(chǔ)入支付子系統(tǒng)本地的數(shù)據(jù)庫(kù)中。在本步驟中,在支付子系統(tǒng)處理完支付業(yè)務(wù)后,會(huì)產(chǎn)生用于通知發(fā)貨子系統(tǒng)的通知消息,以通知發(fā)貨子系統(tǒng)進(jìn)行發(fā)貨業(yè)務(wù)流程,在本例中通知消息例如包括通知編號(hào)以及通知內(nèi)容,通知編號(hào)例如為1010,該通知編號(hào)包括了指明要同步到哪個(gè)下游子系統(tǒng)的信息,例如通知編號(hào)中的前兩位10即指明要同步到下游的發(fā)貨子系統(tǒng),后面兩位的10是該通知的唯一標(biāo)識(shí),通知內(nèi)容例如進(jìn)一步包括時(shí)間信息以及付款金額,其中,時(shí)間信息是指完成支付的時(shí)間(該時(shí)間也可以為將通知消息存儲(chǔ)入數(shù)據(jù)庫(kù)的時(shí)間),付款金額是指支付的金額。在向數(shù)據(jù)庫(kù)寫(xiě)入通知消息的同時(shí),還可以在通知消息中寫(xiě)入該通知消息的標(biāo)志位,用以標(biāo)記數(shù)據(jù)庫(kù)中通知消息的狀態(tài),例如在寫(xiě)入通知消息時(shí)將該標(biāo)志位置為0,表示通知消息的狀態(tài)為未發(fā)送。在本實(shí)施例中,數(shù)據(jù)庫(kù)可以與支付子系統(tǒng)位于同一臺(tái)計(jì)算機(jī),也可以為單獨(dú)的數(shù)據(jù)庫(kù)服務(wù)器。步驟603,當(dāng)完成通知消息的存儲(chǔ)后,數(shù)據(jù)庫(kù)向支付子系統(tǒng)反饋存儲(chǔ)成功的消息。在數(shù)據(jù)庫(kù)中可以將通知消息存儲(chǔ)于一數(shù)據(jù)庫(kù)表格中,如表1所示為本申請(qǐng)實(shí)施例通知消息表格。表1通知編號(hào)寫(xiě)入時(shí)間支付金額標(biāo)志位10102016-1-14-08-46200010112016-1-14-08-47100011012016-1-14-08-503000其中第一列的通知編號(hào)前面的兩位指示了下游子系統(tǒng),在本實(shí)施例中10指示發(fā)貨子系統(tǒng),11指示消息子系統(tǒng),其中發(fā)貨子系統(tǒng)用于進(jìn)行發(fā)貨業(yè)務(wù)處理,消息子系統(tǒng)用于當(dāng)用戶(hù)支 付完成后,向用戶(hù)手機(jī)發(fā)送支付成功的短信息進(jìn)行通知,通知編號(hào)后面兩位為該通知消息在下游子系統(tǒng)中的唯一標(biāo)識(shí)符。第二列寫(xiě)入時(shí)間可以是支付子系統(tǒng)完成支付的時(shí)間或者為通知消息寫(xiě)入到該表格中的時(shí)間,在本例中只是精確到分鐘,例如2016-14-08-46是指2016年1月14日上午8點(diǎn)46分,還可以包括更精確的時(shí)間信息,例如精確到秒或者毫秒。第三列支付金額是指支付業(yè)務(wù)中支付的金額,具有該支付金額也就是說(shuō)明支付業(yè)務(wù)完成,可以進(jìn)行后續(xù)的發(fā)貨業(yè)務(wù)或者發(fā)送通知短信息業(yè)務(wù)。步驟604,rpc客戶(hù)端按照預(yù)先設(shè)定的周期掃描上述數(shù)據(jù)庫(kù)。在本步驟中,可以根據(jù)數(shù)據(jù)庫(kù)中通知消息的標(biāo)志位來(lái)尋找新加入的通知消息,例如在支付子系統(tǒng)將通知消息寫(xiě)入數(shù)據(jù)庫(kù)中時(shí),在該記錄最后一列加入該條記錄的狀態(tài)標(biāo)識(shí)(例如為0),當(dāng)rpc客戶(hù)端將該通知消息與發(fā)貨子系統(tǒng)進(jìn)行同步時(shí),將該標(biāo)志位修改為1,當(dāng)下一個(gè)掃描周期到來(lái)時(shí),將標(biāo)志位為0的通知消息向發(fā)貨子系統(tǒng)進(jìn)行同步。在本實(shí)施例中采用的是rpc客戶(hù)端,還可以使用其它消息中間件來(lái)實(shí)現(xiàn)該同步裝置的功能。步驟605,將新加入的通知消息與發(fā)貨子系統(tǒng)進(jìn)行同步。在本步驟中,rpc客戶(hù)端將通知消息讀出,并將其發(fā)送給發(fā)貨子系統(tǒng),此時(shí)修改數(shù)據(jù)庫(kù)中通知消息的標(biāo)志位,將原標(biāo)志位0修改為1,以表示該通知消息為已發(fā)送狀態(tài)。在本實(shí)施例中,將通知消息發(fā)送給發(fā)貨子系統(tǒng)之后有兩種可能,一種可能是正常處理業(yè)務(wù),并返回業(yè)務(wù)處理結(jié)果,即業(yè)務(wù)處理成功,進(jìn)入步驟606;還有一種可能,發(fā)貨子系統(tǒng)業(yè)務(wù)處理失敗或者發(fā)貨子系統(tǒng)的服務(wù)器出現(xiàn)問(wèn)題,不能提供相應(yīng)服務(wù),則在預(yù)定時(shí)間內(nèi)沒(méi)有返回業(yè)務(wù)處理結(jié)果,進(jìn)入步驟609。步驟606,發(fā)貨子系統(tǒng)根據(jù)接收到的通知消息進(jìn)行發(fā)貨業(yè)務(wù)處理。在本步驟中的業(yè)務(wù)處理為現(xiàn)有技術(shù),可以參考現(xiàn)有技術(shù)中的技術(shù)手段,在此不再贅述。步驟607,發(fā)貨子系統(tǒng)向rpc客戶(hù)端發(fā)送業(yè)務(wù)處理結(jié)果。在本步驟中的業(yè)務(wù)處理結(jié)果中包括了通知編號(hào)以及業(yè)務(wù)處理結(jié)果,在本例中通知編號(hào)為1010,業(yè)務(wù)處理結(jié)果為成功。步驟608,rpc客戶(hù)端根據(jù)業(yè)務(wù)處理結(jié)果刪除數(shù)據(jù)庫(kù)中相應(yīng)的通知消息。在本步驟中,通知編號(hào)為1010,該rpc客戶(hù)端在數(shù)據(jù)庫(kù)中查找到相應(yīng)通知編號(hào)的記錄,刪除該記錄;或者查找到相應(yīng)通知編號(hào)的記錄后,先修改該通知消息的標(biāo)志位,即將標(biāo)志位1改為2,以表示該通知消息狀態(tài)為處理完成,然后再刪除所有標(biāo)志位為2的通知消息,至此,在下一個(gè)掃描周期到來(lái)時(shí),rpc客戶(hù)端不會(huì)再次發(fā)送該處理成功的通知消息。步驟609,在所述預(yù)定時(shí)間之后,沒(méi)有接收到發(fā)貨子系統(tǒng)發(fā)送的處理結(jié)果,則根據(jù)標(biāo)志 位再次發(fā)送通知消息。在本步驟中,在預(yù)定時(shí)間后,沒(méi)有接收到發(fā)貨子系統(tǒng)發(fā)送的處理結(jié)果,將標(biāo)志位為1的通知消息再次向發(fā)貨子系統(tǒng)進(jìn)行發(fā)送。這個(gè)步驟609可能重復(fù)多次,知道接收到發(fā)貨子系統(tǒng)發(fā)送的處理結(jié)果為止,當(dāng)接收到發(fā)貨子系統(tǒng)反饋的處理結(jié)果時(shí)返回步驟608。本步驟主要是針對(duì)下游子系統(tǒng)沒(méi)有反饋處理結(jié)果的情況,此時(shí)通過(guò)rpc客戶(hù)端根據(jù)預(yù)定的時(shí)間重復(fù)發(fā)送通知消息,可以解決下游子系統(tǒng)出現(xiàn)問(wèn)題不能提供服務(wù)的問(wèn)題,其中的預(yù)定時(shí)間可以為任意時(shí)間,例如1分鐘、1小時(shí)等。通過(guò)上述本申請(qǐng)實(shí)施例中的方法及裝置,將通知消息存儲(chǔ)在上游子系統(tǒng)中,令rpc客戶(hù)端定時(shí)獲取通知消息,并將該通知消息發(fā)送給下游子系統(tǒng),實(shí)現(xiàn)了上游子系統(tǒng)和下游子系統(tǒng)之間的隔離,提高了整個(gè)分布式事務(wù)處理系統(tǒng)的可用性,即便下游子系統(tǒng)不能工作,也可以在恢復(fù)正常后通過(guò)rpc客戶(hù)端自動(dòng)查詢(xún)通知消息,并進(jìn)行同步,還可以減少對(duì)每個(gè)上游子系統(tǒng)和下游子系統(tǒng)之間通信的編碼成本。對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開(kāi)關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過(guò)將改進(jìn)的方法流程編程到硬件電路中來(lái)得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說(shuō)一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來(lái)實(shí)現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場(chǎng)可編程門(mén)陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶(hù)對(duì)器件編程來(lái)確定。由設(shè)計(jì)人員自行編程來(lái)把一個(gè)數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請(qǐng)芯片制造廠商來(lái)設(shè)計(jì)和制作專(zhuān)用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來(lái)實(shí)現(xiàn),它與程序開(kāi)發(fā)撰寫(xiě)時(shí)所用的軟件編譯器相類(lèi)似,而要編譯之前的原始代碼也得用特定的編程語(yǔ)言來(lái)撰寫(xiě),此稱(chēng)之為硬件描述語(yǔ)言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog2。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語(yǔ)言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路??刂破骺梢园慈魏芜m當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及 存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門(mén)、開(kāi)關(guān)、專(zhuān)用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過(guò)將方法步驟進(jìn)行邏輯編程來(lái)使得控制器以邏輯門(mén)、開(kāi)關(guān)、專(zhuān)用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來(lái)實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔粒梢詫⒂糜趯?shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。基于這樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)pc、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、 數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。雖然通過(guò)實(shí)施例描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。當(dāng)前第1頁(yè)12