掌桥专利:专业的专利平台
掌桥专利
首页

一种抽奖信息处理方法、装置、服务器和可读存储介质

文献发布时间:2023-06-19 11:35:49


一种抽奖信息处理方法、装置、服务器和可读存储介质

技术领域

本发明属于计算机技术领域,具体涉及一种抽奖信息处理方法、装置、服务器和可读存储介质。

背景技术

传统的抽奖活动一般通过抽奖人员手动抽取,随着网络技术的发展,抽奖活动开始网络化和自动化。现有的抽奖系统中,抽奖活动的展示界面都会有一个抽奖后台配置端,用于配置抽奖活动的基本信息、抽奖规则配置信息以及奖品配置信息,比如基本信息可为抽奖活动名称、起始时间、结束时间和活动描述等,该抽奖规则配置信息可以包括每日抽奖次数和中奖总次数,该奖品配置信息可以包括奖项、奖品名称、奖品数量和库存等信息。

现有的自主研发的抽奖系统由于抽奖计算慢,在数据量超大的情况下,容易造成I/O端口(输入输出端口)瓶颈,需要考虑系统容灾能力,且在服务器启动时,也需要耗费较多的加载时间,导致处理速度较慢;大量的读写请求,导致后面的请求全部排队等待,等前面一个update(更新)完成释放行锁后才能处理下一个请求,大量请求等待,占用了数据库的连接。一旦数据库同一时间片内的连接数被打满,就会导致这个时间片内其他后来的全部请求因拿不到连接而超时,导致访问此数据库的其他环节也出现问题,所以访问量就会异常飙高。

发明内容

本发明的目的是提供一种抽奖信息处理方法、装置、服务器和可读存储介质,用以解决上述现有技术中存在的至少一个问题。

为了实现上述目的,本发明采用以下技术方案:

第一方面,本发明提供一种抽奖信息处理方法,所述方法包括:

将抽奖过程中多个工作任务分别加入到不同的工作队列中;

在数据库和缓存中分别写入抽奖活动信息,从所述缓存中读取所述抽奖活动信息并进行发布;其中,所述抽奖活动信息中嵌入有抽奖活动规则;

接收终端设备发送的用户抽奖信息,调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,在判断所述用户抽奖信息符合所述抽奖活动规则时将用于处理所述用户抽奖信息的工作任务加入到对应的工作队列中,并向所述终端设备返回用户成功参与抽奖的提示信息;

对接收到的所述用户抽奖信息进行结算以获得中奖信息,并将所述中奖信息存储到所述缓存和所述数据库中;

读取所述缓存中的所述中奖信息并向所述终端设备返回中奖结果。

进一步的,所述工作队列包括参与队列、开奖队列和统计队列;

所述参与队列用于处理用户参与抽奖的工作任务;

所述开奖队列用于处理抽奖活动开奖的工作任务;

所述统计队列用于处理发放奖品的统计数据的工作任务。

进一步的,所述抽奖活动规则包括:参与人数限制、抽奖时间、开奖时间和抽奖活动标识。

进一步的,调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,包括:

调用所述缓存中的所述抽奖活动规则,基于所述抽奖活动标识判断接收到的所述用户抽奖信息对应的抽奖活动是否存在;

若存在,则判断所述用户抽奖信息的接收时间戳是否在抽奖时间范围内;

若当前抽奖活动在抽奖时间范围内,则判断所述缓存中剩余可参与抽奖人数是否为零;

若所述缓存中剩余可参与抽奖人数不为零,则将所述用户抽奖信息对应的用户加入到所述参与队列并更新所述缓存中剩余可参与抽奖人数。

进一步的,对接收到的所述用户抽奖信息进行结算以获得中奖信息,并将所述中奖信息存储到所述缓存和所述数据库中之前,还包括:

调用所述参与队列将所述用户抽奖信息对应的用户加入到参与记录中并处理任务,并将所述参与记录写入所述数据库以及更新至所述缓存中。

进一步的,所述对接收到的所述用户抽奖信息进行结算以获得中奖信息,并将所述中奖信息存储到所述缓存和所述数据库中,包括:

调用所述开奖队列从所述缓存中获取要开奖的抽奖活动,生成随机数和奖池,基于预设的中奖逻辑获取中奖信息;

将所述中奖信息写入所述数据库并更新至所述缓存中;

调用所述统计队列对奖品发放数据进行统计。

进一步的,读取所述缓存中的所述中奖信息并向所述终端设备返回中奖结果,包括:

接收用户通过所述终端设备发送的询问是否中奖的请求;

读取所述缓存中的中奖信息并判断该用户是否中奖;

将中奖结果返回至所述终端设备。

第二方面,本发明提供一种抽奖信息处理装置,所述装置包括:

工作任务分发模块,用于将抽奖过程中多个工作任务分别加入到不同的工作队列中;

抽奖活动发布模块,用于在数据库和缓存中分别写入抽奖活动信息,从所述缓存中读取所述抽奖活动信息并进行发布;其中,所述抽奖活动信息中嵌入有抽奖活动规则;

抽奖信息接收模块,用于接收终端设备发送的用户抽奖信息,调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,在判断所述用户抽奖信息符合所述抽奖活动规则时将用于处理所述用户抽奖信息的工作任务加入到对应的工作队列中,并向所述终端设备返回用户成功参与抽奖的提示信息;

中奖信息获取模块,用于对接收到的所述用户抽奖信息进行结算以获得中奖信息,并将所述中奖信息存储到所述缓存和所述数据库中;

中奖结果返回模块,用于读取所述缓存中的所述中奖信息并向所述终端设备返回中奖结果。

第三方面,本发明还提供一种服务器,包括:处理器、存储器以及存储在存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如第一方面所述的抽奖信息处理方法的步骤。

第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面所述的抽奖信息处理方法的步骤。

有益效果:

本发明中的抽奖信息处理方法通过预先将抽奖过程中较为耗时的工作任务分别加入到不同的工作队列中;然后在数据库和缓存中分别写入抽奖活动信息并进行发布;然后调用所述缓存中的所述抽奖活动规则对接收到的用户抽奖信息进行判断,在判断为是时将所述用户抽奖信息加入到对应的工作队列中;对接收到的所述用户抽奖信息进行结算以获得中奖信息,并向所述终端设备返回中奖结果。本发明能够有效避免高并发处理抽奖信息时逻辑混乱的问题;通过抽奖活动规则能够设置用户参与抽奖的数量从而进一步避免了服务器堵塞的问题;通过将抽奖活动中产生的数据信息写入缓冲中能够避免读取数据库时数据库压力过大的问题;通过将工作任务通过工作队列来处理,能够将用户参与抽奖的活动通过其他处理器来运行,进一步缓解了本服务器的数据处理压力;通过生成随机数和奖池,并基于预设的抽奖逻辑获取抽奖信息,能够保证抽奖活动的公平公正。

附图说明

图1为本发明实施例中的抽奖信息处理方法的流程示意图;

图2是本发明实施例中步骤2的交互示意图;

图3是本发明实施例中步骤3的交互示意图;

图4是本发明实施例中步骤4的交互示意图;

图5是本发明实施例中步骤5的交互示意图;

图6是本发明实施例中的抽奖信息处理装置的模块示意图。

具体实施方式

下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。

实施例一

如图1-5所示,本实施例第一方面提供的抽奖信息处理方法,可以但不限于用于产业互联网平台中评价机制的客户激励,例如电商平台中评价机制的客户激励,那么所述评价机制包括但不限于:售后即评、追加评价、退款评价、好评有礼、默认好评、双向评价以及定向提问等。那么,可以基于所述评价机制设置一定的客户激励,例如抽奖活动,以提高客户的积极性。

其中,需要说明的是,所述抽奖信息处理方法包括但不限于由处理器执行,可以但不限于包括有如下步骤1~5:

步骤1:将抽奖过程中多个工作任务分别加入到不同的工作队列中;

其中,需要说明的是,在所述步骤1中,所述多个工作任务为在抽奖活动中较为耗时的工作任务,包括但不限于处理用户参与抽奖的工作任务、处理抽奖活动开奖的工作任务以及处理发放奖品的统计数据的工作任务,当然可以理解的是,这里的工作任务还可以根据不同抽奖活动规则的设置进行分类,具体不做限定;此外,本实施例还设置有与上述工作任务相对应的工作队列,包括但不限于参与队列、开奖队列和统计队列;所述参与队列用于处理用户参与抽奖的工作任务;所述开奖队列用于处理抽奖活动开奖的工作任务;所述统计队列用于处理发放奖品的统计数据的工作任务。

步骤2:在数据库和缓存中分别写入抽奖活动信息,从所述缓存中读取所述抽奖活动信息并进行发布;其中,所述抽奖活动信息中嵌入有抽奖活动规则;

其中,需要说明的是,在步骤2中,所述数据库优选为Mysql/MongoDB存储数据库,所述缓存优选为Redis高速缓存;通过分别在数据库和缓存中分别写入抽奖活动信息,处理器可以直接从缓存中读取抽奖活动信息并进行发布,而无须从数据库中读取所述抽奖活动信息,可以有效降低数据库的数据处理压力。其中,所述抽奖活动规则包括参与人数限制、抽奖时间、开奖时间和抽奖活动标识。

