CN114996031A - 抽奖方法及相关装置 - Google Patents
抽奖方法及相关装置 Download PDFInfo
- Publication number
- CN114996031A CN114996031A CN202210926444.2A CN202210926444A CN114996031A CN 114996031 A CN114996031 A CN 114996031A CN 202210926444 A CN202210926444 A CN 202210926444A CN 114996031 A CN114996031 A CN 114996031A
- Authority
- CN
- China
- Prior art keywords
- lottery
- request
- key
- user
- prize
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C15/00—Generating random numbers; Lottery apparatus
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Time Recorders, Dirve Recorders, Access Control (AREA)
Abstract
本发明公开了一种抽奖方法及相关装置,可以通过获得第一用户针对第一奖品发起的第一抽奖请求;根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。由此可以看出,本发明可以对第一用户发起的其中一个抽奖请求进行加锁,然后再响应加锁的抽奖请求,执行相应的抽奖逻辑,从而避免了同一个用户短时间内重复参与抽奖,提高了用户体验。
Description
技术领域
本发明涉及数据传输领域,特别涉及一种抽奖方法及相关装置。
背景技术
目前的抽奖方案在高并发场景下,无法对抽奖请求进行控制,导致存在同一个用户重复参与抽奖的情况,用户体验较差。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的抽奖方法及相关装置。
第一方面,一种抽奖方法,包括:
获得第一用户针对第一奖品发起的第一抽奖请求;
根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;
若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;
在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。
结合第一方面,在某些可选的实施方式中,在所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙之前,所述方法还包括:
获得所述第一用户的历史数据,并校验所述历史数据;
若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内未针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则执行所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙。
结合上一个实施方式,在某些可选的实施方式中,在所述获得所述第一用户的历史数据,并校验所述历史数据之后,所述方法还包括:
若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内已针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则在所述本次抽奖周期内禁止自身及各所述其他服务器获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
结合第一方面,在某些可选的实施方式中,在所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙之后,所述方法还包括:
若未获得所述钥匙,则在所述本次抽奖周期内禁止自身获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
结合第一方面,在某些可选的实施方式中,所述若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙,包括:
若成功获得所述钥匙,则基于redis缓存的分布式锁机制对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙。
结合第一方面,在某些可选的实施方式中,所述在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑,包括:
在对所述第一抽奖请求进行加锁后,则比较所述第一奖品当前剩余的奖品数量和当前正在响应的抽奖请求的请求数量,其中,所述当前正在响应的抽奖请求为不同用户针对所述第一奖品发起的并在当前进入所述抽奖逻辑的抽奖请求;
若所述奖品数量不小于所述请求数量,则针对所述第一抽奖请求,进行相应的抽奖过程;
若所述奖品数量小于所述请求数量,则针对当前正在响应的各所述抽奖请求中的至少一个抽奖请求,进行所述抽奖过程。
结合上一个实施方式,在某些可选的实施方式中,所述若所述奖品数量小于所述请求数量,则针对当前正在响应的各所述抽奖请求中的至少一个抽奖请求,进行所述抽奖过程,包括:
若所述奖品数量小于所述请求数量,则将当前正在响应的各所述抽奖请求按照响应时刻,从早到晚依次进行排序;
从响应时刻最早的抽奖请求开始,进行所述抽奖过程;
若针对所述响应时刻最早的抽奖请求的抽奖结果为所述第一奖品,则在将所述第一奖品当前剩余的奖品数量减少1,否则维持所述第一奖品当前剩余的奖品数量不变;
确定所述第一奖品当前剩余的奖品数量是否为0;
若所述第一奖品当前剩余的奖品数量不为0,则响应下一个抽奖请求,进行所述抽奖过程,如此依次反复执行,直到所述第一奖品当前剩余的奖品数量为0为止或者直到针对当前正在响应的各所述抽奖请求均进行所述抽奖过程为止。
第二方面,一种抽奖装置,包括:第一请求获得单元、钥匙请求单元、加锁单元和抽奖单元;
所述第一请求获得单元,用于获得第一用户针对第一奖品发起的第一抽奖请求;
所述钥匙请求单元,用于根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;
所述加锁单元,用于若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;
所述抽奖单元,用于在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。
第三方面,一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的抽奖方法。
第四方面,一种电子设备,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述任一项所述的抽奖方法。
借由上述技术方案,本发明提供的抽奖方法及相关装置,可以通过获得第一用户针对第一奖品发起的第一抽奖请求;根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。由此可以看出,本发明可以对第一用户发起的其中一个抽奖请求进行加锁,然后再响应加锁的抽奖请求,执行相应的抽奖逻辑,从而避免了同一个用户短时间内重复参与抽奖,提高了用户体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明提供的一种抽奖方法的流程示意图;
图2示出了本发明提供的一种抽奖方法的系统示意图;
图3示出了本发明提供的一种抽奖方法的加锁示意图;
图4示出了本发明提供的一种抽奖装置的结构示意图;
图5示出了本发明提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本发明提供了一种抽奖方法,包括:S100、S200、S300和S400;
S100、获得第一用户针对第一奖品发起的第一抽奖请求;
可选的,线上进行抽奖是目前比较火热的营销方式,而目前的抽奖方案中,常常出现同一个用户在短时间多次参与抽奖,奖品被“刷”的情况。因此,本发明可以以分布式缓存为基础,动态配置抽奖过程,从而避免了同一个用户短时间内多次参与抽奖的情况。
可选的,本发明的总体结构如图2所示,由客户端、多个抽奖服务器、奖品配置中心、产品配置后台和消息队列构成。客户端可以理解为真实的用户的设备,例如pc浏览器;抽奖服务器接收并响应客户端发送过来的抽奖请求,并且抽奖服务器可以校验历史数据和执行抽奖逻辑,最终输出用户的抽奖结果;奖品配置中心可以基于分布式缓存redis实现,以便于抽奖服务器使用分布式锁;产品配置后台是产品填写配置的后台,数据以JSON结构输出到奖品配置中心;消息队列是在两台设备(计算机)间传送的数据单位,本发明使用Rocketmq实现消息队列。
可选的,如图2所示,奖品配置中心可以在约定好数据结构的前提下,动态获取产品配置后台输出的数据,并通过消息队列配置到抽奖服务器,进而不需要重启服务器就可以感知并读取到奖品配置的变动。
S200、根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;
可选的,第一用户可能在短期内针对第一奖品发起多个抽奖请求,多个抽奖请求可以划分到不同的抽奖服务器,其中,一个抽奖服务器对应一个抽奖请求。为了避免多个抽奖服务器均响应第一用户发送的抽奖请求,本发明的多个抽奖服务器均可以请求第一用户的钥匙,而且最多只会有一个抽奖服务器成功获得该钥匙。只有获得了该钥匙的抽奖服务器才能继续往下执行抽奖逻辑,从而解决了同一个用户在短时间多次参与抽奖的问题。
可选的,本发明的各抽奖服务器在接收到抽奖请求后,可以根据用户标识请求获取相应的钥匙,但在S200中仅是请求获取钥匙,不一定能成功获得该钥匙。
可选的,为了提高本发明的可靠性,在抽奖服务器接收到抽奖请求后并在请求获取钥匙之前,可以先校验发送相应抽奖请求的用户信息,从而确定该用户是否具备抽奖的条件。
例如,结合图1所示的实施方式,在某些可选的实施方式中,在所述S200之前,所述方法还包括:S110和S120;
S110、获得所述第一用户的历史数据,并校验所述历史数据;
可选的,本发明所说的历史数据可以理解为第一用户的历史抽奖数据,可以是第一用户参与各抽奖活动(包括第一奖品的抽奖活动)的历史抽奖数据,也可以仅是第一用户参与第一奖品的抽奖活动的历史抽奖数据,本发明对此不作限制。
可选的,本发明对于检验历史数据的过程不做限制,一般而言,校验历史数据的目的是确定第一用户是否具备继续参与抽奖活动的条件。
S120、若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内未针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则执行所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙。
可选的,若第一用户在本次抽奖周期内未参与过相应的抽奖活动,或者,第一用户在本次抽奖周期内已经参与过相应的抽奖活动但并未抽中过第一奖品,则说明第一用户在本次抽奖周期内仍然具备参与相应抽奖活动的条件。因此,本发明的各抽奖服务器可以请求获得相应的钥匙,并在后续成功获得钥匙的抽奖服务器上执行相应的抽奖逻辑。
可选的,结合上一个实施方式,在某些可选的实施方式中,在所述S110之后,所述方法还包括:S130;
S130、若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内已针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则在所述本次抽奖周期内禁止自身及各所述其他服务器获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
可选的,若第一用户在本次抽奖周期内已经参与过相应的抽奖活动,或者,第一用户在本次抽奖周期内已经参与过相应的抽奖活动并抽中过第一奖品,则说明第一用户在本次抽奖周期内不具备参与相应抽奖活动的条件。本发明可以在本次抽奖周期内禁止第一用户继续参与第一奖品的抽奖活动,即,本发明可以在本次抽奖周期内禁止所有抽奖服务器响应第一用户发起的抽奖请求(可以仅是针对第一奖品的抽奖请求,也可以是针对任意奖品的抽奖请求),本发明对此不做限制。
可选的,第一用户在本次抽奖周期内不具备参与相应抽奖活动的条件,但不代表其他用户也不具备参与相应抽奖活动的条件。因此,本发明的抽奖服务器可以在本次抽奖周期内丢弃或者拒收第一用户发起的抽奖请求,但可以获得其他用户发起的抽奖请求,并同理执行本发明的方案。
可选的,如前所述,在对第一用户的历史数据进行校验后,若第一用户具备参与相应抽奖活动的条件,则需要从众多接收到第一用户发起的抽奖请求的抽奖服务器中选择其中一个抽奖服务器执行抽奖逻辑。即,在本次抽奖周期内,只有一个抽奖服务器可以获得钥匙,并且只有获得钥匙的抽奖服务器可以执行抽奖逻辑,未获得钥匙的抽奖服务器不能执行抽奖逻辑。因此,对于未获得钥匙的抽奖服务器而言,在本次抽奖周期内可以丢弃或者拒绝接收来自第一用户发起的抽奖请求,但可以获得其他用户发起的抽奖请求。
即,结合图1所示的实施方式,在某些可选的实施方式中,在所述S200之后,所述方法还包括:S210;
S210、若未获得所述钥匙,则在所述本次抽奖周期内禁止自身获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
可选的,每一个未获得钥匙的抽奖服务器均在本次抽奖周期内禁止自身获得所述第一用户发起的抽奖请求,从而实现了控制第一用户在本次抽奖周期内仅能参与一次相应的抽奖活动或者仅能抽得一次第一奖品,本发明对此不做限制。
S300、若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;
可选的,对于成功获得钥匙的具体一个抽奖服务器而言,该抽奖服务器可以响应相应的抽奖请求,执行相应的抽奖逻辑,本发明对此不做限制。
可选的,若需要限制第一用户在本次抽奖周期内只能参与一次抽奖活动,则可以在对本次的抽奖请求进行加锁后,禁止所有抽奖服务器获得第一用户的钥匙。因为,在对抽奖请求进行加锁之后,接下来就进入了抽奖逻辑,并且只有获得钥匙的抽奖服务器才能执行抽奖逻辑,钥匙在执行一次加锁后自动失效,下次若需要加锁则需要重新获得。
可选的,结合图1所示的实施方式,在某些可选的实施方式中,所述若S300,包括:S310;
S310、若成功获得所述钥匙,则基于redis缓存的分布式锁机制对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙。
可选的,本发明可以结合redis缓存的分布式锁机制,该机制可以限制在本次抽奖周期针对同一个用户只分配一次钥匙给一个服务器,从而实现了对第一抽奖请求进行加锁的过程。
可选的,不同抽奖服务器竞争对抽奖请求进行加锁的过程如图3所示。针对同一个用户在本次抽奖周期发起的抽奖请求,当其中一个抽奖服务器获得钥匙后,可以成功对其获得抽奖请求进行加锁,而其他抽奖服务器由于无法获得钥匙,将导致加锁失败,本发明对此不做限制。
S400、在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。
可选的,本发明对于抽奖逻辑的具体过程不做限制。例如,结合图1所示的实施方式,在某些可选的实施方式中,所述S400,包括:S410、S420和S430;
S410、在对所述第一抽奖请求进行加锁后,则比较所述第一奖品当前剩余的奖品数量和当前正在响应的抽奖请求的请求数量,其中,所述当前正在响应的抽奖请求为不同用户针对所述第一奖品发起的并在当前进入所述抽奖逻辑的抽奖请求;
可选的,一般而言,奖品的数量是有限的,随着越来越多的用户抽中奖品,剩余可用于抽奖的奖品的数量也越来越少。为了避免出现剩余奖品的数量为负数的情况(例如本来只剩3个奖品了,突然5个用户同时抽中奖品,则剩余奖品的数量变为-2),本发明可以实时监控剩余奖品的数量和当前正在进入抽奖逻辑的抽奖请求的数量(若一个服务器同一时间刻只能响应一个抽奖请求执行一遍抽奖逻辑,则这里所说的数量可以对应为当前正在执行抽奖逻辑的抽奖服务器的数量),因为进入抽奖逻辑了就有可能抽中第一奖品。
S420、若所述奖品数量不小于所述请求数量,则针对所述第一抽奖请求,进行相应的抽奖过程;
可选的,若奖品数量不小于请求数量,则说明即便当前所有的抽奖请求对应均抽中第一奖品,奖品数量也不会变为负数,则获得钥匙的抽奖服务器可以针对第一用户发起的第一抽奖请求执行相应的抽奖过程。
S430、若所述奖品数量小于所述请求数量,则针对当前正在响应的各所述抽奖请求中的至少一个抽奖请求,进行所述抽奖过程。
可选的,若奖品数量小于请求数量,则说明若当前所有的抽奖请求对应均抽中第一奖品,或者大部分均抽中第一奖品,则奖品数量可能会变为负数,则获得钥匙的抽奖服务器可以针对各个用户发起的抽奖请求选择性地执行相应的抽奖过程。当然,具体需要根据每执行一次抽奖逻辑的抽奖结果而定,所以本发明可以针对当前正在响应的各所述抽奖请求依次分别执行相应的抽奖逻辑,在上一个抽奖请求的抽奖结果出来后再针对下一个抽奖请求执行相应的抽奖逻辑。例如,若每次执行抽奖逻辑均抽中第一奖品,则针对一部分抽奖请求执行相应的抽奖逻辑后,第一奖品的奖品数量就变为0了,这时可以结束第一奖品在本次抽奖周期内的抽奖活动;若针对所述当前正在响应的各所述抽奖请求均执行相应的抽奖逻辑后,第一奖品的奖品数量仍大于0,则可以继续针对第一奖品的抽奖活动执行本发明的方案,直到第一奖品的奖品数量变为0为止。
例如,结合上一个实施方式,在某些可选的实施方式中,所述S430,包括:S431、S432、S433、S434和S435;
S431、若所述奖品数量小于所述请求数量,则将当前正在响应的各所述抽奖请求按照响应时刻,从早到晚依次进行排序;
S432、从响应时刻最早的抽奖请求开始,进行所述抽奖过程;
S433、若针对所述响应时刻最早的抽奖请求的抽奖结果为所述第一奖品,则在将所述第一奖品当前剩余的奖品数量减少1,否则维持所述第一奖品当前剩余的奖品数量不变;
S434、确定所述第一奖品当前剩余的奖品数量是否为0;
S435、若所述第一奖品当前剩余的奖品数量不为0,则响应下一个抽奖请求,进行所述抽奖过程,如此依次反复执行,直到所述第一奖品当前剩余的奖品数量为0为止或者直到针对当前正在响应的各所述抽奖请求均进行所述抽奖过程为止。
可选的,本发明也可以设置一定的容错机制,即若第一奖品的奖品数量变为负数,则针对部分抽奖第一奖品的用户可以给与相应的安慰奖或者提示奖品已抽完的提示,本发明对此不做限制。
如图4所示,本发明提供了一种抽奖装置,包括:第一请求获得单元100、钥匙请求单元200、加锁单元300和抽奖单元400;
所述第一请求获得单元100,用于获得第一用户针对第一奖品发起的第一抽奖请求;
所述钥匙请求单元200,用于根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;
所述加锁单元300,用于若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;
所述抽奖单元400,用于在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。
结合图4所示的实施方式,在某些可选的实施方式中,所述装置还包括:数据校验单元和第一校验结果单元;
所述数据校验单元,用于在所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙之前,获得所述第一用户的历史数据,并校验所述历史数据;
所述第一校验结果单元,用于若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内未针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则执行所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙。
结合上一个实施方式,在某些可选的实施方式中,所述装置还包括:第二校验结果单元;
所述第二校验结果单元,用于在所述获得所述第一用户的历史数据,并校验所述历史数据之后,若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内已针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则在所述本次抽奖周期内禁止自身及各所述其他服务器获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
结合图4所示的实施方式,在某些可选的实施方式中,所述装置还包括:禁止单元;
所述禁止单元,用于在所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙之后,若未获得所述钥匙,则在所述本次抽奖周期内禁止自身获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
结合图4所示的实施方式,在某些可选的实施方式中,所述加锁单元300,包括:加锁子单元;
加锁子单元,用于若成功获得所述钥匙,则基于redis缓存的分布式锁机制对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙。
结合图4所示的实施方式,在某些可选的实施方式中,所述抽奖单元400,包括:数量比较子单元、第一进行子单元和第二进行子单元;
所述数量比较子单元,用于在对所述第一抽奖请求进行加锁后,则比较所述第一奖品当前剩余的奖品数量和当前正在响应的抽奖请求的请求数量,其中,所述当前正在响应的抽奖请求为不同用户针对所述第一奖品发起的并在当前进入所述抽奖逻辑的抽奖请求;
所述第一进行子单元,用于若所述奖品数量不小于所述请求数量,则针对所述第一抽奖请求,进行相应的抽奖过程;
所述第二进行子单元,用于若所述奖品数量小于所述请求数量,则针对当前正在响应的各所述抽奖请求中的至少一个抽奖请求,进行所述抽奖过程。
结合上一个实施方式,在某些可选的实施方式中,所述第二进行子单元,包括:排序子单元、最早执行子单元、数量处理子单元、数量确定子单元和反复执行子单元;
所述排序子单元,用于若所述奖品数量小于所述请求数量,则将当前正在响应的各所述抽奖请求按照响应时刻,从早到晚依次进行排序;
所述最早执行子单元,用于从响应时刻最早的抽奖请求开始,进行所述抽奖过程;
所述数量处理子单元,用于若针对所述响应时刻最早的抽奖请求的抽奖结果为所述第一奖品,则在将所述第一奖品当前剩余的奖品数量减少1,否则维持所述第一奖品当前剩余的奖品数量不变;
所述数量确定子单元,用于确定所述第一奖品当前剩余的奖品数量是否为0;
所述反复执行子单元,用于若所述第一奖品当前剩余的奖品数量不为0,则响应下一个抽奖请求,进行所述抽奖过程,如此依次反复执行,直到所述第一奖品当前剩余的奖品数量为0为止或者直到针对当前正在响应的各所述抽奖请求均进行所述抽奖过程为止。
本发明提供了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的抽奖方法。
如图5所示,本发明提供了一种电子设备70,所述电子设备70包括至少一个处理器701、以及与所述处理器701连接的至少一个存储器702、总线703;其中,所述处理器701、所述存储器702通过所述总线703完成相互间的通信;所述处理器701用于调用所述存储器702中的程序指令,以执行上述任一项所述的抽奖方法。
在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种抽奖方法,其特征在于,包括:
获得第一用户针对第一奖品发起的第一抽奖请求;
根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;
若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;
在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙之前,所述方法还包括:
获得所述第一用户的历史数据,并校验所述历史数据;
若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内未针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则执行所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙。
3.根据权利要求2所述的方法,其特征在于,在所述获得所述第一用户的历史数据,并校验所述历史数据之后,所述方法还包括:
若所述历史数据的校验结果为自身或者任一所述其他服务器在所述本次抽奖周期内已针对所述第一用户发起的抽奖请求执行过所述抽奖逻辑,则在所述本次抽奖周期内禁止自身及各所述其他服务器获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
4.根据权利要求1所述的方法,其特征在于,在所述根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙之后,所述方法还包括:
若未获得所述钥匙,则在所述本次抽奖周期内禁止自身获得所述第一用户发起的抽奖请求,并获得其他用户发起抽奖请求。
5.根据权利要求1所述的方法,其特征在于,所述若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙,包括:
若成功获得所述钥匙,则基于redis缓存的分布式锁机制对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙。
6.根据权利要求1所述的方法,其特征在于,所述在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑,包括:
在对所述第一抽奖请求进行加锁后,则比较所述第一奖品当前剩余的奖品数量和当前正在响应的抽奖请求的请求数量,其中,所述当前正在响应的抽奖请求为不同用户针对所述第一奖品发起的并在当前进入所述抽奖逻辑的抽奖请求;
若所述奖品数量不小于所述请求数量,则针对所述第一抽奖请求,进行相应的抽奖过程;
若所述奖品数量小于所述请求数量,则针对当前正在响应的各所述抽奖请求中的至少一个抽奖请求,进行所述抽奖过程。
7.根据权利要求6所述的方法,其特征在于,所述若所述奖品数量小于所述请求数量,则针对当前正在响应的各所述抽奖请求中的至少一个抽奖请求,进行所述抽奖过程,包括:
若所述奖品数量小于所述请求数量,则将当前正在响应的各所述抽奖请求按照响应时刻,从早到晚依次进行排序;
从响应时刻最早的抽奖请求开始,进行所述抽奖过程;
若针对所述响应时刻最早的抽奖请求的抽奖结果为所述第一奖品,则在将所述第一奖品当前剩余的奖品数量减少1,否则维持所述第一奖品当前剩余的奖品数量不变;
确定所述第一奖品当前剩余的奖品数量是否为0;
若所述第一奖品当前剩余的奖品数量不为0,则响应下一个抽奖请求,进行所述抽奖过程,如此依次反复执行,直到所述第一奖品当前剩余的奖品数量为0为止或者直到针对当前正在响应的各所述抽奖请求均进行所述抽奖过程为止。
8.一种抽奖装置,其特征在于,包括:第一请求获得单元、钥匙请求单元、加锁单元和抽奖单元;
所述第一请求获得单元,用于获得第一用户针对第一奖品发起的第一抽奖请求;
所述钥匙请求单元,用于根据所述第一抽奖请求,请求获得与所述第一用户唯一对应的钥匙;
所述加锁单元,用于若成功获得所述钥匙,则使用所述钥匙对所述第一抽奖请求进行加锁,并在本次抽奖周期内禁止自身及其他服务器获得所述钥匙;
所述抽奖单元,用于在对所述第一抽奖请求进行加锁后,执行相应的抽奖逻辑。
9.一种计算机可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的抽奖方法。
10.一种电子设备,其特征在于,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至7中任一项所述的抽奖方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210926444.2A CN114996031B (zh) | 2022-08-03 | 2022-08-03 | 抽奖方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210926444.2A CN114996031B (zh) | 2022-08-03 | 2022-08-03 | 抽奖方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114996031A true CN114996031A (zh) | 2022-09-02 |
CN114996031B CN114996031B (zh) | 2022-12-27 |
Family
ID=83022795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210926444.2A Active CN114996031B (zh) | 2022-08-03 | 2022-08-03 | 抽奖方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114996031B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106028165A (zh) * | 2016-06-17 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 一种用于在直播网站移动端中实现抽奖的方法和系统 |
CN107038788A (zh) * | 2017-04-06 | 2017-08-11 | 福建新大陆软件工程有限公司 | 一种序列匹配抽奖控制方法及系统 |
CN108629611A (zh) * | 2017-03-24 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 用于分配资源的方法和装置 |
CN110309670A (zh) * | 2019-06-18 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 一种抽奖后台服务方法、系统及设备 |
CN111210270A (zh) * | 2020-01-02 | 2020-05-29 | 广州虎牙科技有限公司 | 业务处理方法、装置、服务集群、计算机设备和存储介质 |
CN111258768A (zh) * | 2018-11-30 | 2020-06-09 | 中国移动通信集团湖南有限公司 | 一种优惠抽奖活动的并发处理方法和装置 |
CN111538588A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 分布式数据处理方法及相关装置 |
-
2022
- 2022-08-03 CN CN202210926444.2A patent/CN114996031B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106028165A (zh) * | 2016-06-17 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 一种用于在直播网站移动端中实现抽奖的方法和系统 |
CN108629611A (zh) * | 2017-03-24 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 用于分配资源的方法和装置 |
CN107038788A (zh) * | 2017-04-06 | 2017-08-11 | 福建新大陆软件工程有限公司 | 一种序列匹配抽奖控制方法及系统 |
CN111258768A (zh) * | 2018-11-30 | 2020-06-09 | 中国移动通信集团湖南有限公司 | 一种优惠抽奖活动的并发处理方法和装置 |
CN110309670A (zh) * | 2019-06-18 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 一种抽奖后台服务方法、系统及设备 |
CN111210270A (zh) * | 2020-01-02 | 2020-05-29 | 广州虎牙科技有限公司 | 业务处理方法、装置、服务集群、计算机设备和存储介质 |
CN111538588A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 分布式数据处理方法及相关装置 |
Non-Patent Citations (1)
Title |
---|
张雨晗等: "微博平台用户抽奖行为研究", 《新媒体研究》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114996031B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11281658B2 (en) | Trustless stateless incentivized remote node network using minimal verification clients | |
CN109993004B (zh) | 基于信用机制的区块链自治方法及系统 | |
CN109173270B (zh) | 一种游戏服务系统和实现方法 | |
BR112014020823B1 (pt) | Método, servidor e meio legível para alocar recursos de jogo | |
CN104639546B (zh) | 多生物特征综合认证的方法、装置和系统 | |
CN116152034A (zh) | 一种竞猜游戏的处理系统、装置、终端及方法 | |
CN106713388A (zh) | 一种突发业务处理方法及装置 | |
CN104967603B (zh) | 应用账号安全验证方法及装置 | |
CN114996031B (zh) | 抽奖方法及相关装置 | |
KR20160099681A (ko) | 게임용 데이터 처리 시스템 및 방법 | |
CN111111216B (zh) | 一种匹配方法、装置、服务器及存储介质 | |
JP5974198B1 (ja) | 情報処理装置、ゲームプログラム、及び、情報処理方法 | |
CN115794478B (zh) | 系统配置方法、装置、电子设备及存储介质 | |
US20050005050A1 (en) | Memory bus assignment for functional devices in an audio/video signal processing system | |
CN112487487A (zh) | 区块链节点成员的权限管理方法、装置、设备及存储介质 | |
CN114513313B (zh) | 基于令牌的鉴权方法、装置、电子设备及可读存储介质 | |
CN113379539A (zh) | 基于区块链的委托权益证明共识方法及装置 | |
Ramanathan et al. | Randomized leader election | |
CN116346728A (zh) | 低代码平台限流方法及装置 | |
US10356163B2 (en) | Method and communication system for unlocking user data | |
CN111695746A (zh) | 一种排队数据处理方法以及排队数据处理方法系统 | |
CN112738196B (zh) | 区块链代表节点选取方法、装置、计算机设备和存储介质 | |
JP6513462B2 (ja) | ゲームプログラム、及び、情報処理装置 | |
CN114443233A (zh) | 事务数据处理方法、装置、系统、电子设备和存储介质 | |
CN115766298B (zh) | 一种令牌续期的确定方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |