亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

解決熱點賬戶問題的記賬方法及設備與流程

文檔序號:11730074閱讀:439來源:國知局
解決熱點賬戶問題的記賬方法及設備與流程

本申請涉及信息技術領域,尤其涉及一種關于熱點賬戶的記賬方法及設備。



背景技術:

賬務類系統(tǒng)和支付清算類系統(tǒng)由于存在大量的并發(fā)事務需要處理,數(shù)據(jù)庫成為整個系統(tǒng)最大的性能瓶頸,特別是需要頻繁更新某一賬戶余額時,很容易產(chǎn)生熱點賬戶問題。根據(jù)業(yè)務特點,這些系統(tǒng)中的某些賬戶需要與其他賬戶進行頻繁交互,賬戶余額需要頻繁更新,從而成為熱點賬戶。熱點賬戶問題會顯著影響交易并發(fā)度,嚴重時可能會導致系統(tǒng)癱瘓以及交易中斷。

圖1示出了更新賬戶余額的處理流程。當系統(tǒng)頻繁向數(shù)據(jù)庫同一賬戶發(fā)起更新請求時,數(shù)據(jù)庫需對關于帳戶余額的數(shù)據(jù)記錄加行級鎖,使得該數(shù)據(jù)記錄僅可以被當前的更新請求修改,完成數(shù)據(jù)記錄的更新之后,釋放該行級鎖。由此,關于賬戶余額的數(shù)據(jù)記錄的更新只能串行完成,在高并發(fā)更新請求的情況下,由于鎖競爭機制會引起后續(xù)更新請求等待,導致系統(tǒng)響應速度大幅度下降。

對于上述熱點賬戶的問題,目前業(yè)界的一種解決方案是鎖拆分的方案。鎖拆分的原理是將一個熱點賬戶拆分為多個子賬戶,減少每個賬戶上處理更新請求的數(shù)量,從而降低數(shù)據(jù)庫鎖競爭的概率,減少因鎖競爭機制而引起的等待,如圖2所示。

但是,鎖拆分方案的主要問題在于:

1.賬戶的拆分與業(yè)務邏輯密切相關,往往只能針對業(yè)務的特殊性進行變通和優(yōu)化,普適性較差。此外,最合理的子賬戶個數(shù)會隨著時間推移而變化,需設計一套完備機制以確認每一個熱點賬戶拆分的子賬戶個數(shù)。

2.需設計專門的賬戶總余額讀取機制,以保證熱點賬戶的總余額正確。

3.鎖拆分后,業(yè)務規(guī)則的復雜度提高。例如:賬戶拆分為2個子賬戶時減少余額的情況,當?shù)谝粋€子賬戶余額和第二個子賬戶余額不足且總賬戶余額足時,需要同時更新兩個子賬戶的余額。

申請內容

本申請的一個目的是提供一種解決熱點賬戶問題的記賬方法及設備,用以解決現(xiàn)有技術中鎖拆分方案實現(xiàn)復雜度較高的問題。

為實現(xiàn)上述目的,本申請?zhí)峁┝艘环N解決熱點賬戶問題的記賬方法,該方法包括:

獲取關于熱點賬戶的多條流水記錄,并統(tǒng)計所述流水記錄的軋差值;

基于所述熱點賬戶的余額和所述軋差值,確定余額更新值;

在余額更新值大于等于第一閾值時,對所述流水記錄進行入賬處理,基于所述軋差值,更新所述熱點賬戶的余額。

進一步地,該方法還包括:

在余額更新值小于所述第一閾值時,基于統(tǒng)計所述流水記錄中正金額記錄的變化值;

對所述正金額記錄進行入賬處理,基于所述正金額記錄的變化值,更新所述熱點賬戶的余額;

以交易時間順序逐條對所述負金額記錄進行入賬處理,基于所述流水記錄中每條負金額記錄的變化值,更新所述熱點賬戶的余額,其中,所述熱點賬戶更新后的余額大于等于所述第一閾值。

進一步地,該方法還包括:

獲取記賬請求;

若所述記賬請求涉及熱點賬戶,將關于所述熱點賬戶的流水記錄插入記賬緩沖表;

獲取關于熱點賬戶的多條流水記錄,包括:

從所述記賬緩沖表中獲取關于熱點賬戶的多條流水記錄。

進一步地,該方法還包括:

在將關于所述熱點賬戶的流水記錄插入記賬緩沖表時,將所述流水記錄的狀態(tài)標記為待記賬;

從所述記賬緩沖表中獲取關于熱點賬戶的多條流水記錄,包括:

從所述記賬緩沖表中獲取狀態(tài)為待記賬的、關于熱點賬戶的多條流水記錄,并將所述流水記錄的狀態(tài)修改為記賬中。

進一步地,該方法還包括:

在對所述流水記錄進行入賬處理成功后,將所述流水記錄由所述記賬緩沖表插入交易流水表。

進一步地,該方法還包括:

統(tǒng)計所述記賬緩沖表中未進行入賬處理的流水記錄的數(shù)量或入賬處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。

進一步地,該方法還包括:

在對所述流水記錄進行入賬處理失敗時,基于相關流水記錄進行沖正處理。

進一步地,在基于所述流水記錄進行入賬處理失敗時,對相關流水記錄進行沖正處理,包括:

對所述流水記錄進行入賬處理失敗時,將所述流水記錄插入沖正緩沖表;

基于所述沖正緩沖表中的流水記錄進行沖正處理。

進一步地,該方法還包括:

統(tǒng)計所述沖正緩沖表中未進行沖正處理的流水記錄的數(shù)量或沖正處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。

進一步地,獲取關于熱點賬戶的多條流水記錄,包括:

根據(jù)預設數(shù)量或者預設時間,獲取關于熱點賬戶的多條流水記錄。

