日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

一種處理紅包的方法及系統(tǒng)與流程

文檔序號:11155385閱讀:752來源:國知局
一種處理紅包的方法及系統(tǒng)與制造工藝

本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種處理紅包的方法及系統(tǒng)。



背景技術(shù):

隨著科學(xué)技術(shù)的不斷發(fā)展,通信技術(shù)也得到了飛速的發(fā)展,電子產(chǎn)品的種類也越來越多,人們也享受到了科技發(fā)展帶來的各種便利。

互聯(lián)網(wǎng)應(yīng)用中處處可見類似搶紅包的應(yīng)用,尤其是在彈幕式視頻直播行業(yè),各種由贈送高價值禮物而觸發(fā)的虛擬貨幣的紅包應(yīng)用已經(jīng)非常普遍。

而在搶紅包應(yīng)用場景中,由于用戶的搶紅包行為存在一定的不可預(yù)測性,在面對高并發(fā)的搶紅包請求場景下會形成搶紅包的高峰期,在搶紅包高峰期時,搶紅包請求難以快速響應(yīng)。



技術(shù)實現(xiàn)要素:

本發(fā)明了提供了一種處理紅包的方法及系統(tǒng),以解決搶紅包請求難以快速響應(yīng)的技術(shù)問題。

為解決上述技術(shù)問題,本發(fā)明提供了一種處理紅包的方法及系統(tǒng),所述方法應(yīng)用于處理紅包的系統(tǒng),所述系統(tǒng)包括客戶端、紅包服務(wù)器、數(shù)據(jù)庫組,所述數(shù)據(jù)庫組中包含有主數(shù)據(jù)庫和從數(shù)據(jù)庫集合,所述從數(shù)據(jù)庫集合中包含有用于查詢紅包對應(yīng)的貨幣價值的多個查詢數(shù)據(jù)庫;所述方法包括:

所述紅包服務(wù)器接收所述客戶端發(fā)送的搶紅包請求,判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID;

若所述搶紅包請求中攜帶有所述紅包對應(yīng)的身份標(biāo)識ID,所述紅包服務(wù)器隨機從所述多個查詢數(shù)據(jù)庫中的確定出第一查詢數(shù)據(jù)庫,并利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值;

若有所述紅包對應(yīng)的貨幣價值,所述紅包服務(wù)器從所述主數(shù)據(jù)庫中獲取所述紅包對應(yīng)的貨幣價值返回給所述客戶端。

優(yōu)選的,所述判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID之后,所述方法還包括:

若所述搶紅包請求中沒有攜帶所述紅包對應(yīng)的身份標(biāo)識ID,生成貨幣價值為0的紅包返回給所述客戶端。

優(yōu)選的,所述利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值之后,所述方法還包括:

若沒有所述紅包對應(yīng)的貨幣價值,生成貨幣價值為0的紅包返回給所述客戶端。

優(yōu)選的,所述客戶端發(fā)送搶紅包請求之前,所述方法還包括:

所述客戶端發(fā)送用于創(chuàng)建紅包的請求數(shù)據(jù)包;

所述紅包服務(wù)器接收到所述請求數(shù)據(jù)包;

所述紅包服務(wù)器判斷所述請求數(shù)據(jù)包中是否包含有貨幣總價值Vt和紅包分配份數(shù)Cn,其中Cn為正整數(shù)且Cn≥1;

若所述請求數(shù)據(jù)包中包含有所述貨幣總價值Vt和所述紅包分配份數(shù)Cn,所述紅包服務(wù)器將所述貨幣總值Vt隨機分配成Cn份紅包,每份紅包對應(yīng)有各自的貨幣價值;

所述紅包服務(wù)器為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID。

優(yōu)選的,從數(shù)據(jù)庫集合中還包括有一個用于永久存儲所述Cn份紅包和各自的貨幣價值的存儲數(shù)據(jù)庫。

優(yōu)選的,所述紅包服務(wù)器為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID之后,所述方法還包括:

所述紅包服務(wù)器在多個數(shù)據(jù)庫組中確定出包含有所述主數(shù)據(jù)庫和所述從數(shù)據(jù)庫集合的數(shù)據(jù)庫組,其中,在多個數(shù)據(jù)庫組中,每個數(shù)據(jù)庫組包含有主數(shù)據(jù)庫和從數(shù)據(jù)庫集合;

