本發(fā)明涉及工程項(xiàng)目軟件開(kāi)發(fā),特別是涉及一種高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、在軟件行業(yè)發(fā)展中,各社交產(chǎn)品日益火爆,為了獲取更多用戶及流量,各大平臺(tái)推出新玩法,例如搶紅包、秒殺搶購(gòu)、促銷(xiāo)活動(dòng)。紅包功能是一種宣傳產(chǎn)品的方式,但其同質(zhì)化嚴(yán)重,若需要采用紅包雨方式進(jìn)行引流,面向廣大c端用戶,系統(tǒng)設(shè)計(jì)需要承載三高(高可用、高并發(fā)和高性能)要求。
2、目前,解決高并發(fā)問(wèn)題的方法主要包括使用自旋互斥鎖、?cas樂(lè)觀鎖、?數(shù)據(jù)庫(kù)層面的悲觀鎖和樂(lè)觀鎖,?以及依賴(lài)數(shù)據(jù)庫(kù)執(zhí)行引擎的順序執(zhí)行機(jī)制,但上述方案均存在一定缺陷,具體如下:
3、(1)利用synchronized關(guān)鍵字分布式環(huán)境下無(wú)效,?synchronized是?java?中的關(guān)鍵字,用于在單個(gè)?jvm?中保護(hù)共享資源;在分布式環(huán)境下,多個(gè)服務(wù)實(shí)例之間無(wú)法通過(guò)synchronized來(lái)同步,因?yàn)楦鱾€(gè)實(shí)例之間無(wú)法直接共享?jvm?中的鎖;synchronized會(huì)導(dǎo)致性能問(wèn)題,尤其在高并發(fā)的情況下,爭(zhēng)奪鎖可能會(huì)成為瓶頸。
4、(2)悲觀鎖:?在數(shù)據(jù)處理過(guò)程中,?將數(shù)據(jù)處于鎖定狀態(tài),?直到處理完畢;?這種方式可以避免并發(fā)訪問(wèn)造成的沖突,?但可能會(huì)降低系統(tǒng)的并發(fā)處理能力。
5、(3)直接訪問(wèn)數(shù)據(jù)庫(kù)方案,利用數(shù)據(jù)庫(kù)鎖表機(jī)制,而高并發(fā)?訪問(wèn)的訪問(wèn)容易導(dǎo)致導(dǎo)致內(nèi)存溢出,導(dǎo)致集群服務(wù)直接宕機(jī),適用并發(fā)量不高情況。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于,提供一種高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法、系統(tǒng)、設(shè)備及介質(zhì),進(jìn)而解決現(xiàn)有技術(shù)中存在的上述所有問(wèn)題或問(wèn)題之一。
2、為解決上述技術(shù)問(wèn)題,本發(fā)明的具體技術(shù)方案如下:
3、一方面,本發(fā)明提供一種高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,包括以下步驟:
4、初始化步驟:
5、初始化庫(kù)存數(shù)據(jù),將所有的紅包信息緩存至redis中;
6、加鎖步驟:
7、將redis作為分布式調(diào)度中心,對(duì)請(qǐng)求進(jìn)行自動(dòng)上鎖;根據(jù)業(yè)務(wù)時(shí)長(zhǎng)以及業(yè)務(wù)完成情況進(jìn)行自適應(yīng)解鎖;
8、校驗(yàn)步驟:
9、對(duì)紅包金額數(shù)量及剩余金額進(jìn)行校驗(yàn),并將得到的紅包信息緩存至redis中;
10、金額分類(lèi)步驟:
11、根據(jù)事件請(qǐng)求類(lèi)型,調(diào)用二倍均值法計(jì)算紅包事件的分配金額;
12、解鎖步驟:
13、響應(yīng)于操作執(zhí)行完畢,將數(shù)據(jù)表數(shù)據(jù)狀態(tài)放開(kāi),釋放鎖。
14、在其中一種實(shí)施方式中,所述所有的紅包信息,包括:未分配紅包信息和已分配紅包信息。
15、在其中一種實(shí)施方式中,所述根據(jù)業(yè)務(wù)時(shí)長(zhǎng)以及業(yè)務(wù)完成情況進(jìn)行自適應(yīng)解鎖,包括:
16、響應(yīng)于業(yè)務(wù)時(shí)間長(zhǎng),鎖自動(dòng)續(xù)期;
17、響應(yīng)于加鎖的業(yè)務(wù)運(yùn)行完成,不進(jìn)行當(dāng)前鎖的續(xù)期;
18、響應(yīng)于未手動(dòng)解鎖,鎖在三十秒后自動(dòng)刪除。
19、在其中一種實(shí)施方式中,所述根據(jù)業(yè)務(wù)時(shí)長(zhǎng)以及業(yè)務(wù)完成情況進(jìn)行自適應(yīng)解鎖,還包括:
20、響應(yīng)于多請(qǐng)求,對(duì)第一個(gè)請(qǐng)求自動(dòng)上鎖三十秒,對(duì)除所述第一個(gè)請(qǐng)求外的請(qǐng)求進(jìn)入阻塞等待;
21、響應(yīng)于加鎖的業(yè)務(wù)運(yùn)行完成,調(diào)用lock.unlock()解鎖;
22、響應(yīng)于業(yè)務(wù)過(guò)程出現(xiàn)異常或者宕機(jī),鎖在三十秒后自動(dòng)刪除。
23、在其中一種實(shí)施方式中,所述根據(jù)事件請(qǐng)求類(lèi)型,調(diào)用二倍均值法計(jì)算紅包事件的分配金額,包括:
24、響應(yīng)于所述事件請(qǐng)求類(lèi)型為拼手氣紅包請(qǐng)求,根據(jù)當(dāng)前剩余金額生成隨機(jī)數(shù);從redis獲取紅包信息,校驗(yàn)紅包剩余數(shù)量;
25、若紅包剩余數(shù)量等于零,則把剩余金額全部賦給最后一個(gè)紅包;
26、若紅包剩余數(shù)量非零,則根據(jù)所述二倍均值法計(jì)算當(dāng)前紅包分配金額。
27、在其中一種實(shí)施方式中,所述二倍均值法的計(jì)算公式為:
28、紅包事件每次搶到的金額=隨機(jī)區(qū)間[p,m/n×2-p];
29、其中,m為剩余紅包金額,n為剩余人數(shù),p為每人獲取到的最小額度。
30、在其中一種實(shí)施方式中,所述高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,還包括:
31、響應(yīng)于加鎖、校驗(yàn)剩余金額或執(zhí)行獲取紅包金額過(guò)程中出現(xiàn)異常,進(jìn)行相應(yīng)的異常處理和數(shù)據(jù)回滾操作。
32、另一方面,本發(fā)明還提供一種高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行系統(tǒng),包括:
33、初始化模塊,用于:初始化庫(kù)存數(shù)據(jù),將所有的紅包信息緩存至redis中;
34、加鎖模塊,用于:將redis作為分布式調(diào)度中心,對(duì)請(qǐng)求進(jìn)行自動(dòng)上鎖;根據(jù)業(yè)務(wù)時(shí)長(zhǎng)以及業(yè)務(wù)完成情況進(jìn)行自適應(yīng)解鎖;
35、校驗(yàn)?zāi)K,用于:對(duì)紅包金額數(shù)量及剩余金額進(jìn)行校驗(yàn),并將得到的紅包信息緩存至redis中;
36、金額分類(lèi)模塊,用于:根據(jù)事件請(qǐng)求類(lèi)型,調(diào)用二倍均值法計(jì)算紅包事件的分配金額;
37、解鎖模塊,用于:響應(yīng)于操作執(zhí)行完畢,將數(shù)據(jù)表數(shù)據(jù)狀態(tài)放開(kāi),釋放鎖。
38、另一方面,本發(fā)明還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)所述高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法的步驟。
39、另一方面,本發(fā)明還提供一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,所述處理器,所述通信接口,所述存儲(chǔ)器通過(guò)所述通信總線完成相互間的通信;其中:
40、所述存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
41、所述處理器,用于通過(guò)運(yùn)行所述存儲(chǔ)器上所存放的程序來(lái)執(zhí)行所述高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法的步驟。
42、本發(fā)明技術(shù)方案的有益效果是:
43、1.本發(fā)明所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,可以實(shí)現(xiàn)直觀快速實(shí)現(xiàn)隨機(jī)分配紅包金額的功能,實(shí)現(xiàn)了隨機(jī)搶紅包的方案,降低開(kāi)發(fā)成本,并且適用于其他高并發(fā)下海量數(shù)據(jù)處理的專(zhuān)業(yè)應(yīng)用,彌補(bǔ)了現(xiàn)有技術(shù)的缺陷,具有較高的應(yīng)用價(jià)值。
44、2.本發(fā)明所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行系統(tǒng),可以通過(guò)系統(tǒng)模塊的相互配合,進(jìn)而實(shí)現(xiàn)本發(fā)明所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法。
45、3.本發(fā)明所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可以實(shí)現(xiàn)引導(dǎo)系統(tǒng)模塊進(jìn)行配合,進(jìn)而實(shí)現(xiàn)本發(fā)明所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,且本發(fā)明所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)還有效提高所述高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法的可操作性。
46、4.本發(fā)明所述的計(jì)算機(jī)設(shè)備,可以實(shí)現(xiàn)存儲(chǔ)并執(zhí)行所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),進(jìn)而實(shí)現(xiàn)本發(fā)明所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法。
1.一種高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于:
3.根據(jù)權(quán)利要求1所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于:
4.根據(jù)權(quán)利要求3所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于:
5.根據(jù)權(quán)利要求4所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于:
6.根據(jù)權(quán)利要求5所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于:
7.根據(jù)權(quán)利要求1所述的高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法,其特征在于:
8.一種高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行系統(tǒng),其特征在于,包括:
9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1~7中任一項(xiàng)所述高并發(fā)業(yè)務(wù)場(chǎng)景的事件執(zhí)行方法的步驟。
10.一種計(jì)算機(jī)設(shè)備,其特征在于,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,所述處理器,所述通信接口,所述存儲(chǔ)器通過(guò)所述通信總線完成相互間的通信;其中: