本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種交易入賬控制方法及系統(tǒng)。
背景技術(shù):
目前,各個銀行的核心交易系統(tǒng)若出現(xiàn)高突發(fā)狀況,例如,轉(zhuǎn)賬交易量突然暴增;較多的同一時刻兩個賬戶之間互轉(zhuǎn)(a轉(zhuǎn)b,b轉(zhuǎn)a)導(dǎo)致的交易死鎖事件;大量的轉(zhuǎn)賬交易需要更新數(shù)據(jù)庫中同一個賬戶記錄(例如,對于電商平臺“例如,阿里巴巴電商平臺”而言,商戶通過電商平臺銷售產(chǎn)品,消費者將購買產(chǎn)品的消費金額轉(zhuǎn)入電商平臺的指定中間賬戶中,并由電商平臺的指定中間賬戶在預(yù)設(shè)時間后,將消費者的消費金額批量轉(zhuǎn)入商戶的銀行賬戶中),而導(dǎo)致所述核心交易系統(tǒng)需要爭搶和等待該賬戶的賬戶記錄鎖,需同步進行扣款和入賬處理來完成交易,則所述核心交易系統(tǒng)的交易執(zhí)行會變慢,銀行交易的耗時會增加,系統(tǒng)吞吐量會大幅下降,銀行的交易處理通道會發(fā)生堵塞現(xiàn)象,嚴(yán)重影響其它正常業(yè)務(wù)的運營。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種交易入賬控制方法及系統(tǒng),旨在提高高突發(fā)狀況時的交易執(zhí)行速度及吞吐量。
為實現(xiàn)上述目的,本發(fā)明提供的一種交易入賬控制方法,所述方法包括以下步驟:
a、交易入賬控制系統(tǒng)在收到一個轉(zhuǎn)賬交易請求后,對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并進行預(yù)設(shè)類型的扣款信息處理,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中;
b、檢查該貸方賬戶是否滿足預(yù)設(shè)的入賬條件,并在該貸方賬戶滿足入賬條件后,為該貸方賬戶的待入賬信息生成可入賬標(biāo)識;
c、啟用異步線程,掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
優(yōu)選地,所述異步線程包括至少一個用于實時或者定時掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息的掃描線程和至少一個用于對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理的工作線程,該方法還包括:
實時或者定時偵測該待處理隊列中帶有可入賬標(biāo)識的待入賬信息數(shù)量;若偵測的待入賬信息數(shù)量大于預(yù)設(shè)閾值,則增加預(yù)設(shè)數(shù)量的掃描線程和/或工作線程,并轉(zhuǎn)入執(zhí)行所述步驟c。
優(yōu)選地,所述預(yù)設(shè)規(guī)則為:
若所述工作線程有多個,則在同一時刻,同一個貸方賬戶的待入賬信息僅分配給同一個工作線程處理,不同貸方賬戶的待入賬信息分配給不同的工作線程處理;
若所述工作線程只有一個,則將同一個貸方賬戶的待入賬信息歸為相同的待入賬信息集合中,將不同的貸方賬戶的待入賬信息歸為不同的待入賬信息集合中,對各個待入賬信息集合進行排序,按照該排序,逐一選擇待入賬信息集合進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
優(yōu)選地,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入預(yù)先生成的待處理隊列的算法為:
其中,h為預(yù)設(shè)的第一初始值,p為預(yù)設(shè)的散列質(zhì)數(shù),n為貸方賬戶x的總字符數(shù),n為大于1的正整數(shù),ascii(xk)為貸方賬戶x的第k+1個字符的ascii值,k的范圍是從0至n-1;a為待處理隊列的總數(shù);f(x)的值為貸方賬戶x的待入賬信息落入的待處理隊列的序號。
優(yōu)選地,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入所述異步線程中的工作線程的算法為:
其中,h0為預(yù)設(shè)的第二初始值,p為預(yù)設(shè)的散列質(zhì)數(shù),n為貸方賬戶x的總字符數(shù);n為大于1的正整數(shù),binary(xk)為貸方賬戶x的第k個字符的一個字節(jié)的二進制值;k的范圍是從1至n;a為待處理隊列的總數(shù),f(x)的值為貸方賬戶x的待入賬信息落入的工作線程的序號。
此外,為實現(xiàn)上述目的,本發(fā)明還提供一種交易入賬控制系統(tǒng),所述交易入賬控制系統(tǒng)包括:
扣款模塊,用于在收到一個轉(zhuǎn)賬交易請求后,對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并進行預(yù)設(shè)類型的扣款信息處理,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中;
檢查模塊,用于檢查該貸方賬戶是否滿足預(yù)設(shè)的入賬條件,并在該貸方賬戶滿足入賬條件后,為該貸方賬戶的待入賬信息生成可入賬標(biāo)識;
異步入賬模塊,用于掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
優(yōu)選地,所述異步線程包括至少一個用于實時或者定時掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息的掃描線程和至少一個用于對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理的工作線程,所述交易入賬控制系統(tǒng)還包括:
增加模塊,用于實時或者定時偵測該待處理隊列中帶有可入賬標(biāo)識的待入賬信息數(shù)量;若偵測的待入賬信息數(shù)量大于預(yù)設(shè)閾值,則增加預(yù)設(shè)數(shù)量的掃描線程和/或工作線程。
優(yōu)選地,所述預(yù)設(shè)規(guī)則為:
若所述工作線程有多個,則在同一時刻,同一個貸方賬戶的待入賬信息僅分配給同一個工作線程處理,不同貸方賬戶的待入賬信息分配給不同的工作線程處理;
若所述工作線程只有一個,則將同一個貸方賬戶的待入賬信息歸為相同的待入賬信息集合中,將不同的貸方賬戶的待入賬信息歸為不同的待入賬信息集合中,對各個待入賬信息集合進行排序,按照該排序,逐一選擇待入賬信息集合進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
優(yōu)選地,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入預(yù)先生成的待處理隊列的算法為:
其中,h為預(yù)設(shè)的第一初始值,p為預(yù)設(shè)的散列質(zhì)數(shù),n為貸方賬戶x的總字符數(shù),n為大于1的正整數(shù),ascii(xk)為貸方賬戶x的第k+1個字符的ascii值,k的范圍是從0至n-1;a為待處理隊列的總數(shù);f(x)的值為貸方賬戶x的待入賬信息落入的待處理隊列的序號。
優(yōu)選地,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入所述異步線程中的工作線程的算法為:
其中,h0為預(yù)設(shè)的第二初始值,p為預(yù)設(shè)的散列質(zhì)數(shù),n為貸方賬戶x的總字符數(shù);n為大于1的正整數(shù),binary(xk)為貸方賬戶x的第k個字符的一個字節(jié)的二進制值;k的范圍是從1至n;a為待處理隊列的總數(shù),f(x)的值為貸方賬戶x的待入賬信息落入的工作線程的序號。
本發(fā)明提出的交易入賬控制方法及系統(tǒng),在收到轉(zhuǎn)賬交易請求后,先對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中,若檢查該貸方賬戶滿足預(yù)設(shè)的入賬條件,則為該貸方賬戶的待入賬信息生成可入賬標(biāo)識;并啟用異步線程,掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理。由于是先將貸方賬戶的待入賬信息加入待處理隊列中,并利用異步線程對該待處理隊列中滿足入賬條件的待入賬信息進行入賬處理,通過異步入賬的方式減輕了交易系統(tǒng)在高突發(fā)狀況時的入賬壓力,避免在高突發(fā)狀況時交易系統(tǒng)爭搶和等待交易賬戶的賬戶記錄鎖,提高了交易執(zhí)行速度及吞吐量,保證業(yè)務(wù)的正常執(zhí)行。
附圖說明
圖1為本發(fā)明交易入賬控制方法第一實施例的流程示意圖;
圖2為本發(fā)明交易入賬控制方法第二實施例的流程示意圖;
圖3為本發(fā)明交易入賬控制系統(tǒng)第一實施例的功能模塊示意圖;
圖4為本發(fā)明交易入賬控制系統(tǒng)第二實施例的功能模塊示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
具體實施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種交易入賬控制方法。
參照圖1,圖1為本發(fā)明交易入賬控制方法第一實施例的流程示意圖。
在第一實施例中,該交易入賬控制方法包括:
步驟s10,交易入賬控制系統(tǒng)在收到一個轉(zhuǎn)賬交易請求后,對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并進行預(yù)設(shè)類型的扣款信息處理,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中。
本實施例中,交易入賬控制系統(tǒng)接收用戶發(fā)出的轉(zhuǎn)賬交易請求,例如,接收用戶在手機、平板電腦、自助終端設(shè)備等終端上輸入相關(guān)信息(例如,轉(zhuǎn)賬交易的扣款賬戶、入賬賬戶、轉(zhuǎn)賬金額、轉(zhuǎn)賬日期、轉(zhuǎn)賬類型等)后發(fā)送的轉(zhuǎn)賬交易請求,如接收用戶在手機、平板電腦、自助終端設(shè)備等終端中預(yù)先安裝的交易客戶端上輸入相關(guān)信息后發(fā)送來的轉(zhuǎn)賬交易請求,或接收用戶在手機、平板電腦、自助終端設(shè)備等終端中的瀏覽器系統(tǒng)上輸入相關(guān)信息后發(fā)送來的轉(zhuǎn)賬交易請求。
交易入賬控制系統(tǒng)在收到一個轉(zhuǎn)賬交易請求后,啟用主事務(wù)線程對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶(即:扣款賬戶)進行實時或者定時扣款,即在收到轉(zhuǎn)賬交易請求后立刻將該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶的賬戶金額扣除該轉(zhuǎn)賬交易請求對應(yīng)的轉(zhuǎn)賬金額,并且進行預(yù)設(shè)類型的扣款信息處理,以完成借方賬戶的扣款操作;其中,所述預(yù)設(shè)類型的扣款信息處理包括但不限于生成扣款明細、補登折處理、推送動賬通知等。然后,并不直接進行入賬操作,而是將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶(即:入賬賬戶)的待入賬信息(例如,待入賬的金額、借方賬戶信息、交易備注信息等)加入至預(yù)先生成的待處理隊列中。
步驟s20,檢查該貸方賬戶是否滿足預(yù)設(shè)的入賬條件,并在該貸方賬戶滿足入賬條件后,為該貸方賬戶的待入賬信息生成可入賬標(biāo)識。
實時或者定時檢查貸方賬戶是否滿足入賬條件,例如,若檢查出該貸方賬戶被凍結(jié),則確定該貸方賬戶不滿足入賬條件;或者,若檢查出該貸方賬戶被銷戶,則確定該貸方賬戶不滿足入賬條件,等等,在此不做限定。在檢查并確定該貸方賬戶滿足入賬條件后,為加入待處理隊列中的該貸方賬戶的待入賬信息生成可入賬標(biāo)識。
步驟s30,啟用異步線程,掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
交易入賬控制系統(tǒng)啟用異步線程,實時或者定時掃描生成的待處理隊列中帶有可入賬標(biāo)識的待入賬信息,該帶有可入賬標(biāo)識的待入賬信息即為經(jīng)過檢查滿足入賬條件的貸方賬戶的待入賬信息。對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,如可對多個相同的貸方賬戶的待入賬信息進行并行處理,也可對多個不同的貸方賬戶的待入賬信息進行串行處理,在此不做限定。并且,在對掃描到的待入賬信息進行入賬處理時,還進行預(yù)設(shè)類型的入賬信息處理,例如,所述預(yù)設(shè)類型的入賬信息處理包括但不限于生成入賬明細、補登折處理、推送動賬通知等,以完成異步入賬操作。
本實施例在收到轉(zhuǎn)賬交易請求后,先對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中,若檢查該貸方賬戶滿足預(yù)設(shè)的入賬條件,則為該貸方賬戶的待入賬信息生成可入賬標(biāo)識;并啟用異步線程,掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理。由于是先將貸方賬戶的待入賬信息加入待處理隊列中,并利用異步線程對該待處理隊列中滿足入賬條件的待入賬信息進行入賬處理,通過異步入賬的方式減輕了交易系統(tǒng)在高突發(fā)狀況時的入賬壓力,避免在高突發(fā)狀況時交易系統(tǒng)爭搶和等待交易賬戶的賬戶記錄鎖,提高了交易執(zhí)行速度及吞吐量,保證業(yè)務(wù)的正常執(zhí)行。
如圖2所示,本發(fā)明第二實施例提出一種交易入賬控制方法,在上述實施例的基礎(chǔ)上,在上述步驟s30之前還包括:
步驟s40,實時或者定時偵測該待處理隊列中帶有可入賬標(biāo)識的待入賬信息數(shù)量;若偵測的待入賬信息數(shù)量大于預(yù)設(shè)閾值,則增加預(yù)設(shè)數(shù)量的掃描線程和/或工作線程。
本實施例中,用于進行異步入賬的異步線程包括至少一個掃描線程和至少一個工作線程,其中:所述掃描線程用于實時或者定時掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息;所述工作線程用于對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。通過至少一個掃描線程和至少一個工作線程來分別進行帶有可入賬標(biāo)識的待入賬信息的掃描操作及對掃描到的待入賬信息的入賬操作,分工明確,防止入賬沖突,提高了異步入賬處理的效率。
進一步地,還可實時或者定時偵測該待處理隊列中帶有可入賬標(biāo)識的待入賬信息數(shù)量;若偵測的待入賬信息數(shù)量大于預(yù)設(shè)閾值,則說明當(dāng)前需掃描和入賬的待入賬信息較多,則增加預(yù)設(shè)數(shù)量的掃描線程和/或工作線程,以提高異步入賬處理的速度,保證異步入賬處理的高效率。
進一步地,在其他實施例中,所述預(yù)設(shè)規(guī)則為:
若所述工作線程有多個,則在同一時刻,同一個貸方賬戶的待入賬信息僅分配給同一個工作線程處理,不同貸方賬戶的待入賬信息分配給不同的工作線程處理;
若所述工作線程只有一個,則將同一個貸方賬戶的待入賬信息歸為相同的待入賬信息集合中,將不同的貸方賬戶的待入賬信息歸為不同的待入賬信息集合中,對各個待入賬信息集合進行排序,按照該排序,逐一選擇待入賬信息集合進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
本實施例中,在通過異步線程中的工作線程對掃描到的帶有可入賬標(biāo)識的待入賬信息進行入賬處理時,若所述工作線程有多個,在同一個貸方賬戶的一個或多個待入賬信息均分配給同一個工作線程處理,即由多個工作線程分別對多個不同貸方賬戶的一個或多個待入賬信息進行并行處理。若所述工作線程只有一個,則將同一個貸方賬戶的一個或多個待入賬信息歸為相同的待入賬信息集合中,將不同的貸方賬戶的待入賬信息歸為不同的待入賬信息集合中,所述工作線程只需按順序依次串行處理每一待入賬信息集合,能有效地對待入賬信息按貸方賬戶進行分類并集中處理,簡化了處理流程,提高處理速度,從而提高異步入賬處理的效率。
進一步地,在其他實施例中,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入預(yù)先生成的待處理隊列的算法為:
其中,h為預(yù)設(shè)的第一初始值,可以設(shè)置為任意整數(shù)值,也可以設(shè)置為0。p為預(yù)設(shè)的散列質(zhì)數(shù),可取257。n為貸方賬戶x的總字符數(shù),n為大于1的正整數(shù),ascii(xk)為貸方賬戶x的第k+1個字符的ascii值,k的范圍是從0至n-1。a為待處理隊列的總數(shù)。
通過上述算法計算出的f(x)的值為貸方賬戶x的待入賬信息落入的待處理隊列的序號也即代號,如第f(x)號待處理隊列,從而依次將貸方賬戶x的待入賬信息加入相應(yīng)序號的待處理隊列中。
進一步地,在其他實施例中,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入所述異步線程中的工作線程的算法為:
其中,h0為預(yù)設(shè)的第二初始值,可以設(shè)置為任意整數(shù)值,例如取-2128831035。p為預(yù)設(shè)的散列質(zhì)數(shù),可取57885161。n為貸方賬戶x的總字符數(shù);n為大于1的正整數(shù),binary(xk)為貸方賬戶x的第k個字符的一個字節(jié)的二進制值;k的范圍是從1至n;a為待處理隊列的總數(shù)。其中,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入所述異步線程中的工作線程的算法與將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入預(yù)先生成的待處理隊列的算法中的散列質(zhì)數(shù)p可以設(shè)置為相同,也可以設(shè)置為不同;第一初始值h與第二初始值h0可以設(shè)置為相同,也可以設(shè)置為不同,在此不做限定。
通過上述算法計算出的f(x)的值為貸方賬戶x的待入賬信息落入的工作線程的序號也即代號,如第f(x)號工作線程,從而依次將貸方賬戶x的待入賬信息加入相應(yīng)序號的工作線程中。
本發(fā)明進一步提供一種交易入賬控制系統(tǒng)。
參照圖3,圖3為本發(fā)明交易入賬控制系統(tǒng)第一實施例的功能模塊示意圖。
在第一實施例中,該交易入賬控制系統(tǒng)包括:
扣款模塊01,用于在收到一個轉(zhuǎn)賬交易請求后,對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并進行預(yù)設(shè)類型的扣款信息處理,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中。
本實施例中,交易入賬控制系統(tǒng)接收用戶發(fā)出的轉(zhuǎn)賬交易請求,例如,接收用戶在手機、平板電腦、自助終端設(shè)備等終端上輸入相關(guān)信息(例如,轉(zhuǎn)賬交易的扣款賬戶、入賬賬戶、轉(zhuǎn)賬金額、轉(zhuǎn)賬日期、轉(zhuǎn)賬類型等)后發(fā)送的轉(zhuǎn)賬交易請求,如接收用戶在手機、平板電腦、自助終端設(shè)備等終端中預(yù)先安裝的交易客戶端上輸入相關(guān)信息后發(fā)送來的轉(zhuǎn)賬交易請求,或接收用戶在手機、平板電腦、自助終端設(shè)備等終端中的瀏覽器系統(tǒng)上輸入相關(guān)信息后發(fā)送來的轉(zhuǎn)賬交易請求。
交易入賬控制系統(tǒng)在收到一個轉(zhuǎn)賬交易請求后,啟用主事務(wù)線程對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶(即:扣款賬戶)進行實時或者定時扣款,即在收到轉(zhuǎn)賬交易請求后立刻將該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶的賬戶金額扣除該轉(zhuǎn)賬交易請求對應(yīng)的轉(zhuǎn)賬金額,并且進行預(yù)設(shè)類型的扣款信息處理,以完成借方賬戶的扣款操作;其中,所述預(yù)設(shè)類型的扣款信息處理包括但不限于生成扣款明細、補登折處理、推送動賬通知等。然后,并不直接進行入賬操作,而是將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶(即:入賬賬戶)的待入賬信息(例如,待入賬的金額、借方賬戶信息、交易備注信息等)加入至預(yù)先生成的待處理隊列中。
檢查模塊02,用于檢查該貸方賬戶是否滿足預(yù)設(shè)的入賬條件,并在該貸方賬戶滿足入賬條件后,為該貸方賬戶的待入賬信息生成可入賬標(biāo)識。
實時或者定時檢查貸方賬戶是否滿足入賬條件,例如,若檢查出該貸方賬戶被凍結(jié),則確定該貸方賬戶不滿足入賬條件;或者,若檢查出該貸方賬戶被銷戶,則確定該貸方賬戶不滿足入賬條件,等等,在此不做限定。在檢查并確定該貸方賬戶滿足入賬條件后,為加入待處理隊列中的該貸方賬戶的待入賬信息生成可入賬標(biāo)識。
異步入賬模塊03,用于掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
交易入賬控制系統(tǒng)啟用異步線程,實時或者定時掃描生成的待處理隊列中帶有可入賬標(biāo)識的待入賬信息,該帶有可入賬標(biāo)識的待入賬信息即為經(jīng)過檢查滿足入賬條件的貸方賬戶的待入賬信息。對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,如可對多個相同的貸方賬戶的待入賬信息進行并行處理,也可對多個不同的貸方賬戶的待入賬信息進行串行處理,在此不做限定。并且,在對掃描到的待入賬信息進行入賬處理時,還進行預(yù)設(shè)類型的入賬信息處理,例如,所述預(yù)設(shè)類型的入賬信息處理包括但不限于生成入賬明細、補登折處理、推送動賬通知等,以完成異步入賬操作。
本實施例在收到轉(zhuǎn)賬交易請求后,先對該轉(zhuǎn)賬交易請求對應(yīng)的借方賬戶進行扣款并將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入至預(yù)先生成的待處理隊列中,若檢查該貸方賬戶滿足預(yù)設(shè)的入賬條件,則為該貸方賬戶的待入賬信息生成可入賬標(biāo)識;并啟用異步線程,掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息,并對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理。由于是先將貸方賬戶的待入賬信息加入待處理隊列中,并利用異步線程對該待處理隊列中滿足入賬條件的待入賬信息進行入賬處理,通過異步入賬的方式減輕了交易系統(tǒng)在高突發(fā)狀況時的入賬壓力,避免在高突發(fā)狀況時交易系統(tǒng)爭搶和等待交易賬戶的賬戶記錄鎖,提高了交易執(zhí)行速度及吞吐量,保證業(yè)務(wù)的正常執(zhí)行。
如圖4所示,本發(fā)明第二實施例提出一種交易入賬控制系統(tǒng),在上述實施例的基礎(chǔ)上,還包括:
增加模塊04,用于實時或者定時偵測該待處理隊列中帶有可入賬標(biāo)識的待入賬信息數(shù)量;若偵測的待入賬信息數(shù)量大于預(yù)設(shè)閾值,則增加預(yù)設(shè)數(shù)量的掃描線程和/或工作線程。
本實施例中,用于進行異步入賬的異步線程包括至少一個掃描線程和至少一個工作線程,其中:所述掃描線程用于實時或者定時掃描該待處理隊列中帶有可入賬標(biāo)識的待入賬信息;所述工作線程用于對掃描到的待入賬信息按照預(yù)設(shè)規(guī)則進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。通過至少一個掃描線程和至少一個工作線程來分別進行帶有可入賬標(biāo)識的待入賬信息的掃描操作及對掃描到的待入賬信息的入賬操作,分工明確,防止入賬沖突,提高了異步入賬處理的效率。
進一步地,還可實時或者定時偵測該待處理隊列中帶有可入賬標(biāo)識的待入賬信息數(shù)量;若偵測的待入賬信息數(shù)量大于預(yù)設(shè)閾值,則說明當(dāng)前需掃描和入賬的待入賬信息較多,則增加預(yù)設(shè)數(shù)量的掃描線程和/或工作線程,以提高異步入賬處理的速度,保證異步入賬處理的高效率。
進一步地,在其他實施例中,所述預(yù)設(shè)規(guī)則為:
若所述工作線程有多個,則在同一時刻,同一個貸方賬戶的待入賬信息僅分配給同一個工作線程處理,不同貸方賬戶的待入賬信息分配給不同的工作線程處理;
若所述工作線程只有一個,則將同一個貸方賬戶的待入賬信息歸為相同的待入賬信息集合中,將不同的貸方賬戶的待入賬信息歸為不同的待入賬信息集合中,對各個待入賬信息集合進行排序,按照該排序,逐一選擇待入賬信息集合進行入賬處理,且進行預(yù)設(shè)類型的入賬信息處理。
本實施例中,在通過異步線程中的工作線程對掃描到的帶有可入賬標(biāo)識的待入賬信息進行入賬處理時,若所述工作線程有多個,在同一個貸方賬戶的一個或多個待入賬信息均分配給同一個工作線程處理,即由多個工作線程分別對多個不同貸方賬戶的一個或多個待入賬信息進行并行處理。若所述工作線程只有一個,則將同一個貸方賬戶的一個或多個待入賬信息歸為相同的待入賬信息集合中,將不同的貸方賬戶的待入賬信息歸為不同的待入賬信息集合中,所述工作線程只需按順序依次串行處理每一待入賬信息集合,能有效地對待入賬信息按貸方賬戶進行分類并集中處理,簡化了處理流程,提高處理速度,從而提高異步入賬處理的效率。
進一步地,在其他實施例中,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入預(yù)先生成的待處理隊列的算法為:
其中,h為預(yù)設(shè)的第一初始值,可以設(shè)置為任意整數(shù)值,也可以設(shè)置為0。p為預(yù)設(shè)的散列質(zhì)數(shù),可取257。n為貸方賬戶x的總字符數(shù),n為大于1的正整數(shù),ascii(xk)為貸方賬戶x的第k+1個字符的ascii值,k的范圍是從0至n-1。a為待處理隊列的總數(shù)。
通過上述算法計算出的f(x)的值為貸方賬戶x的待入賬信息落入的待處理隊列的序號也即代號,如第f(x)號待處理隊列,從而依次將貸方賬戶x的待入賬信息加入相應(yīng)序號的待處理隊列中。
進一步地,在其他實施例中,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入所述異步線程中的工作線程的算法為:
其中,h0為預(yù)設(shè)的第二初始值,可以設(shè)置為任意整數(shù)值,例如取-2128831035。p為預(yù)設(shè)的散列質(zhì)數(shù),可取57885161。n為貸方賬戶x的總字符數(shù);n為大于1的正整數(shù),binary(xk)為貸方賬戶x的第k個字符的一個字節(jié)的二進制值;k的范圍是從1至n;a為待處理隊列的總數(shù)。其中,將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入所述異步線程中的工作線程的算法與將該轉(zhuǎn)賬交易請求對應(yīng)的貸方賬戶的待入賬信息加入預(yù)先生成的待處理隊列的算法中的散列質(zhì)數(shù)p可以設(shè)置為相同,也可以設(shè)置為不同;第一初始值h與第二初始值h0可以設(shè)置為相同,也可以設(shè)置為不同,在此不做限定。
通過上述算法計算出的f(x)的值為貸方賬戶x的待入賬信息落入的工作線程的序號也即代號,如第f(x)號工作線程,從而依次將貸方賬戶x的待入賬信息加入相應(yīng)序號的工作線程中。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件來實現(xiàn),但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上參照附圖說明了本發(fā)明的優(yōu)選實施例,并非因此局限本發(fā)明的權(quán)利范圍。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本領(lǐng)域技術(shù)人員不脫離本發(fā)明的范圍和實質(zhì),可以有多種變型方案實現(xiàn)本發(fā)明,比如作為一個實施例的特征可用于另一實施例而得到又一實施例。凡在運用本發(fā)明的技術(shù)構(gòu)思之內(nèi)所作的任何修改、等同替換和改進,均應(yīng)在本發(fā)明的權(quán)利范圍之內(nèi)。