基于本申請的另一方面,還提供了一種解決熱點賬戶問題的記賬設備,該設備包括:

流水讀取裝置,用于獲取關于熱點賬戶的多條流水記錄;

計算處理裝置,用于統(tǒng)計所述流水記錄的軋差值,基于所述熱點賬戶的余額和所述軋差值,確定余額更新值;

余額更新裝置,用于在余額更新值大于等于第一閾值時,對所述流水記錄進行入賬處理,基于所述軋差值,更新所述熱點賬戶的余額。

進一步地,所述計算處理裝置,還用于在余額更新值小于所述第一閾值時,基于統(tǒng)計所述流水記錄中正金額記錄的變化值;

所述余額更新裝置,還用于在余額更新值小于所述第一閾值時,對所述正金額記錄進行入賬處理,基于所述正金額記錄的變化值,更新所述熱點賬戶的余額;以交易時間順序逐條對所述負金額記錄進行入賬處理,基于所述流水記錄中每條負金額記錄的變化值,更新所述熱點賬戶的余額,其中,所述熱點賬戶更新后的余額大于等于所述第一閾值。

進一步地,該設備還包括:

記賬接入裝置,用于獲取記賬請求,在所述記賬請求涉及熱點賬戶時,將關于所述熱點賬戶的流水記錄插入記賬緩沖表;

所述流水讀取裝置,用于從所述記賬緩沖表中獲取關于熱點賬戶的多條流水記錄。

進一步地,該設備還包括:

所述記賬接入裝置,用于在將關于所述熱點賬戶的流水記錄插入記賬緩沖表時,將所述流水記錄的狀態(tài)標記為待記賬;

所述流水讀取裝置,用于從所述記賬緩沖表中獲取狀態(tài)為待記賬的、關于熱點賬戶的多條流水記錄,并將所述流水記錄的狀態(tài)修改為記賬中。

進一步地,所述流水讀取裝置,還用于在對所述流水記錄進行入賬處理成功后,將所述流水記錄由所述記賬緩沖表插入交易流水表。

進一步地,該設備還包括:

健康守護裝置,用于統(tǒng)計所述記賬緩沖表中未進行入賬處理的流水記錄的數(shù)量或入賬處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。

進一步地,該設備還包括:

沖正處理裝置,用于在對所述流水記錄進行入賬處理失敗時,基于相關流水記錄進行沖正處理。

進一步地,所述沖正處理裝置,用于在對所述流水記錄進行入賬處理失敗時,將所述流水記錄插入沖正緩沖表;以及基于所述沖正緩沖表中的流水記錄進行沖正處理。

進一步地,該設備還包括:

健康守護裝置,用于統(tǒng)計所述沖正緩沖表中未進行沖正處理的流水記錄的數(shù)量或沖正處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。

進一步地,所述流水讀取裝置,用于根據(jù)預設數(shù)量或者預設時間,獲取關于熱點賬戶的多條流水記錄。

與現(xiàn)有技術相比,本申請?zhí)峁┑姆桨钢?,首先獲取關于熱點賬戶的多條流水記錄,并統(tǒng)計所述流水記錄的軋差值,然后基于所述熱點賬戶的余額和所述軋差值,確定余額更新值,在余額更新值大于等于第一閾值時,對所述流水記錄進行入賬處理,基于所述軋差值,更新所述熱點賬戶的余額。處理過程中不對關于熱點賬戶的每一筆交易進行實時余額更新,而是先記流水記錄,對其進行匯總后再更新余額,由此更新操作頻率大大降低,能夠支持熱點賬戶高并發(fā)的處理場景,同時在進行余額更新之前會對余額更新的透支風險進行判斷,避免資金的透支風險。

附圖說明

通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:

圖1為現(xiàn)有技術中更新賬戶余額的處理流程圖;

圖2為現(xiàn)有技術中鎖拆分方案的原理示意圖;

圖3為本申請實施例提供的一種解決熱點賬戶問題的記賬方法的處理流程圖;

圖4為本申請實施例提供的一種優(yōu)選的解決熱點賬戶問題的記賬方法的處理流程圖;

圖5為本申請實施例提供的一種解決熱點賬戶問題的記賬設備的結構示意圖;

圖6為本申請實施例提供的另一種解決熱點賬戶問題的記賬設備的結構示意圖;

圖7為采用本申請方案的支付轉接清算系統(tǒng)進行記賬的方案總體流程圖;

圖8為本申請實施例的支付轉接清算系統(tǒng)中記賬接入進程的處理流程圖;

圖9為本申請實施例的支付轉接清算系統(tǒng)中批量記賬進程的處理流程圖;

圖10為本申請實施例的支付轉接清算系統(tǒng)中沖正處理進程的處理流程圖;

圖11和圖12為本申請實施例的支付轉接清算系統(tǒng)中健康守護進程的處理流程圖;

圖13為測試場景下的系統(tǒng)示意圖;

附圖中相同或相似的附圖標記代表相同或相似的部件。

具體實施方式

下面結合附圖對本申請作進一步詳細描述。

在本申請一個典型的配置中,終端、服務網(wǎng)絡的設備均包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡接口和內存。

內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或閃存(flashram)。內存是計算機可讀介質的示例。

