一種繁忙處理節(jié)點(diǎn)的散列方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種繁忙處理節(jié)點(diǎn)的散列方法和系統(tǒng),該方法包括:為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列、多個(gè)散列處理節(jié)點(diǎn)及其操作記錄表;將繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給多個(gè)散列處理節(jié)點(diǎn)之一,將其操作錄入其對(duì)應(yīng)的操作記錄表;通過消息隊(duì)列,將各個(gè)操作記錄表中的操作記錄實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)處;將尚未回寫和/或未成功回寫到的操作記錄表中的操作記錄非實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)處。本發(fā)明同時(shí)公開了相應(yīng)的繁忙處理節(jié)點(diǎn)的散列系統(tǒng)。本發(fā)明能夠降低數(shù)據(jù)處理系統(tǒng)資源沖突,避免了鎖死、超時(shí)等現(xiàn)象,大大提高了數(shù)據(jù)處理系統(tǒng)的穩(wěn)定性和健壯性。
【專利說明】一種繁忙處理節(jié)點(diǎn)的散列方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及一種用于繁忙處理節(jié)點(diǎn)的散列方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著信息技術(shù)的不斷發(fā)展,各種信息量越來越龐大,各行各業(yè)使用的數(shù)據(jù)處理系統(tǒng)所需處理的數(shù)據(jù)量也越來越龐大。不僅是一些跨國大公司業(yè)務(wù)流,網(wǎng)絡(luò)資源分配,銀行業(yè)務(wù)等所處理的數(shù)據(jù)量龐大,就連一些傳統(tǒng)的行業(yè)諸如工廠流水線,交通疏導(dǎo)等也涉及龐雜的數(shù)據(jù)處理過程。在這些行業(yè)系統(tǒng)中,各個(gè)數(shù)據(jù)處理節(jié)點(diǎn)的作業(yè)繁忙程度不盡相同,有些核心節(jié)點(diǎn)非常繁忙,數(shù)據(jù)吞吐量異常巨大,尤其存在某些數(shù)據(jù)處理節(jié)點(diǎn)處接收到的數(shù)據(jù)處理指令高并發(fā)的情況。
[0003]在現(xiàn)有技術(shù)中,對(duì)于這種繁忙處理節(jié)點(diǎn)的資源沖突情況往往都會(huì)通過提高其處理速度,或更換高速處理器等手段來解決,但這些解決方式不僅花費(fèi)巨大,并且當(dāng)某個(gè)數(shù)據(jù)處理節(jié)點(diǎn)處的數(shù)據(jù)處理量增大到一定程度時(shí),會(huì)造成系統(tǒng)反應(yīng)變慢,資源沖突,甚至系統(tǒng)鎖死,處理中斷或非正常結(jié)束等一系列嚴(yán)重的后果,重新處理這些數(shù)據(jù)的過程將會(huì)非常繁雜。
[0004]因此,需要一種針對(duì)繁忙處理節(jié)點(diǎn)的處理機(jī)制,來解決上述問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明正是基于上述問題,提出了一種繁忙處理節(jié)點(diǎn)的散列方法和系統(tǒng),其通過將繁忙處理節(jié)點(diǎn)散列為多個(gè)散列處理節(jié)點(diǎn),以降低繁忙處理節(jié)點(diǎn)的數(shù)據(jù)處理壓力,并避免資源沖突。
[0006]為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提出了一種繁忙處理節(jié)點(diǎn)的散列方法,該方法包括:
[0007]S1:為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列和多個(gè)散列處理節(jié)點(diǎn),并為每個(gè)散列處理節(jié)點(diǎn)設(shè)置相對(duì)應(yīng)的操作記錄表;
[0008]S2:將所述繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給所述多個(gè)散列處理節(jié)點(diǎn)的其中之一,將該散列處理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)處理指令所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,并將所述操作記錄中的索引信息寫入所述消息隊(duì)列中;
[0009]S3:通過所述消息隊(duì)列,將各個(gè)所述散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表中的操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處;
[0010]S4:將尚未回寫和/或未成功回寫到所述繁忙處理節(jié)點(diǎn)處的操作記錄表中的操作記錄非實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處。
[0011]本發(fā)明同時(shí)提出了一種繁忙處理節(jié)點(diǎn)的散列系統(tǒng),該系統(tǒng)包括:
[0012]設(shè)置單元,其配置成為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列和多個(gè)散列處理節(jié)點(diǎn),并為每個(gè)散列處理節(jié)點(diǎn)設(shè)置相對(duì)應(yīng)的操作記錄表;
[0013]處理單元,其配置為將所述繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給所述多個(gè)散列處理節(jié)點(diǎn)的其中之一,將該散列處理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)處理指令所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,并將所述操作記錄中的索引信息寫入所述消息隊(duì)列中;
[0014]實(shí)時(shí)回寫單元,其配置為通過所述消息隊(duì)列,將各個(gè)所述散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表中的操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處;
[0015]非實(shí)時(shí)回寫單元,其配置為將尚未回寫和/或未成功回寫到所述繁忙處理節(jié)點(diǎn)處的操作記錄表中的操作記錄非實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處。
[0016]本發(fā)明中的繁忙處理節(jié)點(diǎn)的散列方法和系統(tǒng)與現(xiàn)有技術(shù)相比具有如下有益的技術(shù)效果:
[0017]1、對(duì)數(shù)據(jù)處理作業(yè)過程透明,無需改造已有的作業(yè)流程,僅僅從后臺(tái)技術(shù)上實(shí)現(xiàn),改造成本低,見效快;
[0018]2、解決了繁忙處理節(jié)點(diǎn)的資源沖突問題,避免了死鎖、超時(shí)等現(xiàn)象,提高了數(shù)據(jù)處理系統(tǒng)的穩(wěn)定性和健壯性;
[0019]3、對(duì)于繁忙處理節(jié)點(diǎn)實(shí)行參數(shù)化控制,當(dāng)發(fā)生大規(guī)模數(shù)據(jù)處理作業(yè)沖突時(shí),可通過調(diào)整參數(shù),較快的將繁忙處理節(jié)點(diǎn)進(jìn)行散列處理,可維護(hù)性高。
【專利附圖】
【附圖說明】
[0020]圖1是本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法的流程圖;
[0021]圖2是根據(jù)本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法中的配置散列處理節(jié)點(diǎn)的流程圖;
[0022]圖3是根據(jù)本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法中的實(shí)時(shí)回寫過程的流程圖;
[0023]圖4是根據(jù)本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法中的非實(shí)時(shí)回寫過程的流程圖;
[0024]圖5是本發(fā)明的繁忙處理節(jié)點(diǎn)的散列系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025]下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明。
[0026]圖1是本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法的流程圖。如圖1所示,本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法包括:
[0027]S1:為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列和多個(gè)散列處理節(jié)點(diǎn),并為每個(gè)散列處理節(jié)點(diǎn)設(shè)置相對(duì)應(yīng)的操作記錄表;
[0028]該步驟中用于配置繁忙處理節(jié)點(diǎn)所對(duì)應(yīng)的散列處理節(jié)點(diǎn)。對(duì)于每一個(gè)繁忙處理節(jié)點(diǎn)來說,其所需處理的數(shù)據(jù)處理指令數(shù)量龐大,而且復(fù)雜程度高,這對(duì)于有限的數(shù)據(jù)處理資源來說無疑是很大的挑戰(zhàn)。當(dāng)多個(gè)數(shù)據(jù)處理指令同時(shí)到達(dá)繁忙處理節(jié)點(diǎn)A,請(qǐng)求繁忙處理節(jié)點(diǎn)A進(jìn)行處理時(shí),需要配置數(shù)量為η的散列處理節(jié)點(diǎn),這里η是大于I的自然數(shù),并且可以根據(jù)作業(yè)的繁忙程度對(duì)η的數(shù)值實(shí)時(shí)進(jìn)行更改。當(dāng)單位時(shí)間內(nèi)到達(dá)繁忙處理節(jié)點(diǎn)A的數(shù)據(jù)處理指令較多時(shí),為繁忙處理節(jié)點(diǎn)A設(shè)置較多的散列處理節(jié)點(diǎn);當(dāng)單位時(shí)間內(nèi)到達(dá)繁忙處理節(jié)點(diǎn)A的數(shù)據(jù)處理指令較少時(shí),可為繁忙處理節(jié)點(diǎn)A設(shè)置較少的散列處理節(jié)點(diǎn)。
[0029]這里為每個(gè)散列處理節(jié)點(diǎn)設(shè)置對(duì)應(yīng)的操作記錄表,用以記錄散列處理節(jié)點(diǎn)對(duì)數(shù)據(jù)處理指令的處理過程和/或結(jié)果記錄。同時(shí)為該繁忙處理節(jié)點(diǎn)A設(shè)置一個(gè)消息隊(duì)列(隊(duì)列)以備用。繁忙處理節(jié)點(diǎn)A默認(rèn)地具備對(duì)應(yīng)的操作記錄表。
[0030]S2:將繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給所述多個(gè)散列處理節(jié)點(diǎn)的其中之一,將該散列處理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)處理指令所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,并將操作記錄中的索引信息寫入消息隊(duì)列中;
[0031]在該步驟中,繁忙處理節(jié)點(diǎn)A在邏輯上對(duì)多個(gè)數(shù)據(jù)處理指令進(jìn)行處理,但實(shí)際上該多個(gè)數(shù)據(jù)處理指令分派給各個(gè)散列處理節(jié)點(diǎn)處進(jìn)行處理。相比之下,在現(xiàn)有技術(shù)中,該多個(gè)數(shù)據(jù)處理指令均由繁忙處理節(jié)點(diǎn)A來進(jìn)行處理,這種處理方式在數(shù)據(jù)處理指令并發(fā)量大時(shí)容易造成數(shù)據(jù)處理資源沖突,系統(tǒng)死鎖,延時(shí)等問題。所以本發(fā)明中將發(fā)送至繁忙處理節(jié)點(diǎn)A的數(shù)據(jù)處理指令都下發(fā)至其散列處理節(jié)點(diǎn)處理。也就是說,散列處理節(jié)點(diǎn)對(duì)外是不可見的,在邏輯上仍然是繁忙處理節(jié)點(diǎn)A在處理所有的數(shù)據(jù)處理指令。
[0032]散列處理節(jié)點(diǎn)根據(jù)所接收的數(shù)據(jù)處理指令進(jìn)行處理,將處理過程中所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,同時(shí)將各條操作記錄的索引信息寫入消息隊(duì)列中,索引信息可包括繁忙處理節(jié)點(diǎn)A的名稱和地址、數(shù)據(jù)處理指令的時(shí)間戳、各條操作記錄的序號(hào)等。
[0033]S3:通過所述消息隊(duì)列,將各個(gè)所述散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表中的操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處;
[0034]在該步驟中,通過消息隊(duì)列,將各散列處理節(jié)點(diǎn)對(duì)應(yīng)的操作記錄表中的操作記錄實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中。由于消息隊(duì)列中記載有各條操作記錄的索引信息,因此通過讀取消息隊(duì)列中的該索引信息,能夠順暢地將散列處理節(jié)點(diǎn)的操作記錄表中的各條操作記錄回寫到繁忙處理節(jié)點(diǎn)A相應(yīng)的操作記錄表中。
[0035]以上步驟SI至S3為實(shí)時(shí)處理過程,也就是說,繁忙處理節(jié)點(diǎn)A —邊將接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)到各散列處理節(jié)點(diǎn),一邊接受來自各散列處理節(jié)點(diǎn)執(zhí)行這些指令后的操作記錄的回寫。由于是實(shí)時(shí)處理過程,有可能會(huì)出現(xiàn)部分散列處理節(jié)點(diǎn)的操作記錄未能寫回或者未能成功寫回的情況,因此需要在實(shí)時(shí)處理過程結(jié)束后,也即所有的數(shù)據(jù)處理指令均處理完畢后,進(jìn)行下面的非實(shí)時(shí)寫回步驟S4。
[0036]S4:將尚未回寫和/或未成功回寫到所述繁忙處理節(jié)點(diǎn)處的操作記錄表中的操作記錄非實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處。
[0037]該步驟中,將散列處理節(jié)點(diǎn)的未能實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)A處的操作記錄,通過批量處理的方式,回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中。具體來說,在實(shí)時(shí)回寫過程中可能會(huì)存在一些回寫失敗的情況,還可能發(fā)生消息隊(duì)列出現(xiàn)故障等意外情況,導(dǎo)致某個(gè)或某些散列處理節(jié)點(diǎn)沒能實(shí)時(shí)異步回寫。這時(shí),通過步驟S4將散列處理節(jié)點(diǎn)的尚未回寫或未能成功回寫的那些操作記錄批量回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中。
[0038]散列處理節(jié)點(diǎn)操作記錄的非實(shí)時(shí)回寫步驟S4可以設(shè)置一個(gè)啟動(dòng)條件。例如,設(shè)置為當(dāng)消息隊(duì)列出現(xiàn)故障時(shí)啟用散列處理節(jié)點(diǎn)操作記錄的非實(shí)時(shí)回寫;或者設(shè)置一個(gè)時(shí)間點(diǎn),例如周期性地以預(yù)定時(shí)間段(例如每天20:00至次日6:00)進(jìn)行散列處理節(jié)點(diǎn)操作記錄的非實(shí)時(shí)批量回寫。
[0039]通過本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法,通過將繁忙處理節(jié)點(diǎn)散列為多個(gè)散列處理節(jié)點(diǎn),能夠降低繁忙處理節(jié)點(diǎn)的數(shù)據(jù)處理壓力,并能夠避免資源沖突。
[0040]圖2是根據(jù)本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法中的配置散列處理節(jié)點(diǎn)的流程圖。
[0041]如圖2所示,在配置散列處理節(jié)點(diǎn)時(shí),首先配置散列參數(shù)表(Sll),該散列參數(shù)表包括散列處理節(jié)點(diǎn)的所需數(shù)量、消息隊(duì)列的寫入地址以及繁忙處理節(jié)點(diǎn)的寫入地址,這里的繁忙處理節(jié)點(diǎn)的寫入地址可具體為該繁忙處理節(jié)點(diǎn)的操作記錄表的寫入地址。[0042]之后,檢測是否預(yù)先為該繁忙處理節(jié)點(diǎn)設(shè)置了散列處理節(jié)點(diǎn)(S12)。執(zhí)行步驟S12是因?yàn)椋绻诋?dāng)前的散列操作之前已經(jīng)對(duì)繁忙處理節(jié)點(diǎn)執(zhí)行過散列操作,則會(huì)存在已經(jīng)設(shè)置的散列處理節(jié)點(diǎn),因此需要確定當(dāng)前的散列操作是基于之前已經(jīng)設(shè)置的散列處理節(jié)點(diǎn),還是獨(dú)立開始的一次散列操作。
[0043]如果步驟S12中的檢測結(jié)果為未預(yù)先設(shè)置散列處理節(jié)點(diǎn),則進(jìn)行到步驟S13,根據(jù)散列參數(shù)表中記錄的散列處理節(jié)點(diǎn)的所需數(shù)量來設(shè)置散列處理節(jié)點(diǎn),從而能夠根據(jù)實(shí)際需要來設(shè)置散列處理節(jié)點(diǎn)的數(shù)目。
[0044]如果步驟S12中的檢測結(jié)果為已預(yù)先設(shè)置有散列處理節(jié)點(diǎn),則進(jìn)行到步驟S14,檢測預(yù)先設(shè)置的散列處理節(jié)點(diǎn)的數(shù)量是否小于散列參數(shù)表中設(shè)置的散列處理節(jié)點(diǎn)的所需數(shù)量,如果檢測結(jié)果為否,則結(jié)束散列處理節(jié)點(diǎn)的設(shè)置步驟SI,而如果檢測結(jié)果為小于,則執(zhí)行步驟S15,在預(yù)先設(shè)置的散列處理節(jié)點(diǎn)的基礎(chǔ)上順序增設(shè)補(bǔ)充的散列處理節(jié)點(diǎn),直至散列處理節(jié)點(diǎn)的總數(shù)與所述散列參數(shù)表中的所述所需數(shù)量相一致,這里,可在先前設(shè)置的散列處理節(jié)點(diǎn)的已有序號(hào)的基礎(chǔ)上順序遞增新的序號(hào)作為補(bǔ)充散列處理節(jié)點(diǎn)的序號(hào)。
[0045]通過圖2所示的散列處理節(jié)點(diǎn)的設(shè)置方式,能夠使得本發(fā)明的散列方法具有很好的兼容性,即,在首次對(duì)繁忙處理節(jié)點(diǎn)進(jìn)行散列操作之后,不需要清空所設(shè)置的散列處理節(jié)點(diǎn),而是可以留待下次散列操作時(shí)繼續(xù)使用,從而節(jié)約了數(shù)據(jù)處理資源,提高了處理效率。
[0046]在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)針對(duì)同一對(duì)象的多個(gè)數(shù)據(jù)處理指令分別由不同的散列處理節(jié)點(diǎn)進(jìn)行處理時(shí),各散列處理節(jié)點(diǎn)在各對(duì)應(yīng)的操作記錄表中的針對(duì)該對(duì)象的數(shù)據(jù)處理指令的操作記錄中記錄有一致的索引信息,該索引信息包括對(duì)應(yīng)于針對(duì)該同一對(duì)象的多個(gè)數(shù)據(jù)處理指令的時(shí)間戳,從而在后續(xù)的回寫處理中,能夠?qū)⒕哂幸恢碌臅r(shí)間戳的操作記錄同時(shí)回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中,以便于數(shù)據(jù)記錄的整理。
[0047]圖3是根據(jù)本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法中的實(shí)時(shí)回寫過程的流程圖。
[0048]如圖3所示,在實(shí)時(shí)回寫過程中,基于消息隊(duì)列中的索引信息指向并讀取各個(gè)散列處理節(jié)點(diǎn)對(duì)應(yīng)的操作記錄表中的操作記錄(S31),該消息隊(duì)列中的索引信息可包括繁忙處理節(jié)點(diǎn)的名稱、操作記錄序號(hào)、時(shí)間戳等與散列操作相關(guān)的信息。隨后,根據(jù)讀取的索引信息將各條操作記錄逐條實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中(S32),并將已成功回寫的操作記錄表的狀態(tài)更新為已回寫(S33)。
[0049]通過上述實(shí)時(shí)回寫操作過程,能夠使得繁忙處理節(jié)點(diǎn)向散列處理節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)處理指令的轉(zhuǎn)發(fā)操作與散列處理節(jié)點(diǎn)操作記錄的回寫操作同步進(jìn)行,及時(shí)在繁忙處理節(jié)點(diǎn)處獲得對(duì)數(shù)據(jù)處理指令的操作/處理結(jié)果。
[0050]圖4是根據(jù)本發(fā)明的繁忙處理節(jié)點(diǎn)的散列方法中的非實(shí)時(shí)回寫過程的流程圖。
[0051]如圖4所示,在非實(shí)時(shí)回寫過程中,包括以下步驟:清空所述消息隊(duì)列(S41),以備下次散列操作使用;判斷是否存在狀態(tài)不是已回寫的操作記錄表(S42),如果判定所有散列處理節(jié)點(diǎn)對(duì)應(yīng)的操作記錄表的狀態(tài)均為已回寫,則結(jié)束非實(shí)時(shí)回寫步驟S4,否則將狀態(tài)不是已回寫的操作記錄表中的操作記錄批量回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中(S43),并將S43步驟中已回寫的操作記錄表的狀態(tài)修改為已回寫(S44),之后返回步驟S42進(jìn)行循環(huán)處理,直到所有散列處理節(jié)點(diǎn)的操作記錄表的狀態(tài)均為已回寫時(shí)結(jié)束處理。
[0052]通過上述的非實(shí)時(shí)回寫操作過程,能夠?qū)?shí)時(shí)處理過程中未能成功回寫的或者未回寫的散列處理節(jié)點(diǎn)的操作記錄表進(jìn)行回寫,從而確保數(shù)據(jù)的完整。[0053]圖5是本發(fā)明的繁忙處理節(jié)點(diǎn)的散列系統(tǒng)的結(jié)構(gòu)示意圖。
[0054]如圖5所示,本發(fā)明的散列系統(tǒng)包括設(shè)置單元1、處理單元2、實(shí)時(shí)回寫單元3和非實(shí)時(shí)回寫單元4,其中,設(shè)置單元I為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列和多個(gè)散列處理節(jié)點(diǎn),并為每個(gè)散列處理節(jié)點(diǎn)設(shè)置相對(duì)應(yīng)的操作記錄表;處理單元2將繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給多個(gè)散列處理節(jié)點(diǎn)之一,將該散列處理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)處理指令所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,并將該對(duì)應(yīng)的操作記錄中的索引信息寫入消息隊(duì)列中;實(shí)時(shí)回寫單元3通過消息隊(duì)列而將各個(gè)散列處理節(jié)點(diǎn)對(duì)應(yīng)的操作記錄表中的操作記錄實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)處;非實(shí)時(shí)回寫單元4將尚未回寫和/或未成功回寫到繁忙處理節(jié)點(diǎn)處的操作記錄表中的操作記錄批量回寫到繁忙處理節(jié)點(diǎn)處。
[0055]通過本發(fā)明的繁忙處理節(jié)點(diǎn)的散列系統(tǒng),通過將繁忙處理節(jié)點(diǎn)散列為多個(gè)散列處理節(jié)點(diǎn),能夠降低繁忙處理節(jié)點(diǎn)的數(shù)據(jù)處理壓力,并能夠避免資源沖突。
[0056]在本發(fā)明一個(gè)實(shí)施例中,如圖5所示設(shè)置單元I還可以包括散列參數(shù)表設(shè)置部11和散列處理節(jié)點(diǎn)設(shè)置部12。散列參數(shù)表設(shè)置部11用于配置散列參數(shù)表,該散列參數(shù)表可以包括散列處理節(jié)點(diǎn)的所需數(shù)量、消息隊(duì)列的寫入地址以及繁忙處理節(jié)點(diǎn)的寫入地址等。散列處理節(jié)點(diǎn)設(shè)置部12用于在檢測到預(yù)先未為所述繁忙處理節(jié)點(diǎn)設(shè)置了散列處理節(jié)點(diǎn)時(shí),根據(jù)散列參數(shù)表中記錄的散列處理節(jié)點(diǎn)所需數(shù)量來設(shè)置散列處理節(jié)點(diǎn)的個(gè)數(shù),并在檢測到預(yù)先已設(shè)置的散列處理節(jié)點(diǎn)的數(shù)量小于散列參數(shù)表中記錄的所需數(shù)量時(shí),在預(yù)先已設(shè)置的散列處理節(jié)點(diǎn)的基礎(chǔ)上順序增設(shè)補(bǔ)充的散列處理節(jié)點(diǎn)直至散列處理節(jié)點(diǎn)的總數(shù)與所述散列參數(shù)表中的所述所需數(shù)量相一致。
[0057]通過該實(shí)施例的散列處理節(jié)點(diǎn)的設(shè)置方式,能夠在首次對(duì)繁忙處理節(jié)點(diǎn)進(jìn)行散列操作之后,不需要清空所設(shè)置的散列處理節(jié)點(diǎn),而是可以留待下次散列操作時(shí)繼續(xù)使用,從而節(jié)約了數(shù)據(jù)處理資源,提高了處理效率。
[0058]在本發(fā)明另一個(gè)實(shí)施例中,處理單元2可以進(jìn)一步配置為在將針對(duì)同一對(duì)象的多個(gè)數(shù)據(jù)處理指令分別轉(zhuǎn)發(fā)給不同的散列處理節(jié)點(diǎn)進(jìn)行處理時(shí),將一致的索引信息記錄在各對(duì)應(yīng)的操作記錄表中,索引信息包括對(duì)應(yīng)于該針對(duì)同一對(duì)象的多個(gè)數(shù)據(jù)處理指令的時(shí)間戳。
[0059]本實(shí)施例的散列系統(tǒng)能夠?qū)⒕哂幸恢碌臅r(shí)間戳的操作記錄同時(shí)回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中,以便于數(shù)據(jù)記錄的整理。
[0060]在本發(fā)明的又一實(shí)施例中,如圖5所示,實(shí)時(shí)回寫單元3還可以包括讀取部31、第一回寫部32和第一狀態(tài)更新部33。讀取部31讀取消息隊(duì)列中的索引信息指向的散列處理節(jié)點(diǎn)的操作記錄表中的對(duì)應(yīng)操作記錄,第一回寫部32將操作記錄實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中,第一狀態(tài)更新部33將已成功回寫的操作記錄表的狀態(tài)更新為已回寫。
[0061]本實(shí)施例的散列系統(tǒng)能夠使得繁忙處理節(jié)點(diǎn)向散列處理節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)處理指令的轉(zhuǎn)發(fā)操作與散列處理節(jié)點(diǎn)操作記錄的回寫操作同步進(jìn)行,及時(shí)在繁忙處理節(jié)點(diǎn)處獲得對(duì)數(shù)據(jù)處理指令的操作/處理結(jié)果。
[0062]在本發(fā)明另一個(gè)實(shí)施例中,如圖5所示,非實(shí)時(shí)回寫單元4還可以包括清空處理部41、狀態(tài)判定部42、第二回寫部43和第二狀態(tài)更新部44。清空處理部41清空消息隊(duì)列,狀態(tài)判定部42判斷是否存在狀態(tài)不是已回寫的操作記錄表并將狀態(tài)不是已回寫的所述操作記錄表的判定信息發(fā)送給第二回寫部43,第二回寫部43根據(jù)狀態(tài)判定部42發(fā)送的判定信息而將狀態(tài)不是已回寫的操作記錄表中的操作記錄非實(shí)時(shí)回寫到繁忙處理節(jié)點(diǎn)的操作記錄表中,第二狀態(tài)更新部44將經(jīng)過第二回寫部43回寫的操作記錄表的狀態(tài)修改為已回寫。
[0063]通過本實(shí)施例的散列系統(tǒng),能夠?qū)?shí)時(shí)處理過程中未能成功回寫的或者未回寫的散列處理節(jié)點(diǎn)的操作記錄表進(jìn)行回寫,從而確保數(shù)據(jù)的完整。
[0064]本發(fā)明的繁忙處理節(jié)點(diǎn)散列方法和系統(tǒng)可以應(yīng)用到各個(gè)領(lǐng)域和行業(yè),例如銀行業(yè)務(wù)處理,網(wǎng)絡(luò)資源配置,交通樞紐疏導(dǎo),電信資費(fèi)收繳等等。
[0065]作為示例,以下給出將本發(fā)明的繁忙處理節(jié)點(diǎn)散列方法和系統(tǒng)應(yīng)用至銀行業(yè)務(wù)數(shù)據(jù)處理中的實(shí)施例。
[0066]首先,對(duì)于預(yù)定的繁忙賬戶(即繁忙處理節(jié)點(diǎn))進(jìn)行配置,主要包括繁忙賬戶所需要散列為的虛擬子賬戶(即散列處理節(jié)點(diǎn))個(gè)數(shù),對(duì)應(yīng)的帳戶主表和交易明細(xì)記錄表(即,操作記錄表),以及對(duì)應(yīng)的消息隊(duì)列參數(shù)。這里的繁忙帳戶為目前核心銀行系統(tǒng)中存在的需要頻繁訪問的熱點(diǎn)帳戶,例如銀行集中開立的用于監(jiān)控的內(nèi)部帳戶等。
[0067]在進(jìn)行配置處理時(shí)讀取賬戶散列參數(shù)表,首先確認(rèn)虛擬子賬戶主表中已經(jīng)存在的子帳戶個(gè)數(shù)是否和散列參數(shù)表中記錄的散列個(gè)數(shù)一致。如果不一致,則進(jìn)行虛擬子賬戶主表是做新增還是補(bǔ)充的判斷,如果是補(bǔ)充,則在現(xiàn)有子帳號(hào)的序號(hào)的基礎(chǔ)上順序遞增,作為補(bǔ)充帳號(hào)的序號(hào),在虛擬子賬戶主表中增加新的虛擬子賬戶,以保證虛擬子賬戶主表中的散列個(gè)數(shù)和散列參數(shù)表中的配置值一致;如果是新增,則虛擬子帳號(hào)序號(hào)從例如0001開始,順序遞增增加虛擬子賬戶主表達(dá)到散列參數(shù)表配置的數(shù)量即可。
[0068]當(dāng)執(zhí)行繁忙賬戶的交易時(shí),銀行系統(tǒng)仍使用該繁忙賬戶進(jìn)行其交易業(yè)務(wù)邏輯的處理。使用繁忙賬戶隨機(jī)選中的散列子賬戶記錄交易明細(xì)。針對(duì)同一筆交易的不同類型的交易明細(xì)記錄(如金融交易信息,備注信息,收費(fèi)信息,轉(zhuǎn)帳信息等),虛擬子賬戶交易明細(xì)的序號(hào)需要從I開始遞增,以保證隨后通過消息隊(duì)列進(jìn)行異步補(bǔ)錄或者批量補(bǔ)錄時(shí),同一個(gè)賬戶下所有明細(xì)記錄的序號(hào)是連續(xù)的;同時(shí)確保同一筆交易的不同虛擬子賬戶交易明細(xì)記錄的時(shí)間戳一致。
[0069]隨后,更新虛擬子賬戶主表余額。將繁忙賬戶交易信息寫進(jìn)消息隊(duì)列,主要的交易信息有繁忙賬戶名稱、時(shí)間戳、流水號(hào)等,以便之后消息隊(duì)列會(huì)觸發(fā)一個(gè)專門的程序根據(jù)此關(guān)鍵的要素信息進(jìn)行從虛擬子賬戶到原繁忙賬戶的信息補(bǔ)錄。
[0070]在最后更新賬戶主表和賬戶交易明細(xì)記錄時(shí),不使用該繁忙賬戶,取而代之使用其對(duì)應(yīng)的虛擬子賬戶來更新子賬戶主表和子賬戶交易明細(xì),同時(shí)向?qū)?yīng)的消息隊(duì)列中寫入交易要素信息(即索引信息),以準(zhǔn)備隨后的補(bǔ)錄操作。
[0071]日間聯(lián)機(jī)交易完成后,利用消息隊(duì)列的交易觸發(fā)機(jī)制進(jìn)行日間聯(lián)機(jī)交易的繁忙賬戶相關(guān)余額的更新和交易明細(xì)記錄的補(bǔ)寫(即實(shí)時(shí)回寫操作)。具體為,通過消息隊(duì)列讀取寫入的繁忙賬戶交易信息(繁忙賬戶,時(shí)間戳,交易流水號(hào)),調(diào)用一個(gè)專門的處理程序來完成補(bǔ)錄繁忙賬戶的交易明細(xì)記和更新該賬戶余額,并對(duì)于已補(bǔ)錄的交易明細(xì)記錄更新其虛擬子賬戶狀態(tài)為已補(bǔ)錄。
[0072]在夜模式開始批量處理時(shí),通過批量作業(yè)將當(dāng)天仍未完成補(bǔ)錄動(dòng)作的虛擬子賬戶,或者在日模式下補(bǔ)錄失敗的虛擬子賬戶進(jìn)行再次補(bǔ)錄(即非實(shí)時(shí)回寫操作),以保證交易信息的完整性和正確性。同時(shí),這也可做為一個(gè)應(yīng)急處理的步驟,來應(yīng)對(duì)因?yàn)橄㈥?duì)列故障等意外原因發(fā)生時(shí),對(duì)尚未補(bǔ)錄的虛擬子賬戶交易明細(xì)進(jìn)行補(bǔ)錄。[0073]虛擬子賬戶批量回寫步驟的具體處理如下:調(diào)用消息隊(duì)列清空功能,清空聯(lián)機(jī)的消息隊(duì)列;按照虛擬子賬戶的鍵值排序重新循環(huán)讀取狀態(tài)為未補(bǔ)錄的交易明細(xì)記錄;對(duì)于未補(bǔ)錄狀態(tài)的交易明細(xì)記錄,調(diào)用程序進(jìn)行補(bǔ)錄賬戶交易明細(xì)和更新賬戶余額。
[0074]綜上,通過本發(fā)明的繁忙處理節(jié)點(diǎn)散列方法和系統(tǒng),由于將原先全部由繁忙處理節(jié)點(diǎn)進(jìn)行的大量作業(yè)任務(wù)處理過程分散到了各個(gè)散列處理節(jié)點(diǎn)中,并進(jìn)行處理過程的記錄和回寫,使得整個(gè)系統(tǒng)的數(shù)據(jù)處理壓力大大減輕,緩解了繁忙處理節(jié)點(diǎn)資源沖突的問題,又不涉及對(duì)現(xiàn)有流程的修改,僅從后臺(tái)技術(shù)上實(shí)現(xiàn),改造成本低,見效快,滿足了對(duì)于數(shù)據(jù)處理操作的簡單性和透明性的要求。同時(shí),避免了死鎖、超時(shí)等現(xiàn)象,提高了系統(tǒng)的穩(wěn)定性和健壯性,并提升了作業(yè)處理的效率,保障了作業(yè)處理過程的安全性和穩(wěn)定性。同時(shí),對(duì)于繁忙處理節(jié)點(diǎn)實(shí)行參數(shù)化控制,當(dāng)發(fā)生大規(guī)模繁忙處理節(jié)點(diǎn)沖突時(shí),可通過調(diào)整參數(shù),較快的將繁忙處理節(jié)點(diǎn)進(jìn)行散列處理,可維護(hù)性高。
[0075]顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,上述本申請(qǐng)技術(shù)放案中的各個(gè)模塊和方法可以使用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上。
[0076]以上所述僅為本申請(qǐng)的優(yōu)選實(shí)施例而已,對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的發(fā)明精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種繁忙處理節(jié)點(diǎn)的散列方法,該方法包括: S1:為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列和多個(gè)散列處理節(jié)點(diǎn),并為每個(gè)散列處理節(jié)點(diǎn)設(shè)置相對(duì)應(yīng)的操作記錄表; 52:將所述繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給所述多個(gè)散列處理節(jié)點(diǎn)的其中之一,將該散列處理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)處理指令所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,并將所述操作記錄中的索引信息寫入所述消息隊(duì)列中; 53:通過所述消息隊(duì)列,將各個(gè)所述散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表中的操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處; 54:將尚未回寫和/或未成功回寫到所述繁忙處理節(jié)點(diǎn)處的操作記錄表中的操作記錄非實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處。
2.根據(jù)權(quán)利要求1所述的繁忙處理節(jié)點(diǎn)散列方法,其特征在于,步驟SI具體包括: 511:配置散列參數(shù)表,其包括散列處理節(jié)點(diǎn)的所需數(shù)量、所述消息隊(duì)列的寫入地址以及繁忙處理節(jié)點(diǎn)的寫入地址; 512:檢測是否預(yù)先為所述繁忙處理節(jié)點(diǎn)設(shè)置了散列處理節(jié)點(diǎn),如果檢測結(jié)果為未設(shè)置則進(jìn)行步驟S13,如果檢測結(jié)果為已設(shè)置,則進(jìn)行步驟S14 ; S13、根據(jù)所 述散列參數(shù)表中的所述所需數(shù)量來設(shè)置所述散列處理節(jié)點(diǎn); S14:檢測預(yù)先設(shè)置的散列處理節(jié)點(diǎn)的數(shù)量是否小于所述散列參數(shù)表中的所述所需數(shù)量,如果檢測結(jié)果為小于,則進(jìn)行步驟S15,否則結(jié)束散列處理節(jié)點(diǎn)的設(shè)置步驟SI ; S15、在所述預(yù)先設(shè)置的散列處理節(jié)點(diǎn)的基礎(chǔ)上順序增設(shè)補(bǔ)充的散列處理節(jié)點(diǎn),直至散列處理節(jié)點(diǎn)的總數(shù)與所述散列參數(shù)表中的所述所需數(shù)量相一致。
3.根據(jù)權(quán)利要求1所述的繁忙處理節(jié)點(diǎn)散列方法,其特征在于,在步驟S2中,針對(duì)同一對(duì)象的多個(gè)所述數(shù)據(jù)處理指令在分別由不同的所述散列處理節(jié)點(diǎn)進(jìn)行處理時(shí),在各對(duì)應(yīng)的所述操作記錄表中記錄有一致的所述索引信息,所述索引信息包括對(duì)應(yīng)于所述針對(duì)同一對(duì)象的多個(gè)所述數(shù)據(jù)處理指令的時(shí)間戳。
4.根據(jù)權(quán)利要求1所述的繁忙處理節(jié)點(diǎn)散列方法,其特征在于,步驟S3具體包括: 531、基于所述消息隊(duì)列中的所述索引信息指向并讀取各個(gè)所述散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表中的操作記錄; 532、將所述操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)的操作記錄表中; 533、將已成功回寫的所述操作記錄表的狀態(tài)更新為已回寫。
5.根據(jù)權(quán)利要求4所述的繁忙處理節(jié)點(diǎn)散列方法,其特征在于,步驟S4具體包括: 541、清空所述消息隊(duì)列; 542、判斷是否存在狀態(tài)不是已回寫的操作記錄表,如果判定所有散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表的狀態(tài)均為已回寫,則結(jié)束非實(shí)時(shí)回寫步驟S4,否則轉(zhuǎn)到S43 ; 543、將狀態(tài)不是已回寫的所述操作記錄表中的操作記錄非實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)的操作記錄表中; 544、將S43步驟中已回寫的所述操作記錄表的狀態(tài)修改為已回寫,并返回步驟S42。
6.一種繁忙處理節(jié)點(diǎn)的散列系統(tǒng),該系統(tǒng)包括: 設(shè)置單元,其配置成為繁忙處理節(jié)點(diǎn)設(shè)置消息隊(duì)列和多個(gè)散列處理節(jié)點(diǎn),并為每個(gè)散列處理節(jié)點(diǎn)設(shè)置相對(duì)應(yīng)的操作記錄表;處理單元,其配置為將所述繁忙處理節(jié)點(diǎn)接收到的數(shù)據(jù)處理指令轉(zhuǎn)發(fā)給所述多個(gè)散列處理節(jié)點(diǎn)的其中之一,將該散列處理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)處理指令所進(jìn)行的操作錄入其對(duì)應(yīng)的操作記錄表,并將所述操作記錄中的索引信息寫入所述消息隊(duì)列中; 實(shí)時(shí)回寫單元,其配置為通過所述消息隊(duì)列,將各個(gè)所述散列處理節(jié)點(diǎn)對(duì)應(yīng)的所述操作記錄表中的操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)處; 非實(shí)時(shí)回寫單元,其配置為將尚未回寫和/或未成功回寫到所述繁忙處理節(jié)點(diǎn)處的操作記錄表中的操作記錄批量回寫到所述繁忙處理節(jié)點(diǎn)處。
7.根據(jù)權(quán)利要求6所述的繁忙處理節(jié)點(diǎn)散列系統(tǒng),其特征在于,所述設(shè)置單元包括: 散列參數(shù)表設(shè)置部,其配置散列參數(shù)表,該散列參數(shù)表包括散列處理節(jié)點(diǎn)的所需數(shù)量、所述消息隊(duì)列的寫入地址以及繁忙處理節(jié)點(diǎn)的寫入地址; 散列處理節(jié)點(diǎn)設(shè)置部,其在檢測到預(yù)先未為所述繁忙處理節(jié)點(diǎn)設(shè)置了散列處理節(jié)點(diǎn)時(shí),根據(jù)所述散列參數(shù)表中的所述所需數(shù)量來設(shè)置所述散列處理節(jié)點(diǎn),并在檢測到預(yù)先已設(shè)置的散列處理節(jié)點(diǎn)的數(shù)量小于所述散列參數(shù)表中的所述所需數(shù)量時(shí),在所述預(yù)先已設(shè)置的散列處理節(jié)點(diǎn)的基礎(chǔ)上順序增設(shè)補(bǔ)充的散列處理節(jié)點(diǎn),直至散列處理節(jié)點(diǎn)的總數(shù)與所述散列參數(shù)表中的所述所需數(shù)量相一致。
8.根據(jù)權(quán)利要求6所述的繁忙處理節(jié)點(diǎn)散列系統(tǒng),其特征在于,所述處理單元進(jìn)一步配置為在將針對(duì)同一對(duì)象的多個(gè)所述數(shù)據(jù)處理指令分別轉(zhuǎn)發(fā)給不同的所述散列處理節(jié)點(diǎn)進(jìn)行處理時(shí),將一致的所述索引信息記錄在各對(duì)應(yīng)的所述操作記錄表中,所述索引信息包括對(duì)應(yīng)于所述針對(duì)同一對(duì)象的多個(gè)所述數(shù)據(jù)處理指令的時(shí)間戳。
9.根據(jù)權(quán)利要求6所述的繁忙處理節(jié)點(diǎn)散列方法,其特征在于,所述實(shí)時(shí)回寫單元包括: 讀取部,其讀取所述消息隊(duì)列中的所述索引信息指向的所述散列處理節(jié)點(diǎn)的所述操作記錄表中的對(duì)應(yīng)操作記錄; 第一回寫部,其將所述操作記錄實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)的操作記錄表中; 第一狀態(tài)更新部,其將已成功回寫的所述操作記錄表的狀態(tài)更新為已回寫。
10.根據(jù)權(quán)利要求9所述的繁忙處理節(jié)點(diǎn)散列方法,其特征在于,所述非實(shí)時(shí)回寫單元包括: 清空處理部,其清空所述消息隊(duì)列; 狀態(tài)判定部,其判斷是否存在狀態(tài)不是已回寫的操作記錄表,并將狀態(tài)不是已回寫的所述操作記錄表的判定信息發(fā)送給第二回寫部; 第二回寫部,其根據(jù)狀態(tài)判定部發(fā)送的判定信息,將狀態(tài)不是已回寫的所述操作記錄表中的操作記錄非實(shí)時(shí)回寫到所述繁忙處理節(jié)點(diǎn)的操作記錄表中; 第二狀態(tài)更新部,其將經(jīng)過第二回寫部回寫的所述操作記錄表的狀態(tài)修改為已回寫。
【文檔編號(hào)】G06F9/46GK104021033SQ201410285794
【公開日】2014年9月3日 申請(qǐng)日期:2014年6月23日 優(yōu)先權(quán)日:2014年6月23日
【發(fā)明者】張靖, 閆琨, 劉寶成, 劉基南, 王麗敏 申請(qǐng)人:中國銀行股份有限公司