所述紅包服務(wù)器利用所述主數(shù)據(jù)庫存儲所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值。

優(yōu)選的,所述紅包服務(wù)器利用所述主數(shù)據(jù)庫存儲所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值之后,所述方法還包括:

所述紅包服務(wù)器將所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值同步存儲到所述從數(shù)據(jù)庫集合中。

優(yōu)選的,所述紅包服務(wù)器將所述貨幣總值Vt隨機分配成Cn份紅包,包括:

以Cn份紅包為標(biāo)準(zhǔn)對所述貨幣總值Vt進行分配;或者

以貨幣價值為標(biāo)準(zhǔn)對所述貨幣總值Vt進行分配,紅包的份數(shù)Cn隨機。

本發(fā)明的另一個方面,公開了一種處理紅包的系統(tǒng),所述系統(tǒng)包括:客戶端、紅包服務(wù)器、數(shù)據(jù)庫組,所述數(shù)據(jù)庫組中包含主數(shù)據(jù)庫和從數(shù)據(jù)庫集合,所述從數(shù)據(jù)庫集合中包含有用于查詢紅包對應(yīng)的貨幣價值的多個查詢數(shù)據(jù)庫;

所述客戶端,用于發(fā)送搶紅包請求;

所述紅包服務(wù)器,用于接收到由所述客戶端發(fā)送的搶紅包請求,然后判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID;

所述紅包服務(wù)器,用于若所述搶紅包請求中攜帶有所述紅包對應(yīng)的身份標(biāo)識ID,隨機從所述多個查詢數(shù)據(jù)庫中的確定出第一查詢數(shù)據(jù)庫,并利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值;

所述紅包服務(wù)器,用于若有所述紅包對應(yīng)的貨幣價值,從所述主數(shù)據(jù)庫中獲取所述紅包對應(yīng)的貨幣價值返回給所述客戶端。

優(yōu)選的,所述客戶端,用于發(fā)送用于創(chuàng)建紅包的請求數(shù)據(jù)包;

所述紅包服務(wù)器,用于接收到所述請求數(shù)據(jù)包;判斷所述請求數(shù)據(jù)包中是否包含有貨幣總價值Vt和紅包分配份數(shù)Cn,其中Cn為正整數(shù)且Cn≥1;若所述請求數(shù)據(jù)包中包含有所述貨幣總價值Vt和所述紅包分配份數(shù)Cn,將所述貨幣總值Vt隨機分配成Cn份紅包,每份紅包對應(yīng)有各自的貨幣價值;為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID。

通過本發(fā)明的一個或者多個技術(shù)方案,本發(fā)明具有以下有益效果或者優(yōu)點:

本發(fā)明公開了一種處理紅包的方法及系統(tǒng),當(dāng)所述客戶端發(fā)送搶紅包請求之后,所述紅包服務(wù)器判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID;若是則隨機從所述多個查詢數(shù)據(jù)庫中的確定出第一查詢數(shù)據(jù)庫,并利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值;若有所述紅包對應(yīng)的貨幣價值,所述紅包服務(wù)器從所述主數(shù)據(jù)庫中獲取所述紅包對應(yīng)的貨幣價值返回給所述客戶端。本發(fā)明將數(shù)據(jù)庫組分為主數(shù)據(jù)庫和從數(shù)據(jù)庫集合,采用通過從數(shù)據(jù)庫集合中的查詢數(shù)據(jù)庫來查紅包中是否有剩余紅包,再確定是否要去主數(shù)據(jù)庫中完成相應(yīng)操作,降低了主數(shù)據(jù)庫的壓力,直接提升了搶紅包的響應(yīng)效率。

附圖說明

圖1為本發(fā)明實施例中的整體框架圖;

圖2為本發(fā)明實施例中Redis Group的組成圖;

圖3為本發(fā)明實施例中本發(fā)明的創(chuàng)建紅包的流程圖;

圖4為本發(fā)明實施例中發(fā)紅包的流程圖。

具體實施方式

為了使本申請所屬技術(shù)領(lǐng)域中的技術(shù)人員更清楚地理解本申請,下面結(jié)合附圖,通過具體實施例對本申請技術(shù)方案作詳細描述。

圖1為本發(fā)明的整體框架圖:

1)Client:客戶端,發(fā)送搶寶箱請求。舉例來說,本發(fā)明具有客戶端1、客戶端2、客戶端3……客戶端n。每個客戶端都可以發(fā)送搶寶箱請求。

2)GateServer Cluster:網(wǎng)關(guān)服務(wù)集群,負責(zé)client的網(wǎng)絡(luò)接入,隔離、保護公網(wǎng)和內(nèi)網(wǎng)的數(shù)據(jù)交換。

3)RedpacketServer Cluster:紅包服務(wù)器的集群,負責(zé)處理創(chuàng)建紅包、搶紅包的網(wǎng)絡(luò)請求。

4)Redis Group:數(shù)據(jù)庫組,負責(zé)紅包數(shù)據(jù)持久化和搶紅包的結(jié)果處理,根據(jù)紅包身份標(biāo)識ID進行分片,每個紅包都有一個唯一的身份標(biāo)識ID。舉例來說,本發(fā)明具有m個數(shù)據(jù)庫組,分別為:數(shù)據(jù)庫組1、數(shù)據(jù)庫組2、數(shù)據(jù)庫組3……數(shù)據(jù)庫組m。

圖2為Redis Group的組成圖:

在圖2中,一個Redis Group(數(shù)據(jù)庫組)由一個Master Redis主數(shù)據(jù)庫和一個從數(shù)據(jù)庫集合組成,所述從數(shù)據(jù)庫集合中包含有用于存儲紅包數(shù)據(jù)的一個存儲數(shù)據(jù)庫和用于查詢紅包對應(yīng)的貨幣價值的多個查詢數(shù)據(jù)庫。

具體來說,在從數(shù)據(jù)庫集合中包含有若干(大于等于2)個Slave Redis從數(shù)據(jù)庫。其中,這若干個從數(shù)據(jù)庫中,可隨機確定一個從數(shù)據(jù)庫作為存儲數(shù)據(jù)庫,其余的從數(shù)據(jù)庫作為查詢數(shù)據(jù)庫。例如圖2中,x個從數(shù)據(jù)庫中的第一從數(shù)據(jù)庫作為存儲數(shù)據(jù)庫,而其余的第2從數(shù)據(jù)庫至第x個從數(shù)據(jù)庫作為查詢數(shù)據(jù)庫。

5)Master Redis:主數(shù)據(jù)庫,負責(zé)創(chuàng)建紅包、搶紅包數(shù)據(jù)的寫入操作。主數(shù)據(jù)庫和從數(shù)據(jù)庫集合存在同步機制,Mater Redis的數(shù)據(jù)發(fā)生變化,會自動同步到所有的Slave Redis從數(shù)據(jù)庫。

6)Slave Redis 1:從數(shù)據(jù)庫中的第一從數(shù)據(jù)庫,也作為存儲數(shù)據(jù)庫,只負責(zé)紅包數(shù)據(jù)的持久化。持久化的含義即是:第一從數(shù)據(jù)庫會永久存儲創(chuàng)建的所有紅包、所有紅包各自的身份標(biāo)識ID、所有紅包各自的貨幣價值等等。這些數(shù)據(jù)不會隨著服務(wù)器的重啟、故障等等原因而丟失。

7)Slave Redis 2至Slave Redis x:從數(shù)據(jù)庫中的第2從數(shù)據(jù)庫至第x個從數(shù)據(jù)庫,作為查詢數(shù)據(jù)庫。這些從數(shù)據(jù)庫只負責(zé)處理紅包數(shù)據(jù)的查詢操作,Redis在當(dāng)下比較主流的服務(wù)器上的QPS(Query Per Second,每秒查詢率)可高達5~8W。

綜上,本發(fā)明公開的一種處理紅包的系統(tǒng),包括:客戶端集群、紅包服務(wù)器集群、網(wǎng)關(guān)服務(wù)集群、多個數(shù)據(jù)庫組。

客戶端和紅包服務(wù)器的信息交互時通過網(wǎng)關(guān)服務(wù)集群進行轉(zhuǎn)發(fā)的。

每個數(shù)據(jù)庫組中包含一個主數(shù)據(jù)庫和一個從數(shù)據(jù)庫集合,所述從數(shù)據(jù)庫集合中包含有用于查詢紅包對應(yīng)的貨幣價值的多個查詢數(shù)據(jù)庫。