計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體,可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內存技術、只讀光盤(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。

本申請實施例提供的一種解決熱點賬戶問題的記賬方法的處理流程圖,該方法適用于賬務類系統(tǒng)、支付清算類系統(tǒng)的服務器端,在實際場景下,客戶端設備會根據(jù)實際交易生成記賬請求,并向服務器發(fā)送,要求更新賬戶的余額。服務器端將會進行如圖3所示的處理,以實現(xiàn)賬戶余額的更新,具體包括以下步驟:

步驟s301,獲取關于熱點賬戶的多條流水記錄,并統(tǒng)計所述流水記錄的軋差值。所述關于熱點賬戶的流水記錄能夠用于描述在每一次交易發(fā)生時,熱點賬戶中資金的變化情況,例如一次交易中借方賬戶中資金增加100,貸方賬戶中資金減少了100等。在實際場景下,流水記錄的具體形式可以至少包括流水號(流水記錄的編號)、帳號(賬戶標識)、日期、借貸方向、金額等信息,從而提供進行記賬所需的基本信息。

對于某一個熱點賬戶,可以基于帳號進行分類,獲取到關于該熱點賬戶的多條流水記錄,然后基于發(fā)生的金額進行統(tǒng)計,得到這些流水記錄所對應的軋差值。例如對于熱點賬戶a,獲取該熱點賬戶a的10條流水記錄,每條流水記錄中發(fā)生變動的金額分別為:+100、+100、-100、+50、+50、+100、+200、-50、-100、-50。

在實際場景中,每次獲取并進行統(tǒng)計的流水記錄的數(shù)量可以根據(jù)預設的規(guī)則來進行限定,例如可以根據(jù)預設數(shù)量或者預設時間,獲取關于熱點賬戶的多條流水記錄。在根據(jù)預設數(shù)量獲取流水記錄時,可以先設定一個數(shù)量值,例如10條,每次處理時讀取10條流水記錄進行統(tǒng)計;而在根據(jù)根據(jù)預設時間獲取流水記錄時,可以在當前時間到達預設時間時,讀取當前還未處理的所有流水記錄進行統(tǒng)計。

在進行統(tǒng)計的流水記錄所對應的交易中,熱點賬戶a可以是作為交易的借方,也可以是作為交易的貸方。基于前述的10條流水記錄最終統(tǒng)計得到的軋差值為+300,表示在這些流水記錄所對應的交易完成后,熱點賬戶a的余額將增加300。

步驟s302,基于所述熱點賬戶的余額和所述軋差值,確定余額更新值。其中,余額更新值是指若基于熱點賬戶當前的余額和統(tǒng)計得到的軋差值對賬戶余額進行更新后余額的最新值。例如,若前述的賬戶a的當前余額為1000,若基于軋差值進行更新后余額的最新值將是1300。

步驟s303,在余額更新值大于等于第一閾值時,對所述流水記錄進行入賬處理,基于所述軋差值,更新所述熱點賬戶的余額。所述第一閾值是指賬戶允許的最低余額,可以根據(jù)實際場景的需求具體設定。正常情況下,該第一閾值可以是0,即不允許透支,此外也可以基于賬戶的實際透支策略,將該第一閾值設定為-2000,即允許賬戶透支2000。

對于前述的熱點賬戶a,若該賬戶設定的第一閾值為0,其余額更新值為1300,大于第一閾值,由此可以對這些流水記錄進行入賬處理,即基于所述軋差值,更新所述熱點賬戶的余額,處理后熱點賬戶a的余額為1300。在數(shù)據(jù)庫中對賬戶余額所對應的數(shù)據(jù)記錄進行更新時,對該數(shù)據(jù)記錄加行級鎖,然后修改數(shù)據(jù),并在修改完成后釋放該行級鎖。每次加鎖修改是對多次交易對應的金額變動進行處理,可以將原先多的多次更新操作合并為一次,例如本申請實施例中將10條流水記錄進行統(tǒng)計,然后進行余額更新,可以將原本的10次余額更新操作合并為1次,大大提高了處理的效率,降低數(shù)據(jù)庫鎖競爭的次數(shù),減少因鎖競爭機制而引起的等待。同時,在進行入賬處理之前,會基于賬戶的余額進行透支風險的判斷,只在符合預設策略的情況下,直接進行入賬處理。

在本申請的另一實施例中,提供了在余額更新值小于所述第一閾值時進行后續(xù)處理的方案,其處理流程如圖4所示,其中步驟s301~s303與圖3中類似,還包括:

步驟s304,在余額更新值小于所述第一閾值時,基于統(tǒng)計所述流水記錄中正金額記錄的變化值。其中,正金額記錄是指使得賬戶的金額增加的流水記錄,相應地,負金額記錄是指使得賬戶的金額減少的流水記錄。

例如,對于熱點賬戶b,設定的第一閾值為0,本次處理時獲取并統(tǒng)計的6條流水記錄發(fā)生變動的金額分別為:+100、-500、-400、-100、+200、-300,由此軋差值為-1000,若熱點賬戶b的當前余額為800,則可以確定余額更新值為-200,小于第一閾值0,無法基于步驟s303直接進行入賬處理。此時,先統(tǒng)計這些流水記錄中正金額記錄的變化值,即統(tǒng)計+100和+200對應的兩條流水記錄,由此確定正金額記錄的變化值為+300。

步驟s305,對所述正金額記錄進行入賬處理,基于所述正金額記錄的變化值,更新所述熱點賬戶的余額。由于正金額記錄對應的資金變化一定會使得熱點賬戶的余額增加,不存在潛在的透支風險,因此,可以直接進行入賬處理,即基于所述正金額記錄的變化值,更新所述熱點賬戶的余額。由此,在對正金額記錄進行入賬處理后,熱點賬戶b的余額更新為1100。

步驟s306,以交易時間順序逐條對所述負金額記錄進行入賬處理,基于所述流水記錄中每條負金額記錄的變化值,更新所述熱點賬戶的余額,其中,所述熱點賬戶更新后的余額大于等于所述第一閾值。

為了避免透支風險,對于負金額記錄,以其交易時間順序逐條進行入賬處理,例如-500、-400、-100和-300多對應的流水記錄的交易時間依次為:00:00:02、00:00:03、00:00:05、00:00:09,則先基于變化值-500更新熱點賬戶b的余額,更新后的余額為600,然后繼續(xù)更新-400和-100,此時更新后的余額為100,由于需要保證熱點賬戶更新后的余額大于等于所述第一閾值0,若繼續(xù)基于變化值-300進行更新,則更新后的余額為-200,將小于第一閾值。由此,不對最后一條負金額記錄進行入賬處理,而本次處理后熱點賬戶b的余額為100。

而對于未處理的負金額記錄,可以返回入賬處理失敗的信息。由于一次交易涉及的賬戶為兩個,一個賬戶的一條負金額記錄會與另一賬戶的正金額記錄對應,因此在一條流水記錄進行入賬處理失敗時,基于相關流水記錄進行沖正處理,從而保證交易雙方的賬戶數(shù)據(jù)正確。

進一步地,本申請實施例提供的方法還包括:

首先,獲取記賬請求,記賬請求所攜帶的信息能夠用于生成流水記錄,

然后,若所述記賬請求涉及熱點賬戶,將關于所述熱點賬戶的流水記錄插入記賬緩沖表。本申請實施例中的熱點賬戶是指與其他賬戶進行頻繁交互,需要頻繁更新余額的賬戶,對于一次交易所涉及的雙方賬戶,可能存在以下幾種情形:

1、雙方賬戶均為熱點賬戶;

2、借方賬戶為熱點賬戶,貸方賬戶為普通賬戶;

3、貸方賬戶為熱點賬戶,借方賬戶為普通賬戶;

4、雙方賬戶均為普通賬戶。

由此,可以先對記賬請求中所涉及的賬戶進行判斷,若存在熱點賬戶,則將關于該熱點賬戶的流水記錄插入記賬緩沖表。所述記賬緩沖表可以是在內存中的特定存儲區(qū)域,用于存儲未完成處理的流水記錄。

由此,在進行獲取關于熱點賬戶的多條流水記錄時,可以從所述記賬緩沖表中獲取關于熱點賬戶的多條流水記錄。

在實際場景中,可以對記賬緩沖表中的流水記錄的當前狀態(tài)進行標記,從而隨時確定當前的處理情況。例如,在將關于所述熱點賬戶的流水記錄插入記賬緩沖表時,將所述流水記錄的狀態(tài)標記為待記賬。

而從記賬緩沖表中獲取關于熱點賬戶的多條流水記錄時,可以具體為:從所述記賬緩沖表中獲取狀態(tài)為待記賬的、關于熱點賬戶的多條流水記錄,并將所述流水記錄的狀態(tài)修改為記賬中。進一步地,可以根據(jù)入賬處理的結果,將狀態(tài)標記為記賬成功或者記賬失敗等,例如入賬處理成功,可以標記為記賬成功,反之標記為記賬失敗。由此,可以基于待記賬、記賬中這些狀態(tài)信息判斷交易的記賬請求是否已經(jīng)開始處理、是否已經(jīng)完成、入賬是否成功等。

在本申請的一個實施例中,還可以設置一交易流水表,用于存放入賬處理成功的流水記錄,即在對所述流水記錄進行入賬處理成功后,將所述流水記錄由所述記賬緩沖表插入交易流水表。

此外,在進行沖正處理時,可以設置一沖正緩沖表,用于存放入賬處理失敗的流水記錄,在對所述流水記錄進行入賬處理失敗時,將所述流水記錄插入沖正緩沖表。在進行沖正處理時,可以基于沖正緩沖表中的流水記錄,對本次交易涉及的賬戶進行沖正處理,保證交易雙方的賬戶數(shù)據(jù)正確。

進一步地,還可以是設置一歷史緩沖表,對于記賬緩沖表中已經(jīng)處理完畢的流水記錄,無論是記賬成功或者記賬失敗的,都可以移動至歷史緩沖表中,使得記賬緩沖表中僅包含待記賬和記賬中的流水記錄。

作為一種優(yōu)選的實施方式,本申請實施例還提供了異常監(jiān)控的功能,用于對記賬處理、沖正處理等過程進行監(jiān)控,保證在系統(tǒng)出現(xiàn)異常時,能夠自動發(fā)現(xiàn),并通知運維人員第一時間發(fā)現(xiàn)并跟進處理。具體地,本申請實施例提供的解決熱點賬戶問題的記賬方法還包括:

統(tǒng)計所述記賬緩沖表中未進行入賬處理的流水記錄的數(shù)量或入賬處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息;

以及統(tǒng)計所述沖正緩沖表中未進行沖正處理的流水記錄的數(shù)量或沖正處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。

在實際場景中,可以通過運行于服務器端的特定進程實現(xiàn)上述相關的功能。例如,獲取記賬請求、基于記賬請求的內容向記賬緩沖表插入流水記錄的處理,可以由運行于服務器端的記賬接入進程實現(xiàn);讀取流水記錄、并基于流水記錄進行余額更新的處理,可以由批量記賬進程實現(xiàn);沖正過程可以由沖正處理進程實現(xiàn);而異常監(jiān)控的功能可以由健康守護進程實現(xiàn)。

基于同一發(fā)明構思,本申請實施例中還提供了解決熱點賬戶問題的記賬設備,該設備對應的方法是前述實施例中的記賬方法,并且其解決問題的原理與該方法相似。

本申請實施例提供的一種解決熱點賬戶問題的記賬設備可以是賬務類系統(tǒng)、支付清算類系統(tǒng)的服務器端設備,在實際場景下,客戶端設備會根據(jù)實際交易生成記賬請求,并向服務器端設備發(fā)送,要求更新賬戶的余額。其具體實現(xiàn)可以包括但不限于用戶設備、網(wǎng)絡設備或用戶設備與網(wǎng)絡設備通過網(wǎng)絡相集成所構成的設備,例如服務器、或者服務器和用戶設備通過網(wǎng)絡相集成所構成的設備。所述用戶設備包括但不限于個人計算機、觸控終端等實現(xiàn);所述網(wǎng)絡設備包括但不限于如網(wǎng)絡主機、單個網(wǎng)絡服務器、多個網(wǎng)絡服務器集或基于云計算的計算機集合等實現(xiàn)。在此,云由基于云計算(cloudcomputing)的大量主機或網(wǎng)絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個虛擬計算機。

該記賬設備的結構如圖5所示,包括流水讀取裝置510、計算處理裝置520和余額更新裝置530。具體地,流水讀取裝置510用于獲取關于熱點賬戶的多條流水記錄;計算處理裝置520用于統(tǒng)計所述流水記錄的軋差值,基于所述熱點賬戶的余額和所述軋差值,確定余額更新值;余額更新裝置530用于在余額更新值大于等于第一閾值時,對所述流水記錄進行入賬處理,基于所述軋差值,更新所述熱點賬戶的余額。

所述關于熱點賬戶的流水記錄能夠用于描述在每一次交易發(fā)生時,熱點賬戶中資金的變化情況,例如一次交易中借方賬戶中資金增加100,貸方賬戶中資金減少了100等。在實際場景下,流水記錄的具體形式可以至少包括流水號(流水記錄的編號)、帳號(賬戶標識)、日期、借貸方向、金額等信息,從而提供進行記賬所需的基本信息。

對于某一個熱點賬戶,可以基于帳號進行分類,獲取到關于該熱點賬戶的多條流水記錄,然后基于發(fā)生的金額進行統(tǒng)計,得到這些流水記錄所對應的軋差值。例如對于熱點賬戶a,獲取該熱點賬戶a的10條流水記錄,每條流水記錄中發(fā)生變動的金額分別為:+100、+100、-100、+50、+50、+100、+200、-50、-100、-50。

在實際場景中,流水讀取裝置510每次獲取并進行統(tǒng)計的流水記錄的數(shù)量可以根據(jù)預設的規(guī)則來進行限定,例如可以根據(jù)預設數(shù)量或者預設時間,獲取關于熱點賬戶的多條流水記錄。在根據(jù)預設數(shù)量獲取流水記錄時,可以先設定一個數(shù)量值,例如10條,每次處理時讀取10條流水記錄進行統(tǒng)計;而在根據(jù)根據(jù)預設時間獲取流水記錄時,可以在當前時間到達預設時間時,讀取當前還未處理的所有流水記錄進行統(tǒng)計。

在進行統(tǒng)計的流水記錄所對應的交易中,熱點賬戶a可以是作為交易的借方,也可以是作為交易的貸方?;谇笆龅?0條流水記錄最終統(tǒng)計得到的軋差值為+300,表示在這些流水記錄所對應的交易完成后,熱點賬戶a的余額將增加300。

余額更新值是指若基于熱點賬戶當前的余額和統(tǒng)計得到的軋差值對賬戶余額進行更新后余額的最新值。例如,若前述的賬戶a的當前余額為1000,若基于軋差值進行更新后余額的最新值將是1300。

第一閾值是指賬戶允許的最低余額,可以根據(jù)實際場景的需求具體設定。正常情況下,該第一閾值可以是0,即不允許透支,此外也可以基于賬戶的實際透支策略,將該第一閾值設定為-2000,即允許賬戶透支2000。

對于前述的熱點賬戶a,若該賬戶設定的第一閾值為0,其余額更新值為1300,大于第一閾值,由此可以對這些流水記錄進行入賬處理,即基于所述軋差值,更新所述熱點賬戶的余額,處理后熱點賬戶a的余額為1300。在數(shù)據(jù)庫中對賬戶余額所對應的數(shù)據(jù)記錄進行更新時,對該數(shù)據(jù)記錄加行級鎖,然后修改數(shù)據(jù),并在修改完成后釋放該行級鎖。每次加鎖修改是對多次交易對應的金額變動進行處理,可以將原先多的多次更新操作合并為一次,例如本申請實施例中將10條流水記錄進行統(tǒng)計,然后進行余額更新,可以將原本的10次余額更新操作合并為1次,大大提高了處理的效率,降低數(shù)據(jù)庫鎖競爭的次數(shù),減少因鎖競爭機制而引起的等待。同時,在進行入賬處理之前,會基于賬戶的余額進行透支風險的判斷,只在符合預設策略的情況下,直接進行入賬處理。

在本申請的另一實施例中,提供了在余額更新值小于所述第一閾值時進行后續(xù)處理的方案,其中,所述計算處理裝置520還用于在余額更新值小于所述第一閾值時,基于統(tǒng)計所述流水記錄中正金額記錄的變化值;而所述余額更新裝置530還用于在余額更新值小于所述第一閾值時,對所述正金額記錄進行入賬處理,基于所述正金額記錄的變化值,更新所述熱點賬戶的余額;以交易時間順序逐條對所述負金額記錄進行入賬處理,基于所述流水記錄中每條負金額記錄的變化值,更新所述熱點賬戶的余額,其中,所述熱點賬戶更新后的余額大于等于所述第一閾值。

其中,正金額記錄是指使得賬戶的金額增加的流水記錄,相應地,負金額記錄是指使得賬戶的金額減少的流水記錄。

例如,對于熱點賬戶b,設定的第一閾值為0,本次處理時獲取并統(tǒng)計的6條流水記錄發(fā)生變動的金額分別為:+100、-500、-400、-100、+200、-300,由此軋差值為-1000,若熱點賬戶b的當前余額為800,則可以確定余額更新值為-200,小于第一閾值0,無法直接進行入賬處理。此時,先統(tǒng)計這些流水記錄中正金額記錄的變化值,即統(tǒng)計+100和+200對應的兩條流水記錄,由此確定正金額記錄的變化值為+300。

由于正金額記錄對應的資金變化一定會使得熱點賬戶的余額增加,不存在潛在的透支風險,因此,可以直接進行入賬處理,即基于所述正金額記錄的變化值,更新所述熱點賬戶的余額。由此,在對正金額記錄進行入賬處理后,熱點賬戶b的余額更新為1100。

為了避免透支風險,對于負金額記錄,以其交易時間順序逐條進行入賬處理,例如-500、-400、-100和-300多對應的流水記錄的交易時間依次為:00:00:02、00:00:03、00:00:05、00:00:09,則先基于變化值-500更新熱點賬戶b的余額,更新后的余額為600,然后繼續(xù)更新-400和-100,此時更新后的余額為100,由于需要保證熱點賬戶更新后的余額大于等于所述第一閾值0,若繼續(xù)基于變化值-300進行更新,則更新后的余額為-200,將小于第一閾值。由此,不對最后一條負金額記錄進行入賬處理,而本次處理后熱點賬戶b的余額為100。

而對于未處理的負金額記錄,可以返回入賬處理失敗的信息。由于一次交易涉及的賬戶為兩個,一個賬戶的一條負金額記錄會與另一賬戶的正金額記錄對應,因此本申請實施例提供的設備還可以包括沖正處理裝置,該沖正處理裝置用于在一條流水記錄進行入賬處理失敗時,基于相關流水記錄進行沖正處理,從而保證交易雙方的賬戶數(shù)據(jù)正確。

進一步地,本申請實施例提供的解決熱點賬戶問題的記賬設備還包括記賬接入裝置,該記賬接入裝置,首先獲取記賬請求,記賬請求所攜帶的信息能夠用于生成流水記錄,然后,在所述記賬請求涉及熱點賬戶時,將關于所述熱點賬戶的流水記錄插入記賬緩沖表。本申請實施例中的熱點賬戶是指與其他賬戶進行頻繁交互,需要頻繁更新余額的賬戶,對于一次交易所涉及的雙方賬戶,可能存在以下幾種情形:

1、雙方賬戶均為熱點賬戶;

2、借方賬戶為熱點賬戶,貸方賬戶為普通賬戶;

3、貸方賬戶為熱點賬戶,借方賬戶為普通賬戶;

4、雙方賬戶均為普通賬戶。

由此,記賬接入裝置可以先對記賬請求中所涉及的賬戶進行判斷,若存在熱點賬戶,則將關于該熱點賬戶的流水記錄插入記賬緩沖表。所述記賬緩沖表可以是在內存中的特定存儲區(qū)域,用于存儲未完成處理的流水記錄。

由此,流水讀取裝置可以在進行獲取關于熱點賬戶的多條流水記錄時,可以從所述記賬緩沖表中獲取關于熱點賬戶的多條流水記錄。

在實際場景中,可以對記賬緩沖表中的流水記錄的當前狀態(tài)進行標記,從而隨時確定當前的處理情況。例如,記賬接入裝置在將關于所述熱點賬戶的流水記錄插入記賬緩沖表時,將所述流水記錄的狀態(tài)標記為待記賬。

而流水讀取裝置從記賬緩沖表中獲取關于熱點賬戶的多條流水記錄時,可以具體為:從所述記賬緩沖表中獲取狀態(tài)為待記賬的、關于熱點賬戶的多條流水記錄,并將所述流水記錄的狀態(tài)修改為記賬中。進一步地,流水讀取裝置可以根據(jù)入賬處理的結果,將狀態(tài)標記為記賬成功或者記賬失敗等,例如入賬處理成功,可以標記為記賬成功,反之標記為記賬失敗。由此,可以基于待記賬、記賬中這些狀態(tài)信息判斷交易的記賬請求是否已經(jīng)開始處理、是否已經(jīng)完成、入賬是否成功等。

在本申請的一個實施例中,還可以設置一交易流水表,用于存放入賬處理成功的流水記錄,即在對所述流水記錄進行入賬處理成功后,流水讀取裝置可以將所述流水記錄由所述記賬緩沖表插入交易流水表。

此外,在進行沖正處理時,可以設置一沖正緩沖表,用于存放入賬處理失敗的流水記錄,在對所述流水記錄進行入賬處理失敗時,沖正處理裝置可以將所述流水記錄插入沖正緩沖表。在進行沖正處理時,可以基于沖正緩沖表中的流水記錄,對本次交易涉及的賬戶進行沖正處理,保證交易雙方的賬戶數(shù)據(jù)正確。

進一步地,還可以是設置一歷史緩沖表,對于記賬緩沖表中已經(jīng)處理完畢的流水記錄,無論是記賬成功或者記賬失敗的,都可以移動至歷史緩沖表中,使得記賬緩沖表中僅包含待記賬和記賬中的流水記錄。

作為一種優(yōu)選的實施方式,本申請實施例的設備還包括健康守護裝置,用于提供異常監(jiān)控的功能,從而對記賬處理、沖正處理等過程進行監(jiān)控,保證在系統(tǒng)出現(xiàn)異常時,能夠自動發(fā)現(xiàn),并通知運維人員第一時間發(fā)現(xiàn)并跟進處理。具體地,健康守護裝置用于統(tǒng)計所述記賬緩沖表中未進行入賬處理的流水記錄的數(shù)量或入賬處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。此外,也可以統(tǒng)計所述沖正緩沖表中未進行沖正處理的流水記錄的數(shù)量或沖正處理時長超過第二閾值的流水記錄的數(shù)量,若數(shù)量超過警戒值,則生成報警信息。

另外,本申請方案的一部分可被應用為計算機程序產(chǎn)品,例如計算機程序指令,當其被計算機執(zhí)行時,通過該計算機的操作,可以調用或提供根據(jù)本申請的方法和/或技術方案。而調用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)程序指令運行的計算機設備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個如圖6所示的解決熱點賬戶問題的記賬設備,該設備包括用于存儲計算機程序指令的存儲器620和用于執(zhí)行程序指令的處理器610,其中,當該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該設備運行基于前述根據(jù)本申請的多個實施例的方法和/或技術方案。

在實際場景中,可以通過觸發(fā)設備運行相應的進程,實現(xiàn)前述多個實施例的方法和/或技術方案,例如,獲取記賬請求、基于記賬請求的內容向記賬緩沖表插入流水記錄的處理,可以由運行于服務器端的記賬接入進程實現(xiàn);讀取流水記錄、并基于流水記錄進行余額更新的處理,可以由批量記賬進程實現(xiàn);沖正過程可以由沖正處理進程實現(xiàn);而異常監(jiān)控的功能可以由健康守護進程實現(xiàn)。

圖7示出了在支付轉接清算系統(tǒng)的服務器端設備中,采用本申請實施例提供的方案進行記賬的總體處理流程圖,該實現(xiàn)方案的總體思路如下:

1、在支付轉接清算系統(tǒng)中對熱點賬戶進行標記,使其可以識別為熱點賬戶設計專用的記賬流程,即周期性匯總記賬。

2、記賬接入進程對交易的借貸雙方賬戶進行判斷,如借方賬戶或貸方賬戶涉及熱點賬戶的余額更新,將其相關信息插入記賬緩沖表,并輪詢入賬處理結果,獲取到入賬處理結果后把該筆流水記錄移除到歷史緩沖表中。記賬緩沖表中流水記錄的所涉及的字段可以包括:帳號、流水號、日期、借貸方向、金額、失敗原因、進程唯一標識、強制清算標識、流水狀態(tài)(待記賬、記賬中、記賬成功、記賬失敗)等。

