本技術(shù)涉及云計算領(lǐng)域,具體而言,涉及一種賬戶限額的控制方法、裝置、處理器及電子設(shè)備。
背景技術(shù):
1、現(xiàn)有技術(shù)中金融機(jī)構(gòu)一般通過三種方式控制客戶的賬戶額度:第一,基于luna腳本和redis分布式鎖控制客戶的賬戶額度,但在使用分布式鎖時,可能由于鎖失效或鎖沖突導(dǎo)致鎖失效(例如,交易請求長時間阻塞在客戶端中導(dǎo)致鎖失效、redis服務(wù)器時鐘漂移或單個節(jié)點(diǎn)損壞導(dǎo)致兩個節(jié)點(diǎn)持有同一把鎖等情況),進(jìn)而造成客戶的賬戶額度無法及時更新的問題;第二,將一個交易頻繁的客戶賬戶拆分為多個影子賬戶,將該賬戶的余額拆分到各個影子賬戶中,每次交易請求由hash選擇合適的影子賬戶進(jìn)行交易,但這種方法會由于單個影子賬戶中的金額較低使得交易請求無法完成,出現(xiàn)扣款不成功的情況,進(jìn)而影響客戶的正常交易;第三,將接收到的交易請求存放到消息隊列中,每隔一段時間批量執(zhí)行消息隊列中的交易請求,并批量插入賬戶的全部明細(xì)數(shù)據(jù),但在接收到大量交易請求的時候,會由于消息隊列中堆積大量的交易請求,無法及時處理消息隊列中的交易請求,導(dǎo)致賬戶限額的時效性較差的問題。
2、針對相關(guān)技術(shù)中通過分布式鎖處理客戶的交易請求時,由于網(wǎng)絡(luò)波動或節(jié)點(diǎn)故障使分布式鎖失效,無法及時更新客戶的賬戶限額,導(dǎo)致賬戶限額的時效性較差的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種賬戶限額的控制方法、裝置、處理器及電子設(shè)備,以解決相關(guān)技術(shù)中通過分布式鎖處理客戶的交易請求時,由于網(wǎng)絡(luò)波動或節(jié)點(diǎn)故障使分布式鎖失效,無法及時更新客戶的賬戶限額,導(dǎo)致賬戶限額的時效性較差的問題。
2、為了實(shí)現(xiàn)上述目的,根據(jù)本技術(shù)的一個方面,提供了一種賬戶限額的控制方法,該方法包括:在接收到交易請求的情況下,確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值,其中,所述目標(biāo)賬戶是指所述交易請求中的交易賬戶,所述限額數(shù)值表示所述目標(biāo)賬戶的交易金額上限;在所述交易金額未超過所述限額數(shù)值的情況下,依據(jù)所述交易請求生成所述目標(biāo)賬戶的限額變更信息,其中,所述限額變更信息是指所述目標(biāo)賬戶的賬戶交易限額的變更信息;將所述限額變更信息發(fā)送至服務(wù)端節(jié)點(diǎn),其中,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果;接收所述服務(wù)端節(jié)點(diǎn)返回的執(zhí)行結(jié)果,在所述執(zhí)行結(jié)果指示所述交易請求執(zhí)行成功的情況下,依據(jù)所述執(zhí)行結(jié)果更新所述目標(biāo)賬戶的限額信息。
3、進(jìn)一步地,在確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值之前,所述方法還包括:確定限額規(guī)則,其中,所述限額規(guī)則是指金融機(jī)構(gòu)對賬戶交易的交易金額所設(shè)定的上限;確定所述金融機(jī)構(gòu)中賬戶的歷史限額變更信息,并將所述歷史限額變更信息存儲至etcd集群中,其中,所述歷史限額變更信息表示所述金融機(jī)構(gòu)中賬戶歷史交易中的限額數(shù)值的變更信息。
4、進(jìn)一步地,確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值包括:確定所述交易請求中的交易金額;在所述etcd集群中獲取所述目標(biāo)賬戶的限額變更信息;依據(jù)所述目標(biāo)賬戶的歷史限額變更信息、所述限額規(guī)則和所述交易金額確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值。
5、進(jìn)一步地,將所述限額變更信息發(fā)送至服務(wù)端節(jié)點(diǎn),其中,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果包括:在所述限額規(guī)則中,確定所述交易請求對應(yīng)的目標(biāo)限額規(guī)則;基于netty長連接將所述目標(biāo)限額規(guī)則發(fā)送至所述服務(wù)端節(jié)點(diǎn),其中,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述目標(biāo)限額規(guī)則執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果。
6、進(jìn)一步地,在基于netty長連接將所述目標(biāo)限額規(guī)則發(fā)送至所述服務(wù)端節(jié)點(diǎn)之前,所述方法還包括:將所述服務(wù)端節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)發(fā)送至所述etcd集群中;基于netty長連接將所述目標(biāo)限額規(guī)則發(fā)送至所述服務(wù)端節(jié)點(diǎn)包括:依據(jù)所述etcd集群中存儲的所述節(jié)點(diǎn)狀態(tài),在所述服務(wù)端節(jié)點(diǎn)中確定目標(biāo)服務(wù)端節(jié)點(diǎn);通過哈希算法將所述目標(biāo)限額規(guī)則發(fā)送至所述目標(biāo)服務(wù)端節(jié)點(diǎn)中。
7、進(jìn)一步地,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述目標(biāo)限額規(guī)則執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果包括:將所述限額變更信息發(fā)送到消息隊列中;依據(jù)所述目標(biāo)限額規(guī)則,所述目標(biāo)服務(wù)端節(jié)點(diǎn)依次判斷所述消息隊列中所述限額變更信息的限額數(shù)值是否超過所述目標(biāo)賬戶的限額數(shù)值;若所述限額變更信息的限額數(shù)值超過所述目標(biāo)賬戶的限額數(shù)值,則確定所述限額變更信息對應(yīng)的交易請求執(zhí)行失?。蝗羲鱿揞~變更信息的限額數(shù)值未超過所述目標(biāo)賬戶的限額數(shù)值,則所述目標(biāo)服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息更新所述目標(biāo)賬戶的限額數(shù)值,并確定所述限額變更信息對應(yīng)的交易請求執(zhí)行成功。
8、進(jìn)一步地,接收所述服務(wù)端節(jié)點(diǎn)返回的執(zhí)行結(jié)果,在所述執(zhí)行結(jié)果指示所述交易請求執(zhí)行成功的情況下,依據(jù)所述執(zhí)行結(jié)果更新所述目標(biāo)賬戶的限額信息包括:通過所述netty長連接接收所述服務(wù)端節(jié)點(diǎn)返回的執(zhí)行結(jié)果;依據(jù)所述執(zhí)行結(jié)果確定所述目標(biāo)賬戶更新后的限額信息。
9、進(jìn)一步地,在所述目標(biāo)服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息更新所述目標(biāo)賬戶的限額數(shù)值,并確定所述限額變更信息對應(yīng)的交易請求執(zhí)行成功之后,所述方法還包括:每經(jīng)過預(yù)設(shè)時長,控制所述目標(biāo)服務(wù)端節(jié)點(diǎn)將所述目標(biāo)賬戶更新后的限額信息發(fā)送至所述etcd集群中,以更新所述etcd集群中的所述目標(biāo)賬戶的限額變更信息。
10、進(jìn)一步地,在依據(jù)所述執(zhí)行結(jié)果確定所述目標(biāo)賬戶更新后的限額信息之后,所述方法還包括:在接收到所述目標(biāo)賬戶的其它交易請求的情況下,依據(jù)所述其它交易請求、所述目標(biāo)賬戶更新后的限額信息和所述限額規(guī)則確定所述其它交易請求中的交易金額是否超過所述目標(biāo)賬戶當(dāng)前的限額數(shù)值。
11、為了實(shí)現(xiàn)上述目的,根據(jù)本技術(shù)的另一方面,提供了一種賬戶限額的控制裝置,該裝置包括:第一確定單元,用于在接收到交易請求的情況下,確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值,其中,所述目標(biāo)賬戶是指所述交易請求中的交易賬戶,所述限額數(shù)值表示所述目標(biāo)賬戶的交易金額上限;生成單元,用于在所述交易金額未超過所述限額數(shù)值的情況下,依據(jù)所述交易請求生成所述目標(biāo)賬戶的限額變更信息,其中,所述限額變更信息是指所述目標(biāo)賬戶的賬戶交易限額的變更信息;發(fā)送單元,用于將所述限額變更信息發(fā)送至服務(wù)端節(jié)點(diǎn),其中,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果;更新單元,用于接收所述服務(wù)端節(jié)點(diǎn)返回的執(zhí)行結(jié)果,在所述執(zhí)行結(jié)果指示所述交易請求執(zhí)行成功的情況下,依據(jù)所述執(zhí)行結(jié)果更新所述目標(biāo)賬戶的限額信息。
12、進(jìn)一步地,所述裝置還包括:第二確定單元,用于在確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值之前,確定限額規(guī)則,其中,所述限額規(guī)則是指金融機(jī)構(gòu)對賬戶交易的交易金額所設(shè)定的上限;第三確定單元,用于確定所述金融機(jī)構(gòu)中賬戶的歷史限額變更信息,并將所述歷史限額變更信息存儲至etcd集群中,其中,所述歷史限額變更信息表示所述金融機(jī)構(gòu)中賬戶歷史交易中的限額數(shù)值的變更信息。
13、進(jìn)一步地,所述第一確定單元包括:第一確定子單元,用于確定所述交易請求中的交易金額;獲取子單元,用于在所述etcd集群中獲取所述目標(biāo)賬戶的限額變更信息;第二確定子單元,用于依據(jù)所述目標(biāo)賬戶的歷史限額變更信息、所述限額規(guī)則和所述交易金額確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值。
14、進(jìn)一步地,所述發(fā)送單元包括:第三確定子單元,用于在所述限額規(guī)則中,確定所述交易請求對應(yīng)的目標(biāo)限額規(guī)則;第一發(fā)送子單元,用于基于netty長連接將所述目標(biāo)限額規(guī)則發(fā)送至所述服務(wù)端節(jié)點(diǎn),其中,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述目標(biāo)限額規(guī)則執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果。
15、進(jìn)一步地,所述發(fā)送單元還包括:第二發(fā)送子單元,用于在基于netty長連接將所述目標(biāo)限額規(guī)則發(fā)送至所述服務(wù)端節(jié)點(diǎn)之前,將所述服務(wù)端節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)發(fā)送至所述etcd集群中;所述第一發(fā)送子單元包括:第一確定模塊,用于依據(jù)所述etcd集群中存儲的所述節(jié)點(diǎn)狀態(tài),在所述服務(wù)端節(jié)點(diǎn)中確定目標(biāo)服務(wù)端節(jié)點(diǎn);第一發(fā)送模塊,用于通過哈希算法將所述目標(biāo)限額規(guī)則發(fā)送至所述目標(biāo)服務(wù)端節(jié)點(diǎn)中。
16、進(jìn)一步地,所述第一發(fā)送子單元包括:第二發(fā)送模塊,用于將所述限額變更信息發(fā)送到消息隊列中;判斷模塊,用于依據(jù)所述目標(biāo)限額規(guī)則,所述目標(biāo)服務(wù)端節(jié)點(diǎn)依次判斷所述消息隊列中所述限額變更信息的限額數(shù)值是否超過所述目標(biāo)賬戶的限額數(shù)值;第二確定模塊,用于若所述限額變更信息的限額數(shù)值超過所述目標(biāo)賬戶的限額數(shù)值,則確定所述限額變更信息對應(yīng)的交易請求執(zhí)行失?。桓履K,用于若所述限額變更信息的限額數(shù)值未超過所述目標(biāo)賬戶的限額數(shù)值,則所述目標(biāo)服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息更新所述目標(biāo)賬戶的限額數(shù)值,并確定所述限額變更信息對應(yīng)的交易請求執(zhí)行成功。
17、進(jìn)一步地,所述更新單元包括:接收子單元,用于通過所述netty長連接接收所述服務(wù)端節(jié)點(diǎn)返回的執(zhí)行結(jié)果;第四確定子單元,用于依據(jù)所述執(zhí)行結(jié)果確定所述目標(biāo)賬戶更新后的限額信息。
18、進(jìn)一步地,所述第一發(fā)送子單元還包括:第三發(fā)送模塊,用于在所述目標(biāo)服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息更新所述目標(biāo)賬戶的限額數(shù)值,并確定所述限額變更信息對應(yīng)的交易請求執(zhí)行成功之后,每經(jīng)過預(yù)設(shè)時長,控制所述目標(biāo)服務(wù)端節(jié)點(diǎn)將所述目標(biāo)賬戶更新后的限額信息發(fā)送至所述etcd集群中,以更新所述etcd集群中的所述目標(biāo)賬戶的限額變更信息。
19、進(jìn)一步地,所述更新單元還包括:第五確定子單元,用于在依據(jù)所述執(zhí)行結(jié)果確定所述目標(biāo)賬戶更新后的限額信息之后,在接收到所述目標(biāo)賬戶的其它交易請求的情況下,依據(jù)所述其它交易請求、所述目標(biāo)賬戶更新后的限額信息和所述限額規(guī)則確定所述其它交易請求中的交易金額是否超過所述目標(biāo)賬戶當(dāng)前的限額數(shù)值。
20、為了實(shí)現(xiàn)上述目的,根據(jù)本技術(shù)的一個方面,提供了一種處理器,處理器用于運(yùn)行程序,其中,程序運(yùn)行時執(zhí)行上述任意一項(xiàng)所述賬戶限額的控制方法。
21、為了實(shí)現(xiàn)上述目的,根據(jù)本技術(shù)的一個方面,提供了一種電子設(shè)備,包括一個或多個處理器和存儲器,存儲器用于存儲一個或多個程序,其中,當(dāng)一個或多個程序被一個或多個處理器執(zhí)行時,使得一個或多個處理器實(shí)現(xiàn)上述任意一項(xiàng)所述賬戶限額的控制方法。
22、通過本技術(shù),采用以下步驟:在接收到交易請求的情況下,確定所述交易請求中的交易金額是否超過目標(biāo)賬戶的限額數(shù)值,其中,所述目標(biāo)賬戶是指所述交易請求中的交易賬戶,所述限額數(shù)值表示所述目標(biāo)賬戶的交易金額上限;在所述交易金額未超過所述限額數(shù)值的情況下,依據(jù)所述交易請求生成所述目標(biāo)賬戶的限額變更信息,其中,所述限額變更信息是指所述目標(biāo)賬戶的賬戶交易限額的變更信息;將所述限額變更信息發(fā)送至服務(wù)端節(jié)點(diǎn),其中,所述服務(wù)端節(jié)點(diǎn)依據(jù)所述限額變更信息執(zhí)行所述交易請求,得到所述交易請求的執(zhí)行結(jié)果;接收所述服務(wù)端節(jié)點(diǎn)返回的執(zhí)行結(jié)果,在所述執(zhí)行結(jié)果指示所述交易請求執(zhí)行成功的情況下,依據(jù)所述執(zhí)行結(jié)果更新所述目標(biāo)賬戶的限額信息,解決了相關(guān)技術(shù)中通過分布式鎖處理客戶的交易請求時,由于網(wǎng)絡(luò)波動或節(jié)點(diǎn)故障使分布式鎖失效,無法及時更新客戶的賬戶限額,導(dǎo)致賬戶限額的時效性較差的問題。通過在服務(wù)端節(jié)點(diǎn)執(zhí)行交易請求之前,由客戶端節(jié)點(diǎn)對交易請求進(jìn)行判斷,篩選交易金額未超過目標(biāo)賬戶的限額數(shù)值的交易請求,減少了服務(wù)端節(jié)點(diǎn)需要處理的交易請求的數(shù)量,避免了交易請求堆積導(dǎo)致賬戶限額的時效性較差的問題,并且通過生成目標(biāo)賬戶限額數(shù)值變更時的增量信息(即上述的限額變更信息),使得服務(wù)端節(jié)點(diǎn)僅需處理增量數(shù)據(jù)不需要處理目標(biāo)賬戶的全量數(shù)據(jù),降低了服務(wù)端節(jié)點(diǎn)的計算壓力,達(dá)到了提高服務(wù)端節(jié)點(diǎn)處理交易請求的效率的效果,進(jìn)一步達(dá)到了提高賬戶限額的時效性的效果。