下面先介紹創(chuàng)建紅包的具體實施過程,當(dāng)然,本發(fā)明是以一個客戶端為例進行介紹,其他客戶端創(chuàng)建紅包的過程類似,故而不再贅述。

所述客戶端,用于發(fā)送用于創(chuàng)建紅包的請求數(shù)據(jù)包;

所述紅包服務(wù)器,用于接收到所述請求數(shù)據(jù)包;判斷所述請求數(shù)據(jù)包中是否包含有貨幣總價值Vt和紅包分配份數(shù)Cn,其中Cn為正整數(shù)且Cn≥1;若所述請求數(shù)據(jù)包中包含有所述貨幣總價值Vt和所述紅包分配份數(shù)Cn,將所述貨幣總值Vt隨機分配成Cn份紅包,每份紅包對應(yīng)有各自的貨幣價值;為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID。

另外,所述紅包服務(wù)器,還用于為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID之后,在多個數(shù)據(jù)庫組中確定出包含有所述主數(shù)據(jù)庫和所述從數(shù)據(jù)庫集合的數(shù)據(jù)庫組,其中,在多個數(shù)據(jù)庫組中,每個數(shù)據(jù)庫組包含有一主數(shù)據(jù)庫和一從數(shù)據(jù)庫集合;利用所述主數(shù)據(jù)庫存儲所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值。

作為一種可選的實施例,紅包服務(wù)器,還用于將所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值同步存儲到所述從數(shù)據(jù)庫集合中。

下面介紹發(fā)紅包的實施原理。

所述客戶端,用于發(fā)送搶紅包請求;

所述紅包服務(wù)器,用于接收到由所述客戶端發(fā)送的搶紅包請求,然后判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID;若所述搶紅包請求中攜帶有所述紅包對應(yīng)的身份標(biāo)識ID,隨機從所述多個查詢數(shù)據(jù)庫中的確定出第一查詢數(shù)據(jù)庫,并利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值;若有所述紅包對應(yīng)的貨幣價值,從所述主數(shù)據(jù)庫中獲取所述紅包對應(yīng)的貨幣價值返回給所述客戶端。

基于上述架構(gòu),圖3為本發(fā)明的創(chuàng)建紅包的流程圖:

步驟31,客戶端發(fā)送用于創(chuàng)建紅包的請求數(shù)據(jù)包。

具體來說,在客戶端上,安裝有對應(yīng)的應(yīng)用程序Application。該應(yīng)用程序可以執(zhí)行創(chuàng)建紅包操作,也可以執(zhí)行搶紅包操作。

在創(chuàng)建紅包時,客戶端上的應(yīng)用程序發(fā)送創(chuàng)建紅包的請求數(shù)據(jù)包CreateData給紅包服務(wù)器Redpacket Server。該請求數(shù)據(jù)包CreateData中至少包含有紅包的貨幣總價值Vt、紅包分配份數(shù)Cn。

紅包服務(wù)器Redpacket Server,是Redpacket Server Cluster的組成單元,每個紅包服務(wù)器Redpacket Server擁有唯一的16位服務(wù)ID,本發(fā)明將其簡稱為RSID。

請求數(shù)據(jù)包CreateData發(fā)送到哪一個紅包服務(wù)器Redpacket Server由隨機函數(shù)Random(time(NULL))得出的結(jié)果Rm對紅包服務(wù)器Redpacket Server總數(shù)量Rn取模確定的。例如:Rm%Rn為0,則請求數(shù)據(jù)包CreateData的落點就是第1個紅包服務(wù)器Redpacket Server上,依次類推。

步驟32,所述紅包服務(wù)器接收到所述請求數(shù)據(jù)包。

步驟33,所述紅包服務(wù)器判斷所述請求數(shù)據(jù)包中是否包含有貨幣總價值Vt和紅包分配份數(shù)Cn。

其中,Cn為正整數(shù)且Cn≥1。

具體來說,紅包服務(wù)器Redpacket Server檢查請求數(shù)據(jù)包CreateData中是否攜帶必要參數(shù)。如請求數(shù)據(jù)包CreateData中是否攜帶了貨幣總價值Vt,紅包分配份數(shù)Cn,若都不存在,或者只有一個參數(shù)存在,則直接返回創(chuàng)建紅包失敗。

若貨幣總價值Vt,紅包分配份數(shù)Cn都存在,則進入步驟34。