3、批量記賬進程周期性讀取記賬緩沖表,逐筆標記記賬緩沖表中各條流水記錄(待記賬→記賬中)后,對各流水按賬號進行匯總軋差,計算軋差值。此過程中,通過數(shù)據(jù)庫狀態(tài)互斥保證記賬緩沖表中的每一條流水記錄只被標記和匯總軋差一次。

4、根據(jù)軋差值更新熱點賬戶的當前余額。更新前,會判斷賬戶余額是否足夠,足夠時方可根據(jù)軋差值更新余額。否則先入賬該批次流水記錄中的正金額記錄,再對負金額記錄進行逐筆入賬,分別處理。余額足夠時,入賬并返回成功;余額不足時,返回失敗。

5、將超時的流水記錄(即未明交易)記入沖正緩沖表,后續(xù)由沖正處理進程統(tǒng)一處理。

6、對于最終入賬成功的流水記錄,插入交易流水表。

7、設置健康監(jiān)控進程對批量記賬進程和沖正處理進程進行監(jiān)控。

在實現(xiàn)記賬的過程中,主要通過設備運行的相應進程實現(xiàn)方案中的各類處理,所述進程主要包括以下幾類。

一、記賬接入進程

記賬接入進程主要負責將涉及熱點賬戶的交易插入記賬緩沖表、根據(jù)流水號掃描記賬狀態(tài),并根據(jù)不同的狀態(tài)對交易進行后續(xù)處理。其具體處理流程如圖8所示,如下幾點是對所述記賬接入進程的說明。

