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

选取目标用户的方法、装置和计算机设备

文献发布时间:2024-04-18 19:58:53


选取目标用户的方法、装置和计算机设备

技术领域

本申请涉及互联网技术领域,特别是涉及一种选取目标用户的方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

随着互联网技术的发展,越来越多的实体通过互联网为用户提供服务。为了增加用户粘性,实体通过互联网组织活动,从用户中选取目标用户,为目标用户提供额外服务。活动设置的额外服务往往能够吸引用户积极参加活动。因此,选取效率以及选取的公平性,都是需要考虑的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高选取效率以及公平的选取目标用户的方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种选取目标用户的方法。所述方法包括:

获取用户名单以及第一选取概率;

确定所述用户名单的分组,创建各分组对应的处理进程,所述分组至少为两组;

各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单;

从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;所述第一数量不大于所述目标数量,且大于所述目标数量和处理进程数量的比值;

将所述第二目标用户名单存储至数据库,所述数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

在其中一个实施例中,步骤A包括:所述第一选取概率包括至少两个目标级别的第一选取概率;

各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单,包括:

各处理进程分别根据至少两个目标级别的第一选取概率,从所述用户名单的对应分组中选取各目标级别的第三数量的用户,得到第一目标用户名单,各处理进程选取的全部目标级别的第三数量为所述第一数量。

在另一个实施例中,各处理进程分别根据至少两个目标级别的第一选取概率,从所述用户名单的对应分组中选取各目标级别的用户的方式,包括:

各处理进程根据所述各目标级别的第一选取概率,分别确定各目标级别的数值范围;

分别对所述用户名单的对应分组中的各用户生成第一随机数,若所述用户的第一随机数在所述目标级别的数值范围内,则预选取所述用户为所述目标级别的用户。

在另一个实施例中,所述分别对所述用户名单的对应分组中的各用户生成第一随机数,若所述用户的第一随机数在所述目标级别的数值范围内,则预选取所述用户为所述目标级别的用户,包括:

获取各用户的第二选取概率,以及所述第二选取概率的数值范围;

分别对所述用户名单的对应分组中的各用户生成第二随机数,若所述第二随机数在所述第二选取概率的数值范围内,则对所述用户生成在指定数值范围的第一随机数;所述指定数值范围为所述全部目标级别的第一选取概率的数值范围;各所述目标级别的第一选取概率的数值范围是连续的;

若所述用户的第一随机数在所述目标级别的数值范围内,则预选取所述用户为所述目标级别的用户。

在另一个实施例中,所述确定所述用户名单的分组,创建各分组对应的进程,包括:

确定所述用户名单的分组,所述分组至少为两组;

根据处理器的处理能力在各处理器为各所述分组创建处理进程,各处理器创建的进程数量与所述处理能力匹配。

在另一个实施例中,根据处理器的处理能力在各处理器为各所述分组创建处理进程,各处理器创建的进程数量与所述处理能力匹配,包括:

根据各处理器的处理能力确定各处理器可创建的处理进程的数量,得到全部处理器可创建的处理进程的数量;

若分组数量大于所述全部处理器可创建的处理进程的数量,则在各处理器分别创建与处理能力匹配的相应数量的处理进程;

在各处理器的所述处理进程从对应分组分别选取第一数量的用户后,在各所述处理器中根据剩余待创建进程数量和处理能力,随机选择处理器创建对应的处理进程。

在另一个实施例中,所述方法还包括:

接收用户的线上选取参与请求;

响应所述线上选取参与请求,调用数据库,查询所述用户是否在预选取得到的第二目标用户名单中;

若所述用户在所述第二目标用户名单,则反馈被选取的结果。

在另一个实施例中,所述方法还包括:

若一个选取周期内,未选取完成目标数量,则根据下一周期目标数量和该周期剩余的目标数量,增加所述第一选取概率。

第二方面,本申请还提供了一种选取目标用户的装置。所述装置包括:

获取模块,用于获取用户名单以及第一选取概率;

处理进程处理模块,用于确定所述用户名单的分组,创建各分组对应的处理进程,所述分组至少为两组;