步骤3:接收终端设备发送的用户抽奖信息,调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,判断所述用户抽奖信息符合所述抽奖活动规则时将用于处理所述用户抽奖信息的工作任务加入到对应的工作队列中,并向所述终端设备返回用户成功参与抽奖的提示信息;

其中,需要说明的是,在步骤3中,所述终端设备可以是用户使用的智能终端,例如智能手机、平板电脑,也可以是台式机、笔记本电脑等,具体不做限定。所述用户抽奖信息由终端设备发送,可实现终端设备和服务器的交互。示例性的,当用户点击智能终端显示界面中的登录按钮时,智能终端依据该按钮被点击后触发的登录功能逻辑,发送对应的登录信息至服务器以进行数据交互完成登录功能。

在一种可能的设计中,所述步骤3中调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,具体包括:

步骤3.1:调用所述缓存中的所述抽奖活动规则,基于所述抽奖活动标识判断接收到的所述用户抽奖信息对应的抽奖活动是否存在;

步骤3.2:若存在,则判断所述用户抽奖信息的接收时间戳是否在抽奖时间范围内;

步骤3.3:若当前抽奖活动在抽奖时间范围内,则判断所述缓存中剩余可参与抽奖人数是否为零;

步骤3.4:若所述缓存中剩余可参与抽奖人数不为零,则将所述用户抽奖信息对应的用户加入到所述参与队列并更新所述缓存中剩余可参与抽奖人数。

其中,需要说明的是,所述缓存通过Redis锁的方式处理所述剩余可参与抽奖人数的库存,当库存将为零时,不再将用户加入到参与记录中,可以有效减小数据处理的压力。

在本实施例中,用户通过终端设备发送抽奖信息以请求参与抽奖,处理器首先判断用户所发送的抽奖信息所对应的抽奖活动是否存在,若存在,则进一步判断当前的抽奖活动是否在预设的抽奖时间范围内,若不存在,则返回,当然可以理解的是,这里也可以给用户反馈当前抽奖活动不存在的提示信息;若当前抽奖活动在预设的抽奖时间范围内时,则进一步判断所述缓存中是否还有剩余的可参与抽奖的名额,若当前抽奖活动不在预设的抽奖时间范围内时,则不执行并返回,当然可以理解的是,这里也可以给用户反馈当前请求抽奖的时间不在预设的抽奖时间范围内;若所述缓存中还有剩余的可抽奖名额,则将用户加入到参与队列,并更新所述缓存中的库存人数,然后可以向用户返回成功参与抽奖的提示信息。

在一种可能的设计中,进一步的,接收终端设备发送的用户抽奖信息,调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,在判断为是时将所述用户抽奖信息加入到对应的工作队列中,并向所述终端设备返回用户成功参与抽奖的提示信息之前,还包括:

调用所述参与队列将所述用户信息对应的用户加入到参与记录中并处理任务,并将所述参与记录写入所述数据库以及更新至所述缓存中。

步骤4:对接收到的所述用户抽奖信息进行结算以获得中奖信息,并将所述中奖信息存储到所述缓存和所述数据库中;

其中,需要说明的是,在步骤4中,可通过处理器对接收到的所述用户抽奖信息进行结算以获得中奖信息;当然,若抽奖任务过重或参与人数很多的情况下,在一种可能的设计中,可以通过设置定时任务,获取需要结算的任务并且加入到相应的工作队列中,具体如下:

步骤4.1:调用所述开奖队列从所述缓存中获取要开奖的抽奖活动,生成随机数和奖池,基于预设的中奖逻辑获取中奖信息;

步骤4.2:将所述中奖信息写入所述数据库并更新至所述缓存中;

步骤4.3:调用所述统计队列对奖品发放数据进行统计。

步骤5:读取所述缓存中的所述中奖信息并向所述终端设备返回中奖结果。

在一种可能的设计中,所述步骤5可包括:

步骤5.1:接收用户通过所述终端设备发送的询问是否中奖的请求;

步骤5.2:读取所述缓存中的中奖信息并判断该用户是否中奖;

步骤5.3:将中奖结果返回至所述终端设备。