(1)如借貸雙方都不涉及熱點賬戶,則按常規(guī)的記賬方法,對每一筆交易進行實時余額更新,借貸操作在同一個數(shù)據(jù)庫事務中實現(xiàn)同步處理。

(2)每個交易有借方和貸方,為保證資金安全,先記借方再記貸方。

(3)如出現(xiàn)未明交易或單邊賬的情況,沖正的策略為:

1.借方超時+記賬中時,進行借方?jīng)_正;

2.借方成功+貸方超時+貸方待記賬,進行借方?jīng)_正;

3.借方成功+貸方失敗,進行借方?jīng)_正;

4.借方成功+貸方超時+貸方記賬中,進行借貸雙方?jīng)_正;

5.插入交易流水表失敗,進行借貸雙方?jīng)_正。

由于記賬時先記借方再記貸方,因此不存在單獨貸方?jīng)_正的情況。

(4)如出現(xiàn)記賬超時,首先記錄日志。日志的主要內容可以為:如果該筆交易的流水記錄狀態(tài)為待記賬,則更新該筆超時交易為失敗,原因記賬超時,后續(xù)不再對該筆交易的流水記錄進行處理。如果該交易的流水記錄狀態(tài)為記賬中,則插入沖正緩沖表,后續(xù)由沖正處理進程對該交易進行沖正。