步驟34,若所述請求數(shù)據(jù)包中包含有所述貨幣總價值Vt和所述紅包分配份數(shù)Cn,所述紅包服務(wù)器將所述貨幣總值Vt隨機分配成Cn份紅包,每份紅包對應(yīng)有各自的貨幣價值。

具體來說,紅包服務(wù)器Redpacket Server將貨幣總值Vt隨機分配(分配規(guī)則可根據(jù)不同的業(yè)務(wù)需求自定義)成Cn份紅包,每個紅包包含貨幣價值Vn。

在分配的實施過程中,有兩種分配方式:

第一種分配方式:以Cn份紅包為標(biāo)準(zhǔn),對所述貨幣總值Vt進行分配,每份紅包中的貨幣價值隨機。舉例來說,Cn=5,貨幣總值=100塊,那么將這100塊分成5個紅包,每個紅包的貨幣價值可以隨機,例如50塊、20塊、10塊、10塊、10塊。當(dāng)然也可以平均分配,每個紅包20塊。

第二種分配方式,以貨幣價值為標(biāo)準(zhǔn)對所述貨幣總值Vt進行分配,紅包的份數(shù)Cn隨機。舉例來說,貨幣總值=100塊,每個紅包的貨幣價值為1塊或者2塊,那么按照貨幣價值進行分配,就可以分配到50個紅包-100個紅包。

步驟35,所述紅包服務(wù)器為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID。

具體來說,每個紅包有唯一的64位身份標(biāo)識ID,簡稱為RPID。RPID的高32位為當(dāng)前時間戳,中間的16位為RSID,低16位為0~65536循環(huán)的自增長ID。

紅包服務(wù)器為所述Cn份紅包創(chuàng)建各自的身份標(biāo)識ID之后,紅包服務(wù)器在多個數(shù)據(jù)庫組中確定出包含有所述主數(shù)據(jù)庫和所述從數(shù)據(jù)庫集合的數(shù)據(jù)庫組。其中,在多個數(shù)據(jù)庫組中,每個數(shù)據(jù)庫組包含有一主數(shù)據(jù)庫和一從數(shù)據(jù)庫集合。

故而,在步驟35之后會執(zhí)行步驟36:所述紅包服務(wù)器利用所述主數(shù)據(jù)庫存儲所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值。舉例來說,選在一個Redis Group數(shù)據(jù)庫時,對RPID進行BKDR hash得到結(jié)果Hn,Hn對Redis Group總量Gn取模確認落點在哪個Redis Group上。Hn%Gn為0,則紅包數(shù)據(jù)就落地到第1個Redis Group上,依次類推。

在Redis Group內(nèi),Master Redis用List數(shù)據(jù)結(jié)構(gòu)存儲Cn份紅包,Key值為RPID。

完成此流程后,Redis主、從同步機制會自動完成數(shù)據(jù)同步工作。即步驟37:所述紅包服務(wù)器將所述Cn份紅包、所述Cn份紅包各自身份標(biāo)識ID、所述Cn份紅包各自的貨幣價值同步存儲到所述從數(shù)據(jù)庫集合中。

返回紅包創(chuàng)建成功的結(jié)果。

圖4為本發(fā)明一種處理紅包的方法的流程圖。

步驟41,所述客戶端發(fā)送搶紅包請求。

具體來說,客戶端Client發(fā)送搶紅包請求GrabData。用戶A在客戶端發(fā)出的紅包,都攜帶有對應(yīng)的身份標(biāo)識ID。故而用戶B在搶紅包時,客戶端會基于用戶B的操作生成搶紅包請求,該請求會攜帶該紅包對應(yīng)的身份標(biāo)識ID,然后將搶紅包請求發(fā)送給網(wǎng)關(guān)服務(wù)Gate Server。網(wǎng)關(guān)服務(wù)Gate Server是Gate Server Cluster的組成單元。

Gate Server將搶紅包請求GrabData轉(zhuǎn)發(fā)到內(nèi)網(wǎng)的紅包服務(wù)器Redpacket Server。

步驟42,所述紅包服務(wù)器接收到由所述客戶端發(fā)送的搶紅包請求,然后判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID。

若所述搶紅包請求中沒有攜帶所述紅包對應(yīng)的身份標(biāo)識ID,生成貨幣價值為0的紅包返回給所述客戶端。

