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