專利名稱:并行處理事務的異步系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及數(shù)據通信領域,尤其涉及一種并行處理事務的異步 系統(tǒng)。
背景技術:
目前,在涉及到socket (套接口 )通信、數(shù)據庫訪問的軟件系 統(tǒng)中,為了提高效率和響應速度, 一般都采用異步方式。比如
1 )用一組線程專門負責socket通信,當有消息到達時,就用 消息通知應用線程,應用線程再進行后續(xù)處理。
2)用一組線程專門負責訪問數(shù)據庫,當數(shù)據庫操作(查詢、 修改等)完成后,用消息把操作結果一批一批的發(fā)給應用線程。
在很多情況下, 一個完整的功能需要進行多次消息操作。比如 在數(shù)據同步應用中(參見圖3), 一個完整的數(shù)據同步過程由幾個到 幾十個消息組成。多個消息按一定先后順序執(zhí)^f于,完成一個獨立的 功能,這些消息就構成一個事務,當事務的最后的一個消息執(zhí)行完 成或事務超時時一個事務才算結束。當多個事務并行執(zhí)行時,必須 加以區(qū)分和同步(否則多個事務交織在一起,必然造成系統(tǒng)混亂), 目前常用的方法有
l)使用全局變量設置很多全局變量,來保存各個事務的狀 態(tài)和中間數(shù)據。
2)同步化同步化是用一個環(huán)形隊列(事務開始事件隊列) 實現(xiàn)的,任何時間段,應用線程要么空閑,要么處理一個事務。一 個事務處理完后,才開始處理下一個事務。在一個事務處理期間, 其他事務請求被緩存在"事務開始事件隊列"中。
采用第一種方法將導致系統(tǒng)的設計非常復雜和難以理解,進而 導致系統(tǒng)難以維護。采用第二種方法雖然簡化了系統(tǒng)的設計、解決 了多個事務相互干擾的問題,但這種方法使系統(tǒng)變成一個同步順序 處理的系統(tǒng),socket線程和數(shù)據庫訪問線程的優(yōu)勢得不到發(fā)揮。
上述方法都有很大的缺陷,實際應用中,需要一種即能解決多 個事務并行執(zhí)行時相互干擾的問題,又能使設計、開發(fā)都比較簡單 的方法。
發(fā)明內容
本發(fā)明的主要目的在于提供一種并行處理事務的異步系統(tǒng),用 于用事務和狀態(tài)機構造高效異步系統(tǒng),即能解決異步系統(tǒng)中事務間 相互干擾,又能簡化系統(tǒng)的設計和實現(xiàn)。
為了實現(xiàn)上述目的,本發(fā)明提供了一種并行處理事務的異步系 統(tǒng)。該異步系統(tǒng)包^^:應用層,用于實現(xiàn)具體業(yè)務處理;異步才幾制 層,用于進行異步處理;事務處理層,位于應用層與異步機制層之 間,用于創(chuàng)建事務對象,事務對象用事務對象標識來唯一標識,以 及用于將來自異步機制層的異步消息轉換成事務對象的事件,將事 務對象的事件轉換成異步機制層所需的異步消息。其中,不同的事 務對象用不同的事務對象標識來區(qū)別,在事務處理過程中采用的消 息中攜帶事務對象標識,以實現(xiàn)不同的事務對象的并行運行。
異步機制層可以包括socket線程和數(shù)據庫訪問線程。 事務處理可以包4舌數(shù)才居同步處理。數(shù)才居同步處理可以包4舌同步 單條記錄、同步所有記錄、以及同步單模塊數(shù)據。
通過上述技術方案,本發(fā)明不僅能夠解決異步系統(tǒng)中多個事務 并行執(zhí)行時相互干擾的問題,提高系統(tǒng)的效率,而且可以使異步系 統(tǒng)的開發(fā)得到簡化。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申 請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并
不構成對本發(fā)明的不當限定。在附圖中
圖1是根據本發(fā)明的并行處理事務的異步方法的流程圖2是根據本發(fā)明的并行處理事務的異步系統(tǒng)的框圖3是根據本發(fā)明實施例的異步系統(tǒng)的數(shù)據同步實例的示意
圖4是根據本發(fā)明實施例的在異步系統(tǒng)中引入事務和狀態(tài)機后 系統(tǒng)的結構圖5是根據本發(fā)明實施例的數(shù)據同步對象的狀態(tài)圖6是根據本發(fā)明實施例的狀態(tài)機類的層次結構圖7是# 據本發(fā)明實施例的同步單條記錄的狀態(tài)圖8是根據本發(fā)明實施例的同步單條記錄的順序圖;以及
圖9是根據本發(fā)明實施例的方法的流程圖。 JM^實施方式
下面將參考附圖詳細i兌明本發(fā)明。
參照圖1,根據本發(fā)明的并行處理事務的異步方法包括以下步
驟
步驟S102,收到來自應用層的事務請求消息,創(chuàng)建事務對象, 事務對象用事務對象標識來唯一標識。
步驟S104,事務對象進入開始狀態(tài),基于事務對象標識,在應 用層與異步機制層之間執(zhí)行事務處理。
進一步地,將來自異步機制層的異步消息轉換成事務對象的事 件,將事務對象的事件轉換成異步機制層所需的異步消息。
步驟S106,事務處理結束后,釋放事務對象,回收事務對象標識。
不同的事務對象用不同的事務對象標識來區(qū)別,在事務處理過 程中采用的消息中攜帶事務對象標識,以實現(xiàn)不同的事務對象的并 行運行。
異步才幾制層可以包括^ socket線程和數(shù)據庫訪問線程。
事務處理可以包括數(shù)據同步處理。數(shù)據同步處理可以包括同步 單條記錄、同步所有記錄、以及同步單模塊數(shù)據。
參照圖2,根據本發(fā)明的并行處理事務的異步系統(tǒng)10包括應 用層20,用于實現(xiàn)具體業(yè)務處理;異步機制層30,用于進行異步 處理;事務處理層40,位于應用層20與異步機制層30之間,用于 創(chuàng)建事務對象,事務對象用事務對象標識來唯一標識,以及用于將來自異步機制層30的異步消息轉換成事務對象的事件,將事務對 象的事件轉換成異步機制層30所需的異步消息。其中,不同的事 務對象用不同的事務對象標識來區(qū)別,在事務處理過程中采用的消 息中攜帶事務對象標識,以實現(xiàn)不同的事務對象的并行運行。
異步機制層30可以包括socket線程和數(shù)據庫訪問線程。
事務處理可以包括數(shù)據同步處理。翁:據同步處理可以包括同步 單條記錄、同步所有記錄、以及同步單模塊數(shù)據。
本發(fā)明涉及^:據通信領域,具體地i兌,涉及一種用事務和狀態(tài) 機構造高效率異步系統(tǒng)的方法。本發(fā)明提供的構造高效異步系統(tǒng)的 技術是這樣實現(xiàn)的采用分層架構,在基本異步機制(socket線程、 凄t據訪問線程等)的基礎上增加一個抽象的事務處理層(參見圖4 )。 事務是用狀態(tài)機實現(xiàn)的, 一個事務就是一個狀態(tài)機。每個事務都用 一個狀態(tài)才幾ID唯一標識。事務層負責狀態(tài)才幾ID的管理、把底層異 步消息轉化為FSM (狀態(tài)機)的事件、把應用層的FSM事件轉換 為socket消息或數(shù)據庫請求、創(chuàng)建、驅動和銷毀狀態(tài)機?,F(xiàn)在以數(shù) 據同步應用(參見圖3和圖5)為例加以說明。
A. Socket線考呈收到進程A的翁:據同步請求后,用消息通知事 務層。
B. 事務層發(fā)現(xiàn)這是一個事務開始消息,然后創(chuàng)建一個數(shù)據同 步只于象,該對象進入TrBegin (開始狀態(tài))。
C. 在TrBegin狀態(tài)中,數(shù)據同步對象向數(shù)據庫線程發(fā)查詢請 求,然后進入TrWaitDbAck (等待數(shù)據庫操作查詢結果)狀態(tài)。D. 在TrWaitDbAck狀態(tài)中,教:據同步對象接收數(shù)據庫返回的 每批查詢結果,并暫存每批查詢結果,直到收到最后一批查詢結果。 收全查詢結果后,進入TrWaitTransDataAck (傳送凄t據)狀態(tài)。
E. 在TrWaitTransDataAck狀態(tài)中,教:據同步對象通過socket 線程向進程B分批發(fā)送數(shù)據,每發(fā)送一批都要等進程B返回的數(shù)據 確認消息后才發(fā)送下 一批數(shù)據,直到收到最后 一批數(shù)據的確認消 息。數(shù)據發(fā)送完畢后,進入TrEnd (結束)狀態(tài)。
F. 在TrEnd狀態(tài)中,數(shù)據同步對象通過socket線程向進程A 發(fā)數(shù)據同步成功響應消息,然后事務結束。
G. 在以上各步中,如果超時,則進入TrTimeOut(超時)狀態(tài)。 在TrTimeOut狀態(tài),數(shù)據同步對象向進程A發(fā)數(shù)據同步超時事件, 然后事務結束。
H. 事務結束時,事務層將釋放數(shù)據同步對象,同時回收事務ID。
應用線程中可并行運行多個事務,由于每個事務都是一個獨立 的對象,所以數(shù)據相關性降到最小。所有事務都是消息驅動的。一 個事務在等待其下一個事件時(如等待數(shù)據庫查詢結果、等待對端 發(fā)數(shù)據響應等),別的事務仍然可以繼續(xù)運行,這樣系統(tǒng)可以達到 最佳的并行性。
另夕卜,系統(tǒng)的開發(fā)也得到簡化,開發(fā)人員只需要用順序執(zhí)行的 思維方式去開發(fā)狀態(tài);f幾對象i殳置超時時限、編寫本狀態(tài)應該執(zhí)4亍 的動作、設置下一個狀態(tài)。
下面結合附圖,對技術方案的實施作進一步的詳細描述
需要強調的是本方法可以應用在所有異步4欠件系統(tǒng)中,由于 各種異步系統(tǒng)的實現(xiàn)方式和接口都不一樣,為了敘述的方便,下面 采用一種具體的異步系統(tǒng)進行說明。
假設底層異步機制提供給應用線程的接口為
1) void Entry (unsigned short event, unsigned char *msg, unsigned short msgLen);
當有其他線程向應用線程發(fā)消息時,Entry被調用。參數(shù)event 是事件號;msg和msgLen用于描述消息。
2 ) unsigned char ASEND(unsigned short event, unsigned char *msg, unsigned short msgLen, PID receiver);
當應用線程向其他線程發(fā)消息時,它就調用ASEND。參數(shù)event 是事^f牛號;msg和msgLen用于4笛述消息;receiver用于指定消息的 接收者。
可以在這兩個接口上構造事務層。所有消息中都攜帶了 "本端 4犬態(tài)才幾號"和"對端4犬態(tài)4幾號"。
所有事務都是從CFsm類繼承得到的,如圖6所示。圖6是數(shù) 才居同步的例子。CDataSyncARecord是用于同步單條i己錄的事務, CDataSyncAll是用于同步所有記錄的事務,CDataSyncAModule是 用于同步單才莫塊數(shù)據的事務。下面以"同步單條記錄,,(參見圖7)
這個事務加以說明(參見圖8、圖9)。
A.底層異步機制把一個異步消息觸發(fā)到事務層。
C. 如果"對端狀態(tài)4幾號"為0,則表示該消息是個事務開始消 息。此時分配一個狀態(tài)機號,然后根據收到的事件號(event)從事 務類注冊表里找到合適的事務類。這里假設收到的消息是同步單條 記錄的請求,則相應的事務類是CdataSyncARecord。
D. 創(chuàng)建FSM對象用CdataSyncARecord類的自創(chuàng)建方法 (CreateSelf),用前一步分配的狀態(tài)機號為參數(shù)創(chuàng)建一個事務處理
對象。該對象進入TrBegin狀態(tài)。
E. TrBegin處理在TrBegin狀態(tài)中,根據收到的消息,構造 維護單條記錄的SQL語句,提交給數(shù)據庫處理線程,應用進程進入 等待數(shù)據庫操作結果狀態(tài)。
F. 狀態(tài)驅動此后當應用進程收到消息后,如果消息中攜帶的 "對端狀態(tài)機號"和本對象的"狀態(tài)機號"相等,則事務層把該消
息轉化為FSM事件,分發(fā)給本對象,進而驅動本對象的狀態(tài)機。
G. 當"同步單條記錄"對象收到最后一個消息或某個狀態(tài)處理 超時時,事務進入結束狀態(tài),然后事務層回收該事務。流程結束。
從上面的4又述中可以看出,采用本方法構造的異步系統(tǒng)由三部 分組成(如圖4所示),其中異步機制是異步系統(tǒng)的固有部分不需 要做額外的修改;事務層是本方法的核心,但是它的功能非常穩(wěn)定 并且具有通用性,并且從一種異步機制移植到另一種異步機制上, 只需要很小的開發(fā)成本;應用層實現(xiàn)具體業(yè)務處理,應用層的主要 設計開發(fā)工作集中在事務處理類的狀態(tài)處理的實現(xiàn)上。
把由多個消息共同完成的一個功能抽象成事務,然后用事務對 象(狀態(tài)機)實現(xiàn)每個具體的事務,使原來需要維護的大量狀態(tài)數(shù) 據得到封裝,使事務之間的數(shù)據相關性降低到最小,從而使多個事
務可以并行執(zhí)行。另外采用本方法抽象得出的事務對象,使系統(tǒng)化 整為零,每個事務都不存在相互干擾,所以使設計開發(fā)變的簡單。
以上所述^又為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā) 明,對于本領域的才支術人員來說,本發(fā)明可以有各種更改和變化。 凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進 等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種并行處理事務的異步系統(tǒng),其特征在于,包括應用層,用于實現(xiàn)具體業(yè)務處理;異步機制層,用于進行異步處理;事務處理層,位于所述應用層與所述異步機制層之間,用于創(chuàng)建事務對象,所述事務對象用事務對象標識來唯一標識,以及用于將來自所述異步機制層的異步消息轉換成所述事務對象的事件,將所述事務對象的事件轉換成所述異步機制層所需的異步消息,其中,不同的事務對象用不同的事務對象標識來區(qū)別,在事務處理過程中采用的消息中攜帶所述事務對象標識,以實現(xiàn)不同的事務對象的并行運行。
2. 根據權利要求1所述的異步系統(tǒng),其特征在于,所述異步機制 層包括socket線程和數(shù)據庫訪問線程。
3. 根據權利要求1或2所述的異步系統(tǒng),其特征在于,所述事務 處理包括數(shù)據同步處理。
4. 根據權利要求3所述的異步系統(tǒng),其特征在于,所述數(shù)據同步 處理包括同步單條記錄、同步所有記錄、以及同步單模塊數(shù)據。
全文摘要
本發(fā)明公開了一種并行處理事務的異步系統(tǒng)。該異步系統(tǒng)包括應用層,用于實現(xiàn)具體業(yè)務處理;異步機制層,用于進行異步處理;事務處理層,位于應用層與異步機制層之間,用于創(chuàng)建事務對象,事務對象用事務對象標識來唯一標識,以及用于將來自異步機制層的異步消息轉換成事務對象的事件,將事務對象的事件轉換成異步機制層所需的異步消息。其中,不同的事務對象用不同的事務對象標識來區(qū)別,在事務處理過程中采用的消息中攜帶事務對象標識,以實現(xiàn)不同的事務對象的并行運行。不僅能夠解決異步系統(tǒng)中多個事務并行執(zhí)行時相互干擾的問題,提高系統(tǒng)的效率,而且可以使異步系統(tǒng)的開發(fā)得到簡化。
文檔編號G06F9/46GK101192172SQ20061014034
公開日2008年6月4日 申請日期2006年11月27日 優(yōu)先權日2006年11月27日
發(fā)明者強 付 申請人:中興通訊股份有限公司