具體來說,Redpacket Server通過檢查搶紅包請求GrabData的數(shù)據(jù)是否有效(例如,是否包含合法的RPID),如果合法則進入下一流程,否則返回未搶到紅包獎勵的結(jié)果(偽造一條Vn為0的紅包數(shù)據(jù)返回)。

步驟43,若所述搶紅包請求中攜帶有所述紅包對應(yīng)的身份標(biāo)識ID,所述紅包服務(wù)器隨機從所述多個查詢數(shù)據(jù)庫中的確定出第一查詢數(shù)據(jù)庫,并利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值。

第一查詢數(shù)據(jù)庫是多個查詢數(shù)據(jù)庫中任意確定的一查詢數(shù)據(jù)庫,其作用是基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值。若沒有所述紅包對應(yīng)的貨幣價值,生成貨幣價值為0的紅包返回給所述客戶端,表示未搶到紅包獎勵。

具體來說,在某一個Slave Redis中查詢id為RPID的紅包中是否任然存在紅包,如果存在,則進入下一流程,否則返回未搶到紅包的結(jié)果(偽造一條Vn為0的紅包數(shù)據(jù)返回)。

步驟44,若有所述紅包對應(yīng)的貨幣價值,所述紅包服務(wù)器從所述主數(shù)據(jù)庫中獲取所述紅包對應(yīng)的貨幣價值返回給所述客戶端。

具體來說,在Master Redis中找到Key為RPID的List,并pop出一條紅包數(shù)據(jù),如果List為空或者不存在,則偽造一條Vn為0的紅包數(shù)據(jù)返回。到此處就可返回成功搶紅包的結(jié)果。

將紅包中Vn大于0的數(shù)據(jù)和UID拋入MQ(MessageQueue消息隊列)異步完成貨幣交易。

本方案的關(guān)鍵點在于Redis Group。

Redis Group根據(jù)RPID分片,可橫線擴展Redis Group用于均衡不同的紅包帶來的請求壓力。每個Redis Group中的Slave Redis也能橫向擴展,用于均衡同一個紅包帶來的請求壓力。具體每一個紅包List落在哪一個Redis Group上,是根據(jù)RPID做BKDR hash確定的,如此保證了離散型。

Redis Group采用Slave Redis 1來持久化紅包數(shù)據(jù),可避免Master Redis和其他Slave Redis因持久化數(shù)據(jù)而降低QPS。

采用通過Slave Redis查紅包中是否有剩余紅包,再確定是否要去Master Redis中完成相應(yīng)操作。雖然搶紅包的client數(shù)量可能在百萬級,但是紅包真正能分配出去的份額遠在這個數(shù)量級之下(千或者萬級別)。通過從Slave Redis中查詢紅包剩余數(shù)量就能過濾掉90%以上Mater Redis非必要響應(yīng)的GrabData。降低了Mater Redis的壓力,就直接提升了搶寶箱的響應(yīng)效率。

通過本發(fā)明的一個或者多個實施例,本發(fā)明具有以下有益效果或者優(yōu)點:

本發(fā)明公開了一種處理紅包的方法及系統(tǒng),當(dāng)所述客戶端發(fā)送搶紅包請求之后,所述紅包服務(wù)器判斷所述搶紅包請求中是否攜帶所述紅包對應(yīng)的身份標(biāo)識ID;若是則隨機從所述多個查詢數(shù)據(jù)庫中的確定出第一查詢數(shù)據(jù)庫,并利用所述第一查詢數(shù)據(jù)庫基于所述紅包對應(yīng)的身份標(biāo)識ID查找是否有所述紅包對應(yīng)的貨幣價值;若有所述紅包對應(yīng)的貨幣價值,所述紅包服務(wù)器從所述主數(shù)據(jù)庫中獲取所述紅包對應(yīng)的貨幣價值返回給所述客戶端。本發(fā)明將數(shù)據(jù)庫組分為主數(shù)據(jù)庫和從數(shù)據(jù)庫集合,采用通過從數(shù)據(jù)庫集合中的查詢數(shù)據(jù)庫來查紅包中是否有剩余紅包,再確定是否要去主數(shù)據(jù)庫中完成相應(yīng)操作,降低了主數(shù)據(jù)庫的壓力,直接提升了搶紅包的響應(yīng)效率。

盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的普通技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。

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