第一选取模块,用于各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单;

第二选取模块,用于从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;所述第一数量不大于所述目标数量,且大于所述目标数量和处理进程数量的比值;

存储模块,用于将所述第二目标用户名单存储至数据库,所述数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取用户名单以及第一选取概率;

确定所述用户名单的分组,创建各分组对应的处理进程,所述分组至少为两组;

各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单;

从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;所述第一数量不大于所述目标数量,且大于所述目标数量和处理进程数量的比值;

将所述第二目标用户名单存储至数据库,所述数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取用户名单以及第一选取概率;

确定所述用户名单的分组,创建各分组对应的处理进程,所述分组至少为两组;

各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单;

从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;所述第一数量不大于所述目标数量,且大于所述目标数量和处理进程数量的比值;

将所述第二目标用户名单存储至数据库,所述数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

获取用户名单以及第一选取概率;

确定所述用户名单的分组,创建各分组对应的处理进程,所述分组至少为两组;

各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单;

从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;所述第一数量不大于所述目标数量,且大于所述目标数量和处理进程数量的比值;

将所述第二目标用户名单存储至数据库,所述数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

上述选取目标用户的方法、装置、计算机设备、存储介质和计算机程序产品,通过采用预选取的方式,提前从用户名单中根据第一选取概率选取目标用户,选取时,对用户名单进行分组,创建各分组对应的处理进程,多个处理进程并行选取的方式符合线上选取时多个同时参与选取的实际情况,能够提高离线选取的公平性的同时,提高选取效率,而进一步地对于第一次选取超出目标数量的情况,通过按分组分别随机从第一次选取的第一目标用户名单中选取第二数量的目标用户,全部分组的第二数量为目标数量,进一步保障的选取公平性和均衡性。

附图说明

图1为一个实施例中选取目标用户的方法的应用环境图;

图2为一个实施例中选取目标用户的方法的流程示意图;

图3为一个实施例中选取目标用户的方法的流程示意图;

图4为另一个实施例中预选取阶段的流程示意图;

图5为一个实施例中选取目标用户的装置的结构框图;

图6为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的选取目标用户的方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。服务器获取用户名单以及第一选取概率;确定用户名单的分组,创建各分组对应的处理进程,分组至少为两组;各处理进程根据第一选取概率从用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单;从第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;第一数量不大于目标数量,且大于目标数量和处理进程数量的比值;将第二目标用户名单存储至数据库,数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。其中,终端102包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种选取目标用户的方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:

步骤202,获取用户名单以及第一选取概率。

其中,用户名单可以由活动组织方预先确定,用户名单中包括了多个用户标识。活动组织方采用本申请的选取目标用户的方法,从用户名单中选择目标用户。第一选取概率可以由活动组织方根据选取数量预先确定。活动组织方可以设置活动参与条件,将符合活动参与条件的用户添加至用户名单。如活动组织方为银行,可以将银行客户中存款大于一定数额的用户添加至用户名单。

其中,可以基于选取需求设置不同目标级别,每个目标级别设置不同的第一选取概率。如,第一选取概率随着目标级别的增加而降低。具体可以为,第一级目标级别的第一选取概率最低,对应的,选取的目标用户数量也越少。最后一级目标级别的第一选取概率最高,对应的,选取的目标用户数量也最多。

在实际业务处理过程中,选取了不同目标级别的目标用户后,可以为目标用户分配该目标级别所对应的物品。因此,不同目标级别的第一选取概率,可以与目标级别所对应的待分配物品的数量有关。

步骤204,确定用户名单的分组,创建各分组对应的处理进程,分组至少为两组。

具体地,处理进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,处理进程既是基本的分配单元,也是基本的执行单元。

具体地,传统的选取方式,是以单处理进程轮询用户名单中的各用户,依次根据选取概率判断是否选取该用户为目标用户。这种选取目标用户的方式效率低,比如有20W用户,就需要选取20万次。

本实施例中,先将用户名单分为多组,创建各分组对应的处理进程,从而处理进程数量与用户名单的分组数量对应,每个处理进程可以对对应分组的用户标识进行选取。

其中,每个分组的用户标识的数量可以相同,也可以不同,可以结合实际需求确定,此处不做限定。

其中,可以基于实际需要,设置分组规则,根据分组规则对用户名单进行分组,得到用户名单的分组。具体来说,分组规则通常与用户特征相关,可以基于用户特征对用户标识进行分组。如,分组规则可以按年龄阶段分组,可以按地域分组,还可以按年龄分组。

根据分组规则,对用户名单中的用户标识分为至少两组,对应的,创建各组对应的处理进程。

步骤206,各处理进程根据第一选取概率从用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单。

具体地,各处理进程并行从用户名单对应的分组中分别进行选取操作。通过将用户名单进行分组,各处理进程并行对各分组分别进行选取,相较于单线程选取的方式,能够提高选取效率。例如,将用户名单分为五组,则对应的创建五个处理进程,各处理进程分别从用户名单对应的分组中根据第一选取概率选取第一数量的用户。

相比单线程选取的方式,多线程选取的方式能够提高选取效率。比如,启用了五个处理进程,相当于之前是一条单处理进程轮询10万用户单个选取,修改为5个处理进程同时选取,所以提升了5倍效率。

其中,第一选取概率可以由活动组织方根据选取数量预先确定。针对不同的目标级别,可以设置不同的第一选取概率。其中,第一选取概率可以根据目标选取的目标用户的数量与用户名单中全部用户的数量的比值确定。

各处理进程根据第一选取概率从用户名单的对应分组中分别选取第一数量的用户。各处理进程选取的用户的第一数量可以相同,也可以不同。如,各处理进程选取的用户的第一数量可以为目标数量,此时,各处理进程分别选取目标数量的用户。

第一数量可以根据每个分组的用户的数量来确定。分组中用户的数量越多,第一数量可越大。比如,用户名单的第一个分组的用户数量大于第二个分组的用户数量,可以设第一处理进程对应的第一数量大于第二处理进程对应的数量。

采用多处理进程并行选取的方式,在提高选取效率的同时,还能够提升选取的公平性。具体地,采用单线程选取的方式,由于是对用户名单中的用户标识进行轮询,依次根据第一选取概率判断是否选取该用户为目标用户。对于在后面被轮询的用户来说,可能存在公平性的问题。因为,可能在轮询前面的用户时,就已经选取完了目标数量的目标用户。比如有20万用户,目标选取数量为10,在轮询到2万用户时,可能就已经选取了10个目标用户,那么对于后续用户来讲,比起在线选取有失公平。因为,在线选取时,大量用户一并涌进来,具有同等的机会被选取为目标用户。

为解决预选取的公平性的问题,本实施例中,通过先对用户名单进行分组,启动各分组的处理进程,各处理进程对分组的用户标识进行选取,处理进程数量越多,公平性越接近在线选取。

步骤208,从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;第一数量不大于目标数量,且大于目标数量和处理进程数量的比值。

具体地,目标数量可以根据待分配的物品确定,也可以根据用户名单中用户的数量和第一选取概率所确定。目标数量和处理进程数量的比值,即目标数量可以分配给各处理进程的平均数,通过限制第一数量不大于目标数量,且大于目标数量和处理进程数量的比值数,使得各处理进程选取时,能够较好地模拟线上选取。一种较好的实施方式中,第一数量等于目标数量。即每个处理进程根据第一选取概率从用户名单对应的分组中分别选取目标数量的用户。

由于各处理进程选取的用户的第一数量不大于目标数量,且大于目标数量和处理进程数量的比值,因此,各处理进程选取的全部的用户,大于预定的选取的目标数量。例如,有五个线程,目标数量为100个,各线程的平均选取数量为20个,那么第一数量不大于100个,且大于20个。五个线程选取的全部用户的数量大于目标数量,从而导致多选的情况。

一方面,各处理进程根据第一选取概率选取,和单线程选取的第一选取概率相同,使每个用户的第一选取概率相同,能够确定选取的公平性,而另一方面,各处理进程选取的全部的用户,大于目标数量可以分配给各处理进程的平均数,这样会导致多选的情况。

为解决第一目标用户名单多选的问题,本实施例中,为确保选取的公平,针对各组选取得到的第一目标用户名单,再从中进行第二次选取,从第一目标用户名单中随机选取目标数量的目标用户,得到第二目标用户名单。由于第二次选取是采用随机的方式,不受第一次选取分组的影响,进而保证的选取的公平性。

例如,用户名单采用年龄阶段进行划分,20-30岁为第一组,30-40岁为第二组,40-50岁为第三组,50-60组为第四组,60-70组这第五组。若采用第一选取概率进行第二次选取,则可能存在在前三个分组中选取了目标数量的目标用户,剩下的两个分组还未轮询到就选取结束的情况,而导致对剩下的两个分组的用户选取不公平。为避免这种情况,本实施例中,在第二次选取时,采用随机选取的方式,从第一目标用户名单中随机选取目标数量的目标用户。

具体地,为了考虑选取的均衡,在从第一目标用户名单中选取目标数量的目标用户时,可以按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为目标数量。

例如,20-30岁为第一组,30-40岁为第二组,40-50岁为第三组,50-60组为第四组,60-70组这第五组。第一次选取时,根据第一选取概率从分组分别选取50个用户,得到第一目标用户名单。其中,目标数量为50个,则第二次选取时,从各组已选取的50个用户中,分别选取10个目标用户,得到第二目标用户名单。这样可以使得在第二次选取的目标用户在各组均衡选取得到。

也就是说,第一次被选取,并不是真正的被选取,只是预标记为选取,再对预标记的用户采用从各组均衡随机选取的方式解决多选的问题,进一步提升选取的公平性和均衡性。

步骤210,将第二目标用户名单存储至数据库,数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

第二目标用户名单是真正被选取的用户,将第二目标用户名单持久化存储到数据库。数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。也就是说,在用户触发线上选取参与操作时,只需要查询预先选取的第二目标用户名单,可以确定用户是否被选取。从而在真正的线上选取时,不需要进行复杂的选取操作,通过查询第二目标用户名单,即可确定被选取的用户,解决了线上选取高并发高负载带来的资源消耗问题。

上述的选取目标用户的方式,通过采用预选取的方式,提前从用户名单中根据第一选取概率选取目标用户,选取时,对用户名单进行分组,创建各分组对应的处理进程,多个处理进程并行选取的方式符合线上选取时多个同时参与选取的实际情况,能够提高离线选取的公平性的同时,提高选取效率,而进一步地对于第一次选取超出目标数量的情况,通过按分组分别随机从第一次选取的第一目标用户名单中选取第二数量的目标用户,全部分组的第二数量为目标数量,进一步保障的选取公平性和均衡性。

在另一个实施例中,第一选取概率包括至少两个目标级别的第一选取概率。

具体地,根据业务需求,还可以设置不同目标用户的目标级别,以及设置各目标级别对应的第一选取概率。可以基于选取需求设置不同目标级别,每个目标级别设置不同的第一选取概率。如,第一选取概率随着目标级别的增加而降低。例如,第一级目标级别的第一选取概率最低,对应的,选取的目标用户数量也越少。最后一级目标级别的第一选取概率最高,对应的,选取的目标用户数量也最多。对应地,各处理进程选取的全部目标级别的目标数量为第一数量。

例如,一个业务场景设置了三个目标级别,分别为第一级、第二级和第三级。每个目标级别的第一选取概率不同,如随着级别的增加,第一选取概率随之增加。那么,对于用户名单中的每个用户而言,被选取为第一级的概率最低,被选取为第二级的概率较于被选取为第一级的概率增加,而被选取为第三级的概率最高。

各处理进程根据第一选取概率从用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单,包括:各处理进程分别根据至少两个目标级别的第一选取概率,从用户名单的对应分组中选取各目标级别的第三数量的用户,得到第一目标用户名单,各处理进程选取的全部目标级别的第三数量为第一数量。

具体地,各处理进程分别从用户名单的对应分组中,根据目标级别的第一选取概率,依次选择各目标级别的目标数量的用户。每个处理进程选取的全部目标级别的目标数量为第一数量。如,第一数量为10个,各处理进程选取的全部目标级别的目标数量为10个。

通过对目标用户进行分级,设置各目标级别的选取概率,丰富了目标用户选取的趣味性,能够吸引用户参与选取活动

各处理进程根据各目标级别的第一选取概率,分别确定各目标级别的数值范围;分别对用户名单的对应分组中的各用户生成第一随机数,若用户的第一随机数在目标级别的数值范围内,则预选取用户为目标级别的用户。

具体地,对于各处理进程执行相同的选取方法。

具体地,根据各目标级别的选取概率,确定各目标级别的数值范围。如第一级别的选取概率为10%,则确定数值范围为1-10,第二级别的选取概率为20%,则确定数值范围为11-30,第三级别的选取概率为30%,则确定数值范围为31-60。

在确定各目标级别的数值范围后,分别对用户名单的对应分组中的各用户标识生成在第一范围内的第一随机数。如,第一范围为1~100,若对于某个用户生成的随机数为20,则用户的随机数与各目标级别的数值范围进行比较,该用户的随机数落在第二级别的数值范围内,则确定用户被选取为第二级别的用户。

该方法通过根据选取概率,设置各目标级别的数值范围,对用户生成随机数,通过判断用户的随机数是否在目标级别的数值范围内的方式,来确定用户是否被选取为目标级别的用户。该方法模拟用户线上参与选取的方式,对用户是否被选取进行独立判断,提高了选取的公平性。

上述的实施例中,各用户被选取的概率被设置为相同。在实际业务中,各用户被选取的概率可以设置为不同。如,可以对于满足一定条件的用户设置较高的选取概率。条件可以根据业务场景具体设置。比如,对于连续参加选取活动的用户,提高选取概率。

选取时,获取用户标识的选取概率,以及选取概率的数值范围,分别对用户名单的各用户标识生成第二随机数,若第二随机数在选取概率的数值范围,则对用户标识生成在指定数值范围的第一随机数;指定数值范围为全部目标级别的第一选取概率的数值范围;各目标级别的第一选取概率的数值范围是连续的。

具体地,各目标级别的第一选取概率的数值范围是连续的,所以可以确定连续的指定数值范围。在根据用户标识的选取概率选取该用户后,对该用户再次生成在指定数值范围的随机数。由于指定数值范围与全部目标级别的数值范围相关,因此,被选取的用户生成在该范围的随机数使得该用户被选取,并根据随机数所在的目标级别的数值范围,确定被选取的目标级别。

具体地,系统记录了各用户标识的选取概率,可以结合实际需求,将满足一定条件的用户标识设置较高选取概率。也可以根据用户参与选取活动的积极性,对于积极参与线上选取活动的用户设置较高的选取概率。其中,从线上选取活动的第二天起,对于连续参与选取活动的用户的选取概率进行更新。还可以将参与选取活动次数大于预设次数的用户设置一个较高的选取概率。其中,从线上选取活动的第二天起,对于参与选取活动次数大于预设次数的用户的选取概率进行更新。

其中,若用户标识连续参与选取,则增加该用户标识的选取概率。若用户标识参加选取的次数大于阈值,则增加该用户标识的选取概率。

在预选取阶段,对于各用户,获取各用户标识的选取概率,以及选取概率的数值范围。如一个用户的选取概率为70%,则确定选取概率的数值范围为1~70。对用户标识生成第二随机数,如果用户在选取概率的数值范围内,则对该用户根据目标级别的选取概率的数值范围,在该范围内生成第一随机数。由于对于用户标识的选取概率第一次选取该用户在该用户标识的选取概率的数值范围内,表示从用户的选取概率的角度,该用户被选取,在此基础上,进一步地对该用户在目标级别的选取概率的数值范围内随机生成第一随机数,以确定该用户被选取的目标级别。

通过设置用户标识的选取概率,能够增加目标用户选取的趣味性。

在另一个实施例中,选取目标用户的方法,还包括:接收线上选取参与请求,线上选取参与请求包括用户标识;响应线上选取参与请求,调用数据库,查询用户标识是否在预选取得到的第二目标用户名单中;若用户标识在第二目标用户名单,则反馈选中的结果。

具体地,接收用户终端触发的线上选取参与请求,调用数据库,查询用户标识是否在第二目标用户名单中。第二目标用户名单是模拟线上选取,预选取的目标用户的名单,若用户标识在第二目标用户名单中,则反馈被选取的结果。从而线上选取时,利用预选取的结果查询数据库即可。该方法利用离线预选取的结果,在实际线上选取时,无需对每个用户选取判断,只需查询预选取的结果即可,避免了多人线上选取的高负载,降低了资源消耗。

在另一个实施例中,还可以根据线上选取的每个选取周期内,选取的目标级别的目标数量的剩余情况,增加下一选取周期的目标级别的选取概率。例如,在一个线上选取周期内,未完成选取的目标级别的目标数量,则可以增加下一选取周期的目标级别的选取概率,最大程度的确保完成选取目标。

其中,为了提高选取效率,服务器具有多个处理器。确定所述用户名单的分组,创建各分组对应的进程,包括:确定所述用户名单的分组,分组至少为两组;根据处理器的处理能力在各处理器为各分组创建处理进程,各处理器创建的进程数量与所述处理能力匹配。

在服务器有多个处理器的处理场景中,可以考虑处理器的处理能力,在各处理器上创建与处理能力相匹配的相应数量的处理进程,以充分利用各处理器的计算资源,提高处理效率。

其中,处理器的处理能力与处理器的核数有关。如一个处理器为8核,则可以创建8个处理进程,如一个处理器为单核,则可以创建一个处理进程。

具体地,先确定用户名单的分组,以确定需要创建的处理进程的数量。一个处理进程对应一个分组。如根据分组原则,将用户名单为了100组,则需要创建的处理进程的数量为100。

在确定需要创建的处理进程的数量后,根据处理器的处理能力在各处理器为各分组创建处理进程,各处理器创建的进程数量与所述处理能力匹配。

具体地,根据处理器的处理能力在各处理器为各分组创建处理进程,各处理器创建的进程数量与所述处理能力匹配,包括:根据各处理器的处理能力确定各处理器可创建的处理进程的数量,得到全部处理器可创建的处理进程的数量;若分组数量大于所述全部处理器可创建的处理进程的数量,则在各处理器分别创建与处理能力匹配的相应数量的处理进程;在各处理器的所述处理进程从对应分组分别选取第一数量的用户后,在各所述处理器中根据剩余待创建进程数量和处理能力,选择处理器创建对应的处理进程。

具体地,可以通过各处理器的核数,确定各处理器的处理能力,即可创建的进程数量。根据全部处理器可创建的处理进程的数量,确定全部处理器可创建的处理进程的数量。例如,10个处理器中,有4个处理器为4核,则这4个处理器分别可创建的进程数量为4,有4个处理器为8核,则这4个处理器分别可创建的进程数量为8,有2个处理器为2核,则这2个处理器分别可创建的进程数量为2。则这10个处理器全部可创建的处理进程的数量为52。

进一步地,判断分组数量与全部处理器可创建的处理进程的数量的大小关系。若分组数量小于或等于全部处理器可创建的处理进程的数量,则可以一次利用全部处理器或部分处理创建完全部需要创建的处理进程。

若分组数量大于全部处理器可创建的处理进程的数量,则先在各处理器分别创建与处理能力匹配的相应数量的处理进程。这里包括了两种情况,一种情况是全部处理器的处理能力相同,如均为4核,则在各处理器均创建4个处理进程。一种情况是各处理器的处理能力不同,则分别根据处理能力创建相应数量的处理进程。如在4核处理器上创建4个处理进程,在8核处理器上创建8个处理进程。第一次创建完成后,分组数量-全部处理器可创建的处理进程的数量=剩余待创建进程数量。

在各处理器的处理进程从对应分组分别选取第一数量的用户后,在各理器中根据剩余待创建进程数量和处理能力,选择处理器创建对应的处理进程。

可以理解的是,若剩余待创建进程数量大于全部处理器可创建的处理进程的数量,该步骤中在各处理器分别创建与处理能力匹配的相应数量的处理进程后,再次进行下一轮处理进程的创建。而若剩余待创建进程数量小于全部处理器可创建的处理进程的数量,则可以随机确定处理器,创建对应的处理进程。也可以按处理能力的高低,优先选择处理能力高的处理处理器,创建处理进程,直到全部待创建进程数量的处理进程被创建完成。

需要注意的是,对于执行主进程,即执行分组以及查询目标用户名单的主进程所在的处理器,在考虑可创建进程数量时,应当考虑主进程占用处理能力的情况。例如,该处理器为8核,主进程占用一核进行处理,则该处理器的处理能力为7核。

其中,对于多核处理器,在该处理器创建的多处理进程交替运行,即一个处理进程处理完成后,再对下一个处理进程进行处理。

本实施例中,通过考虑每个处理器的处理能力,创建相应数量的处理进程,能够充分利用计算资源,提高处理效率。

如图3所示,选取目标用户的方法,包括两个阶段,第一个阶段为预选取阶段,第二个阶段为线上选取阶段。

在预选取阶段,通过离线选取的方式,提前从用户名单中选取目标用户。预选取阶段的处理过程,如图4所示。设置了选取启动服务,协商服务和数据库。其中,预选取服务获取预先设置的选取概率和用户名单,启动分组数对应的处理进程数,各处理进程从用户名单的分组中独立选取,得到第一目标用户名单。比如用户群体按省分为10个区域,那将用户名单分为10组,每组用户比如有1万人,启动10个处理进程分轮询其对应组的用户进行选取。但这里就会产生一个问题,当10个处理进程同时进行选取时,会超选。为解决超选问题,对于当前第一目标用户名单中的用户都是虚拟标记为选取,然后通过协商服务再根据目标数量进行一次随机选取。

具体地,协商服务主要是通过随机方式,落地真正选取的用户,在多处理进程选取服务里,会虚拟标记出第一目标用户名单中的用户,但是因为选取目标数量的限制,可能选取目标为10,但是有20个人被选取的情况,针对此情况,该服务则会根据选取目标数量,对第一目标用户名单中的用户再进行随机选取10人作为真正被选取用户得到第二目标用户名单,持久存储到数据库,其余10人则未被选取。以此来做到相对而言的公平公正。

数据库,负责把选取的用户标识和选取的目标级别的关系写入选取用户表。

在线上选取的阶段,接收线上选取参与请求,线上选取参与请求包括用户标识,响应线上选取参与请求,调用数据库,查询用户标识是否在预选取得到的目标用户名单中;若用户标识在目标用户名单,则反馈选中的结果。

一方面,本申请是采用预选取的方式,可以显著的提高选取程序的稳定性,因为传统的选取方式需要额外引入内存服务器来支撑如此高的并发处理(比如redis),但是当前方案因为是预选取方式,不存在高并发情况,只是对一个数据表的简单查询,不需要增加额外的内存服务器。相当于是把高并发的频繁写操作转换为了查操作,所以稳定性大大提升,线程安全问题直接降到了0。另一方面,通过多线程预选取可以显著的提高大范围用户离线选取的效率和公平性。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的选取目标用户的方法的选取目标用户的装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个选取目标用户的装置实施例中的具体限定可以参见上文中对于选取目标用户的方法的限定,在此不再赘述。

在一个实施例中,如图5所示,提供了一种选取目标用户的装置,包括:

获取模块502,用于获取用户名单以及第一选取概率。

处理进程处理模块504,用于确定所述用户名单的分组,创建各分组对应的处理进程,所述分组至少为两组。

第一选取模块506,用于各处理进程根据所述第一选取概率从所述用户名单的对应分组中分别选取第一数量的用户,得到第一目标用户名单。