本实施例中的抽奖信息处理方法通过预先将抽奖过程中较为耗时的工作任务分别加入到不同的工作队列中;然后在数据库和缓存中分别写入抽奖活动信息并进行发布;然后调用所述缓存中的所述抽奖活动规则对接收到的用户抽奖信息进行判断,在判断为是时将所述用户抽奖信息加入到对应的工作队列中;对接收到的所述用户抽奖信息进行结算以获得中奖信息,并向所述终端设备返回中奖结果。本发明能够有效避免高并发处理抽奖信息时逻辑混乱的问题;通过抽奖活动规则能够设置用户参与抽奖的数量从而进一步避免了服务器堵塞的问题;通过将抽奖活动中产生的数据信息写入缓冲中能够避免读取数据库时数据库压力过大的问题;通过将工作任务通过工作队列来处理,能够将用户参与抽奖的活动通过其他处理器来运行,进一步缓解了本服务器的数据处理压力;通过生成随机数和奖池,并基于预设的抽奖逻辑获取抽奖信息,能够保证抽奖活动的公平公正。

实施例二

如图6所示,在实施例一的基础上,本实施例还提供一种抽奖信息处理装置,所述装置包括:

工作任务分发模块,用于将抽奖过程中较为耗时的工作任务分别加入到不同的工作队列中;

抽奖活动发布模块,用于在数据库和缓存中分别写入抽奖活动信息,从所述缓存中读取所述抽奖活动信息并进行发布;其中,所述抽奖活动信息中嵌入有抽奖活动规则;

抽奖信息接收模块,用于接收终端设备发送的用户抽奖信息,调用所述缓存中的所述抽奖活动规则对所述用户抽奖信息进行判断,在判断为是时将所述用户抽奖信息加入到对应的工作队列中,并向所述终端设备返回用户成功参与抽奖的提示信息;

中奖信息获取模块,用于对接收到的所有用户抽奖信息进行结算以获得中奖信息,并将所述中奖信息存储到所述缓存和所述数据库中;

中奖结果返回模块,用于读取所述缓存中的所述中奖信息并向所述终端设备返回中奖结果。

在一种可能的设计中,所述工作队列包括参与队列、开奖队列和统计队列;

所述参与队列用于处理用户参与抽奖的工作任务;

所述开奖队列用于处理抽奖活动开奖的工作任务;

所述统计队列用于处理发放奖品的统计数据的工作任务。

在一种可能的设计中,所述抽奖活动规则包括:参与人数限制、抽奖时间和开奖时间。

在一种可能的设计中,所述抽奖信息接收模块包括:

第一判断单元,用于调用所述缓存中的所述抽奖活动规则,基于所述抽奖活动规则判断接收到的所述用户抽奖信息对应的抽奖活动是否存在;

第二判断单元,用于若存在,则判断当前抽奖活动是否在抽奖时间范围内;

第三判断单元,用于若当前抽奖活动在抽奖时间范围内,则判断所述缓存中剩余可参与抽奖人数是否为零;

用户加入单元,用于若所述缓存中剩余可参与抽奖人数为零,则不执行并返回,否则将该用户加入到所述参与队列并更新所述缓存中剩余可参与抽奖人数。

在一种可能的设计中,所述装置还包括:

参与记录写入模块,用于调用所述参与队列将该用户加入到参与记录中并处理任务,并将所述参与记录写入所述数据库以及更新至所述缓存中。

在一种可能的设计中,所述中奖信息获取模块,包括:

中奖信息获取单元,用于调用所述开奖队列从所述缓存中获取要开奖的抽奖活动,生成随机数和奖池,基于预设的中奖逻辑获取中奖信息;

中奖信息写入单元,用于将所述中奖信息写入所述数据库并更新至所述缓存中;

奖品统计单元,用于调用所述统计队列对奖品发放数据进行统计。

在一种可能的设计中,中奖结果返回模块,包括:

请求接收单元,用于接收用户通过所述终端设备发送的询问是否中奖的请求;

第四判断单元,用于读取所述缓存中的中奖信息并判断该用户是否中奖;

结果返回单元,用于将中奖结果返回至所述终端设备。

本实施例第二方面提供的前述装置的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的抽奖信息处理方法,于此不再赘述。

实施例三

在实施例二的基础上,本实施例还提供一种服务器,包括:处理器、存储器以及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如实施例一所述的抽奖信息处理方法的步骤,于此不再赘述。

本实施例第三方面提供的前述服务器的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的抽奖信息处理方法,于此不再赘述。

实施例四

在实施例三的基础上,本实施例还提供一种可读存储介质,所述可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如实施例一所述的抽奖信息处理方法的步骤。其中,所述可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。其中,所述可读存储介质的工作过程、工作细节和技术效果,可以参见实施例一任意一种所述的抽奖信息处理方法,于此不再赘述。

本实施例第四方面提供的前述可读存储介质工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任意一种可能设计所述的抽奖信息处理方法,于此不再赘述。

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种抽奖信息处理方法、装置、服务器和可读存储介质
  • 一种会话信息处理方法、装置、服务器和可读存储介质
技术分类

06120112984522