(5)超時時間和掃描輪詢時間(sleep)均可作為技術性調優(yōu)參數(shù)。

二、批量記賬進程

批量記賬進程定時掃描記賬緩沖表,獲取所有待記賬的流水記錄,更新其狀態(tài)為“記賬中”后,按賬號分組匯總軋差值。檢查余額是否足夠,并針對余額足夠和不足的情況進行不同的入賬處理。其具體處理流程如圖9所示,如下幾點是對所述批量記賬進程的說明。

(1)為提高記賬效率和高可用性,系統(tǒng)中可同時并發(fā)多個批量記賬進程,批量記賬進程也可以分別部署在不同服務器中。

(2)每個批量記賬進程啟動時獲取一個進程唯一標識。批量進程在將流水記錄由“待記賬”更新為“記賬中”時,將自己的進程唯一標識寫入記賬緩沖表的流水記錄中,后續(xù)處理依據(jù)進程唯一標識保證記賬處理可跟蹤。

(3)當賬戶余額不足時,該批次中的正金額交易是可以入賬成功的。對負金額交易進行逐筆入賬,分別處理。余額足夠時,入賬并返回成功;余額不足時,返回失敗。

(4)對于預授權完成等有強制清算需求的交易,出現(xiàn)余額不足時,優(yōu)先強制清算。

(5)在更新余額以及將記賬緩沖表中的流水記錄狀態(tài)標記為記賬成功時,為保證匯總更新余額和交易明細一致,余額更新與記賬緩沖表狀態(tài)更新必須在同一個數(shù)據(jù)庫事務中進行。

三、沖正處理進程

沖正處理進程定時掃描沖正緩沖表中的流水記錄,關聯(lián)記賬緩沖表,獲得待沖正的流水記錄的相關,并根據(jù)流水記錄的狀態(tài)判斷進行沖正操作,具體的沖正策略為:

(1)借方超時+記賬中時,進行借方?jīng)_正;

(2)借方成功+貸方超時+貸方待記賬,進行借方?jīng)_正;

(3)借方成功+貸方失敗,進行借方?jīng)_正;

(4)借方成功+貸方超時+貸方記賬中,進行借貸雙方?jīng)_正;

(5)插入交易流水表失敗,進行借貸雙方?jīng)_正。

為防止出現(xiàn)資金風險,借貸雙方的沖賬處理需在一個數(shù)據(jù)庫事務內實現(xiàn),確保同時完成工程。沖正處理進程的處理流程如圖10所示,沖正處理進程可以多個并發(fā)(由于在實際場景中,沖正處理的處理量不大,配置雙活即可滿足正常使用需求),可以分別部署在不同服務器中。

四、健康守護進程

設置健康守護進程對批量記賬進程、沖正處理進程進行監(jiān)控,保證其在出現(xiàn)掛起、僵死、異常退出等異常時,系統(tǒng)能夠自動發(fā)現(xiàn)并通知運維人員第一時間跟進處理。

健康守護進程可以基于記賬緩沖表、沖正緩沖表進行流水數(shù)量監(jiān)控。流程如圖11所示,同時,健康守護進程也可以根據(jù)進行入賬或者沖正的時間戳,判斷入賬或沖正處理時間是否已超出報警閾值(可參數(shù)化配置),如果超過則報警,其處理流程如圖12所示。當發(fā)現(xiàn)存在異常時,可以讀取讀取進行進行處理的進程的進程唯一標識,并在報警信息中提示對應進程狀態(tài)異常。如下幾點是對所述健康守護進程的說明。

(1)健康守護進程統(tǒng)計記賬緩沖表內所有涉及單個賬戶的流水記錄數(shù)量。如果某賬戶在某一周期內連續(xù)待處理流水記錄數(shù)超過警戒值(該值作為技術參數(shù)可配,例如1000至2000左右)則報警。

(2)健康守護進程統(tǒng)計沖正緩沖表內所有流水數(shù)量。如果在某一周期內連續(xù)待沖正的流水記錄數(shù)超過警戒值(該值作為技術參數(shù)可配,例如100至200左右)則報警。

(3)進程分別統(tǒng)計記賬緩沖表/沖正緩沖表內所有超時的流水記錄的數(shù)量。如發(fā)現(xiàn)存在某些流水記錄的入賬/沖正處理時間過長,超過報警閾值(該值不同于聯(lián)機交易超時時長,且應設置為遠大于聯(lián)機交易的超時時長,作為技術參數(shù)可配),則報警。

(4)在批量記賬進程掛起時發(fā)出預警,可以自動進行異常處理。首先關閉此批量記賬進程,使批量記賬處理回滾,再將記賬緩沖表中由該批量記賬進程處理的流水記錄的狀態(tài)置為“記賬失敗”,確保數(shù)據(jù)一致性和沒有資金風險,并重啟出現(xiàn)問題的批量記賬進程。運維人員應跟進檢查異常處理是否正確。

(5)沖正緩沖表中的各條流水記錄,技術上均能沖正成功。如由于沖正處理進程掛起,或由于未知原因出現(xiàn)無法沖正的流水記錄導致報警,可以提取這些流水記錄的處理詳細信息,由運維人員與開發(fā)人員共同研究解決。

針對現(xiàn)有技術中的順序更新記賬方案和本申請?zhí)峁┑呐烤彌_記賬方案進行模擬真實業(yè)務場景的壓力測試,圖13示出了測試場景下的系統(tǒng)示意圖,包括模擬客戶端設備1310、清算服務器1320和數(shù)據(jù)庫服務器1330,其中,客戶端設備用于模擬用戶交易、生成并發(fā)送記賬請求,清算服務器用于實現(xiàn)本申請實施例提供的記賬方案,數(shù)據(jù)庫服務器用于提供數(shù)據(jù)存儲服務。

在上述測試環(huán)境下,兩個方案的測試結果如下表所示:

順序更新記賬方案中,在清算服務器1臺時達到250左右的tps,增加服務器資源,tps無明顯提高,存在熱點賬戶并發(fā)的處理瓶頸問題,無法有效利用服務器資源。

批量緩沖記賬方案中,單臺清算服務器的tps在140左右,4臺清算服務器的tps在550左右,7臺清算服務器的tps在950左右,在測試場景的范圍內,隨著服務器資源的增加,在tps基本可以維持線性增長。由此,本申請的方案能夠解決熱點賬戶并發(fā)的處理瓶頸問題,可以有效利用服務器資源。

需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(asic)、通用目的計算機或任何其他類似硬件設備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關的數(shù)據(jù)結構)可以被存儲到計算機可讀記錄介質中,例如,ram存儲器,磁或光驅動器或軟磁盤及類似設備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。

對于本領域技術人員而言,顯然本申請不限于上述示范性實施例的細節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化涵括在本申請內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。裝置權利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1