第二选取模块508,用于从所述第一目标用户名单中按分组分别随机选取第二数量的目标用户,得到包括目标数量的目标用户的第二目标用户名单,全部分组的各第二数量总和为所述目标数量;所述第一数量不大于所述目标数量,且大于所述目标数量和处理进程数量的比值。

存储模块510,用于将所述第二目标用户名单存储至数据库,所述数据库在用户触发线上选取参与操作时,查询用户是否为预选中的目标用户。

上述选取目标用户的装置,通过采用预选取的方式,提前从用户名单中根据第一选取概率选取目标用户,选取时,对用户名单进行分组,创建各分组对应的处理进程,多个处理进程并行选取的方式符合线上选取时多个同时参与选取的实际情况,能够提高离线选取的公平性的同时,提高选取效率,而进一步地对于第一次选取超出目标数量的情况,通过按分组分别随机从第一次选取的第一目标用户名单中选取第二数量的目标用户,全部分组的第二数量为目标数量,进一步保障的选取公平性和均衡性。

在另一个实施例中,第一选取概率包括至少两个目标级别的第一选取概率。

第一选取模块,用于各处理进程分别根据至少两个目标级别的第一选取概率,从所述用户名单的对应分组中选取各目标级别的第三数量的用户,得到第一目标用户名单,各处理进程选取的全部目标级别的第三数量为所述第一数量。

在另一个实施例中,第一选取模块,用于各处理进程根据所述各目标级别的第一选取概率,分别确定各目标级别的数值范围;

分别对所述用户名单的对应分组中的各用户生成第一随机数,若所述用户的第一随机数在所述目标级别的数值范围内,则预选取所述用户为所述目标级别的用户。

在另一个实施例中,第一选取模块,用于获取各用户的第二选取概率,以及所述第二选取概率的数值范围;分别对所述用户名单的对应分组中的各用户生成第二随机数,若所述第二随机数在所述第二选取概率的数值范围内,则对所述用户生成在指定数值范围的第一随机数;所述指定数值范围为所述全部目标级别的第一选取概率的数值范围;各所述目标级别的第一选取概率的数值范围是连续的;若所述用户的第一随机数在所述目标级别的数值范围内,则预选取所述用户为所述目标级别的用户。

在另一个实施例中,还包括第三选取模块,用于接收用户的线上选取参与请求;响应所述线上选取参与请求,调用数据库,查询所述用户是否在预选取得到的第二目标用户名单中;若所述用户在所述第二目标用户名单,则反馈被选取的结果。

在另一个实施例中,还包括更新模块,用于若一个选取周期内,未选取完成目标数量,则根据下一周期目标数量和该周期剩余的目标数量,增加所述第一选取概率。

在其中一个实施例中,处理进程处理模块,包括:

分组模块,用于确定所述用户名单的分组,所述分组至少为两组;

进程处理模块,用于根据处理器的处理能力在各处理器为各所述分组创建处理进程,各处理器创建的进程数量与所述处理能力匹配。

其中,处理进程处理模块,用于根据各处理器的处理能力确定各处理器可创建的处理进程的数量,得到全部处理器可创建的处理进程的数量;若分组数量大于所述全部处理器可创建的处理进程的数量,则在各处理器分别创建与处理能力匹配的相应数量的处理进程;在各处理器的所述处理进程从对应分组分别选取第一数量的用户后,在各所述处理器中根据剩余待创建进程数量和处理能力,选择处理器创建对应的处理进程。

上述选取目标用户的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标用户名单。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种选取目标用户的方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各实施例的选取目标用户的方法的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例的选取目标用户的方法的步骤。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各实施例的选取目标用户的方法的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

相关技术
  • 用户验证方法、装置、计算机设备和存储介质
  • 用户信息处理方法、装置、计算机设备及存储介质
  • 用户意图的挖掘方法及装置、计算机设备及可读介质
  • 添加用户标签的方法、装置、计算机设备和存储介质
  • 通话方法及装置、计算机可读存储介质、用户设备
  • 选取目标用户的方法、设备及计算机可读介质
  • 用于选取、移动和解除选取项目的方法、设备、计算机程序和图形用户界面
技术分类

06120116514320