排行榜生成方法、系统、服务器及存储介质与流程

文档序号:21978928发布日期:2020-08-25 19:13阅读:219来源:国知局
排行榜生成方法、系统、服务器及存储介质与流程

本申请涉及计算机技术领域,特别涉及一种排行榜生成方法、系统、服务器及存储介质。



背景技术:

在网络游戏中,为促进玩家之间的竞争,通常设置有排行榜。对于采用分区分服架构的网络游戏,不仅可以设置有用户当前所在区服的排行榜,还可以设置有全服排行榜,使用户可以了解到全服玩家的排名状况。目前,在生成全服排行榜时,需要服务器先将各个区服全部玩家的数据加载到内存中,再对这些玩家的数据进行排序,得到全服排行榜。

但是,应用上述排行榜生成方法,在全服玩家数量较大的情况下,加载全服玩家的数据会占用服务器过多的内存空间,而且,在进行数据排序时,随着数据量的增大,服务器的运算量、运算复杂度会大大增加,这不仅影响运算效,还会严重损耗服务器的性能。因此,在生成排行榜时,如何降低服务器的内存占用以及降低服务器的性能损耗,是一个重要研究方向。



技术实现要素:

本申请实施例提供了一种排行榜生成方法、系统、服务器及存储介质,可以降低排行榜生成过程中,服务器的内存占用以及性能损耗。该技术方案如下:

一方面,提供了一种排行榜生成方法,应用于用户数据处理系统,该用户数据处理系统包括至少两个第一服务器以及第二服务器,一个该第一服务器对应于一个分区,该方法包括:

该至少两个第一服务器响应于排行榜初始化指令,分别对属于至少两个分区的用户的用户数据进行排序,生成该至少两个分区各自对应的子排行榜;

该第二服务器响应于该至少两个分区各自对应的子排行榜已生成,基于至少两个子排行榜中用户数据的排序,对该至少两个子排行榜中的用户数据进行分批次读取,基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至目标序列;

该第二服务器响应于该目标序列中的数据量达到目标数目,将该目标序列确定为该至少两个分区对应的总排行榜。

一方面,提供了一种排行榜生成系统,该系统包括至少两个第一服务器以及第二服务器;

该至少两个第一服务器,用于响应于排行榜初始化指令,分别对属于至少两个分区的用户的用户数据进行排序,生成该至少两个分区各自对应的子排行榜;

该第二服务器响,用于应于该至少两个分区各自对应的子排行榜已生成,基于至少两个子排行榜中用户数据的排序,对该至少两个子排行榜中的用户数据进行分批次读取,基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至目标序列;响应于该目标序列中的数据量达到目标数目,将该目标序列确定为该至少两个分区对应的总排行榜。

在一种可能实现方式中,任一分区对应的该第一服务器,用于响应于对该任一分区的子排行榜查看指令,将该子排行榜发送至目标终端进行显示。

在一种可能实现方式中,该第二服务器,用于响应于对总排行榜查看指令,将该总排行榜发送至目标终端进行显示。

在一种可能实现方式中,该第二服务器,还用于接收目标用户的用户排名获取指令,该用户排名获取指令包括该目标用户的用户标识以及所属分区的分区标识;响应于该总排行榜中包括该用户标识,基于该总排行榜以及该用户标识确定该目标用户的用户排名;响应于该总排行榜中不包括该用户标识,基于该分区标识,从该分区标识所指示的第一服务器中获取该目标用户对应的子排行榜,基于该目标用户对应的子排行榜、该总排行榜,确定该目标用户的排名区间。

一方面,提供了一种服务器,该服务器包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现该排行榜生成方法中第一服务器所执行的操作。

一方面,提供了一种服务器,该服务器包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现该排行榜生成方法中第二服务器所执行的操作。

一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现该排行榜生成方法中第一服务器或第二服务器所执行的操作。

一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。第一服务器或第二服务器的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该第一服务器或该第二服务器执行上述排行榜生成方法所执行的操作。

本申请实施例提供的技术方案,先由至少两个第一服务器对属于各自分区的用户数据进行排序,生成各个分区对应的子排行榜,再由第二服务器基于各个子排行榜的数据顺序,对各个子排行榜中的用户数据进行分批次读取,无需一次性加载各个分区的全部用户数据,从而降低对第二服务器的内存占用;在对用户数据进行排序时,第一服务器基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至总排行榜的数据序列中,直到总排行榜的数据量达到目标数据,在这一过程中,每次排序所涉及的数据量均较小,从而有效降低了排序时第一服务器的运算量和运算复杂度,降低服务器的性能损耗。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种排行榜生成方法的实施环境示意图;

图2是本申请实施例提供的一种排行榜生成方法的流程图;

图3是本申请实施例提供的一种排行榜生成方法的时序图;

图4是本申请实施例提供的一种排序方法的示意图;

图5是本申请实施例提供的一种排序方法的示意图;

图6是本申请实施例提供的一种总排行榜生成方法的示意图;

图7是本申请实施例提供的一种子排行榜显示页面的示意图;

图8是本申请实施例提供的一种总排行榜显示页面的示意图;

图9是本申请实施例提供的一种排行榜生成系统的示意图;

图10是本申请实施例提供的一种终端的结构示意图;

图11是本申请实施例提供的一种服务器的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。

分治算法(divideandconquer):其基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题性质相同,求出子问题的解,就可得到原问题的解。如果这些子问题还较大,难以解决,还可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。

归并排序(mergesort):是建立在归并操作上的一种有效的排序算法,该算法对分治算法的一个非常典型的应用。归并排序是将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序。归并排序是一种稳定的排序方法。在本申请实施例中,服务器在生成全服总排行榜时,采用分治策略,由各个分区的区服排行榜服务器对当前的分区的用户数据进行排序,生成区服排行榜(子排行榜),全服排行榜服务器基于归并排序算法,将各个区服排行榜(子排行榜)合并,得到全服排行榜(总排行榜)。

图1是本申请实施例提供的一种排行榜生成方法的实施环境示意图,参见图1,该实施环境可以包括至少两个第一服务器101和第二服务器102。该第一服务器101和第二服务器102均可以为目标应用程序的后台服务器,在本申请实施例中,以该目标应用程序为采用分区分服架构的游戏类应用程序为例进行说明。其中,一个第一服务器101可以为一个分区对应的区服排行榜服务器,可以用于对属于该分区的用户的用户数据进行排序,生成区服排行榜。第二服务器102可以为全服排行榜服务器,可以用户对各个第一服务器所生成的区服排行榜进行进一步数据处理,基于各个区服排行榜得到全服排行榜。当然,上述实施环境中还可以包括用户存储用户数据的第三服务器103以及终端104。其中,第三服务器103可以搭载有该目标应用程序的目标数据库,该目标数据库可以存储有各个分区的用户的用户数据。该终端104可以为任一用户所使用的终端,该终端104可以安装和运行有该目标应用程序,该终端104从某一分区的区服排行榜服务器,即某一第一服务器101中获取区服排行榜,也可以从全服排行榜服务器,即第二服务器102中获取全服排行榜。

上述第一服务器101、第二服务器102、第三服务器103可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(contentdeliverynetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器等。上述终端103可以是智能手机、平板电脑、电子书阅读器、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机、台式计算机、智能音箱、智能手表等。

各个终端和服务器之间可以通过有线网络或无线网络相连,使各个终端和服务器之间可以进行数据交互。需要说明的是,本申请实施例对上述终端、服务器的具体数量和设备类型不加以限定。

本申请实施例提供的排行榜生成方法,可以应用于多种类型的应用程序中,例如,游戏类、音乐类、社交类等可以涉及到排行榜的应用程序中。在本申请实施例中,仅以该方法应用于采用分区分服架构的网络游戏中为例,在这类网络游戏中,用户可以选择不同的分区进入游戏,与属于同一分区的其他用户进行互动,可以查看自己所在分区的子排行榜,也可以查看全服的总排行榜。结合本申请实施例提供的技术方案,在全服排行榜服务器(第二服务器)生成总排行榜之前,采用分治策略,先由至少两个区服排行榜服务器(第一服务器)分别生成各自分区的子排行榜,第二服务器再基于归并排序算法,将至少两个子排行榜合并,得到总排行榜。在上述总排行榜生成过程中,服务器无需一次性将全部用户数据加载至内存中,降低了内存的占用,在用户数据排序过程中,是对已排序好的子排行榜进行进一步处理,运算量和运算复杂度较低,从而使排序过程中服务器的性能损耗降低。

图2是本申请实施例提供的一种排行榜生成方法的流程图。该方法可以应用于上述实施环境,在本申请实施例中,以第一服务器、第二服务器作为执行主体,结合图2,对该排行榜生成方法进行简要介绍:

201、至少两个第一服务器响应于排行榜初始化指令,分别对属于至少两个分区的用户的用户数据进行排序,生成该至少两个分区各自对应的子排行榜。

以任一分区的第一服务器生成子排行榜为例,在本申请实施例中,第一服务器响应于该排行榜初始化指令,可以从目标应用程序的目标数据库中,读取属于该任一分区的用户的用户数据,对读取到的用户数据进行排序,例如,可以采用快速排序算法、堆排序算法等,本申请实施例对此不作限定。该第一服务器可以基于排序好的用户数据得到该子排行榜。需要说明的是,上述对子排行榜生成方法的说明,仅是一种示例性说明,本申请实施例对具体采用哪种方法生成子排行榜不作限定。

202、第二服务器响应于该至少两个分区各自对应的子排行榜已生成,基于至少两个子排行榜中用户数据的排序,对该至少两个子排行榜中的用户数据进行分批次读取,基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至目标序列。

在一种可能实现方式中,该至少两个第一服务器生成子排行榜之后,该第二服务器可以基于归并排序算法,分批次从各个第一服务器中,读取各个子排行榜的用户数据至目标内存空间中,对该目标内存空间当前缓存的用户数据进行排序,将满足目标条件的目标用户数据添加至目标序列的尾部。其中,该目标条件可以由开发人员进行设置,例如,该目标条件可以设置为选取数值最大或最小的用户数据,本申请实施例对此不作限定。该目标序列可以用于存储已排序好的用户数据,在每一轮排序过程中,满足目标条件的目标用户数据可以依次添加至该目标序列的尾部。

需要说明的是,上述对第二服务器进行用户数据读完和排序的方法的说明,仅是一种示例性说明,本申请实施例对此不作具体限定。

203、第二服务器响应于该目标序列中的数据量达到目标数目,将该目标序列确定为该至少两个分区对应的总排行榜。

在一种可能实现方式中,可以对该目标序列,即该总排行榜中的数据量进行限定,例如,总排行榜中可以仅包括排名在前1000名的用户的用户数据。当该目标序列中的数据量达到目标数目时,则该第二服务器可以停止用户数据读取和排序,将该目标序列确定为该总排行榜。其中,该目标数目的具体数值可以由开发人员进行设置,本申请实施例对此不作限定。

本申请实施例提供的技术方案,先由至少两个第一服务器对属于各自分区的用户数据进行排序,生成各个分区对应的子排行榜,再由第二服务器基于各个子排行榜的数据顺序,对各个子排行榜中的用户数据进行分批次读取,无需一次性加载各个分区的全部用户数据,从而降低对第二服务器的内存占用;在对用户数据进行排序时,第一服务器基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至总排行榜的数据序列中,直到总排行榜的数据量达到目标数据,在这一过程中,每次排序所涉及的数据量均较小,从而有效降低了排序时第一服务器的运算量和运算复杂度,降低服务器的性能损耗。

上述实施例是对排行榜生成方法的简要介绍,具体的,结合图3,对该方法进行具体说明。图3是本申请实施例提供的一种排行榜生成方法的时序图,该方法可以应用于图1所示的实施环境中。参见图3,该实施例具体可以包括以下步骤:

301、至少两个第一服务器响应于排行榜初始化指令,分别基于当前所对应分区的分区标识,从目标数据库中获取携带该分区标识的用户数据。

其中,该目标数据库用于存储该至少两个分区的用户数据。当然,属于不同分区的用户的用户数据也可以存储在不同数据库中,本申请实施例对此不作限定,不申请实施例仅以各个分区的用户数据均存储在目标数据库中为例进行说明。

在一种可能实现方式中,在分区分服的架构下,每个第一服务器中均可以运行有用于生成、维护子排行榜的第一目标进程,可以通过重启该第一目标进程来触发该排行榜初始化指令,本申请实施例对重启该第一目标进程的方法不作限定。当然,该排行榜初始化指令也可以由其他方式触发,本申请实施例对此不作限定。

在一种可能实现方式中,任一第一服务器响应于该排行榜初始化指令,可以先预留一块内存空间,基于当前所对应任一分区的分区标识,向搭载有目标数据库第三服务器发送数据读取请求,从该目标数据库中读取携带该分区标识的用户数据,即读取属于该任一分区的用户的用户数据,将读完到的用户缓存至该预留的内存空间中。

302、至少两个第一服务器分别对获取到的用户数据进行排序,得到该至少两个分区各自对应的子排行榜。

以一个第一服务器生成子排行榜为例,在一种可能实现方式中,该第一服务器可以基于快速排序算法对各个用户数据进行排序,得到该子排行榜。首先,该第一服务器将读取到的用户数据中的第一个用户数据,作为基准数据,基于该基准数据对该用户数据进行分组,将数值满足第一预设条件的该用户数据确定为第一组,将数值满足第二预设条件的该用户数据确定为第二组。然后,对于该第一组、该第二组中的任一组用户数据,该第一服务器基于该任一组用户数据中的基准数据进行再次分组,直到每组只包括一个数据,最后,该第一服务器可以基于分组结果,确定该子排行榜。其中,该第一预设条件、第二预设条件均可以由开发人员进行设置,例如,该第一预设条件可以为用户数据的数值小于该基准数据的数值,该第二预设条件可以为用户数据的数值大于该基准数据的数值,本申请实施例对此不作限定。

图4是本申请实施例提供的一种排序方法的示意图,结合图4,对上述子排行榜生成过程进行说明。以对10个用户的用户数据进行排序为例,这10个用户的用户数据分别为“5、2、1、3、9、8、6、7、10”,该第一服务器可以选取第一个用户数据“5”为基准数据,基于该基准数据进行第一次数据分组。具体的,该第一服务器可以以第一个用户数据“5”为哨兵a,以最后一个用户数据“10”为哨兵b,如图4中的(a)图所示,第一服务器将哨兵b与基准数据进行比较,若大于该基准数据,则继续选取前一个数据为哨兵b,直到哨兵b所指向的数据小于该基准数据,将该哨兵b所指向的数据填入哨兵a所指向的位置,如图4中的(b)图所示,将用户数据“4”填入哨兵a所指向的位置。类似哨兵b将哨兵a的指向向后移动,找到第一个大于基准数据的用户数据“9”,将该用户数据填入当前哨兵b所指向的位置,如图4中的(c)图所示。继续重复上述哨兵a和哨兵b的移动步骤,直到哨兵a和哨兵b指向相同位置,将该位置填入基准数据,如图4中的(d)图所示。该第一服务器完成第一次数据分组,可以以该基准数据当前所处的位置为分界,得到第一组数据401和第二组数据402,该第一服务器可以分别对这两组数据进行至少一次分组,即分别基于该第一组数据401和第二组数据402,执行上述分组步骤。直到获取到的每组数据中仅包括一个用户数据,基于当前的分组结果确定该子排行榜,例如,上述10个用户数据分组完成后得到的序列为“1、2、3、4、5、6、7、8、9、10”,则该第一服务器得到的子排行榜为“1、2、3、4、5、6、7、8、9、10”。

需要说明的是,上述对子排行榜生成方法的说明,仅是一种示例性说明,本申请实施例对具体采用哪种方法生成该子排行榜不作限定。

需要说明的是,上述步骤301和步骤302,是至少两个第一服务器响应于排行榜初始化指令,分别对属于至少两个分区的用户的用户数据进行排序,生成该至少两个分区各自对应的子排行榜的步骤。在本申请实施例中,由各个分区对应的第一服务器先生成子排行榜,再由第二服务器基于各个子排行榜进行进一步排序,生成总排行榜,基于这种分治策略,可以有效降低第二服务器的运算压力,从而降低第二服务器的性能损耗。

303、响应于该至少两个分区各自对应的子排行榜已生成,第二服务器预留出目标内存空间。

在一种可能实现方式中,在确定各个第一服务器已生成子排行榜后,可以重启第二服务器中用于生成、维护总排行榜的第二目标进程,来触发第二服务器执行生成总排行榜的步骤。例如,各个第一服务器在生成子排行榜后,可以向第二服务器发送子排行榜生成完成的信息,第二服务器基于各个第一服务器发送的信息确认各个子排行榜已生成后,可以触发该第二目标进行重启,执行重新生成总排行榜的步骤。需要说明的是,上述对重启第二目标进程的方法的说明,仅是一种示例性说明,本申请实施例对此不作具体限定。

在本申请实施例中,该第二服务器需要先预留出目标内存空间,该目标内存空间的大小可以基于总排行榜的数据量确定,即该目标内存空间只需存储该总排行所对应数据量的数据,无需加载全部的用户数据,有效降低了该第二服务器的内存空间占用。当然,该第二服务器也可以将某一已有的存储空间作为该目标内存空间,本申请实施例对此不作限定。

304、第二服务器基于至少两个子排行榜中用户数据的排序,对该至少两个子排行榜中的用户数据进行分批次读取,基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至目标序列。

在本申请实施例中,对于第一次数据读取,该第二服务器可以基于该至少两个子排行榜中用户数据的排序,分别将该至少两个子排行榜中排在第一位的用户数据读取至目标内存空间中,对该目标内存空间中缓存的用户数据进行排序,响应于来自目标子排行榜的该目标用户数据排在第一位,将该目标用户数据添加至该目标序列。对于除第一次以外的任一次数据读取,该第二服务器从前一次排序过程中所确定的该目标子排行榜中,读取下一位用户数据至该目标内存空间,基于该目标内存空间当前缓存的用户数据进行排序,将本次排序过程确定出的目标用户数据添加至该目标序列的尾部。也即是,对于x(x为大于或等于2的整数)个子排行榜,该第二服务器可以分别读取各个子排行榜中第一位用户数据,响应于来自第i(i为小于或等于x的正整数)个子排行榜的用户数据满足该目标条件,该第二服务器可以将该用户数据添加至该目标序列,继续读取该第i个子排行榜的下一位用户数据,在本次数据读取完成后,对已读取出的各个用户数据进行排序,筛选出满足该目标条件的用户数据。

图5是本申请实施例提供的一种排序方法的示意图,结合图5,对上述排序过程进行说明。以基于两个子排行榜,即第一子排行榜501和第二子排行榜502为例,该第一子排行榜501可以包括9个用户的用户数据,分别为“1、2、5、9、15、20、21、35、50”,该第二子排行榜502可以包括10个用户的用户数据,分别为“2、3、4、7、9、10、11、13、17、20”。该第二服务器在第一次数据读取时,可以先读取两个子排行榜中排在第一位的数据,分别为“1”、“2”,对这两个用户数据进行排序,将数值较小的用户数据排在第一位,即将排在第一子排行榜的用户数据“1”排在第一位,将该用户数据“1”添加至该目标序列503中,如图5中的(a)图所示。该第二服务器继续进行第二次数据读取,在一种可能实现方式中,在第二次数据读取时,该第二服务器可以仅从该第一子排行榜中读取排在第二位的用户数据“2”,不从第二子排行榜中读取数据;该第二服务器也可以将当前读取的,但尚未添加至目标序列的用户数据清除,重新进行数据读取,也即是,从第一子排行榜中读取排在第二位的用户数据“2”,从第二子排行榜中读取排在第一位的用户数据“2”,本申请实施例对此不作限定。如图5中的(b)图所示,该第二服务器在进行第二次数据读取后,得到用户数据“2”、“2”,这两个用户数据的数值相同,则该第二服务器可以将这两个用户数据均添加至该目标序列503中。该第二服务器继续执行进行下一次数据读取以及排序的步骤。

在一种可能实现方式中,上述对两个子排行榜进行归并排序方法可以通过下述代码实现:

需要说明的是,上述对第二服务器进行用户数据读取以及排序的方法的说明,仅是一种示例性说明,本申请实施了对具体采用哪种方法进行用户数据读取和排序不作限定。在本申请实施例中,第二服务器分批次进行数据读取和排序,每次数据读取的数据量较小,且每次排序所涉及的数据量也较小,可以有效降低第二服务器在排序过程中的运算量个运算复杂度,可以提高排序效率以及降低排序运算过程中第二服务器的性能损耗。

305、第二服务器响应于该目标序列中的数据量达到目标数目,将该目标序列确定为该至少两个分区对应的总排行榜。

在一种可能实现方式中,该总排行榜中可以仅包括部分用户的排名信息,例如,可以包括排名在前1000名的用户的用户数据。其中,该总排行榜所包括的数据量,即该目标数目的具体数值可以由开发人员进行设置,本申请实施例对此不作限定。

在一种可能实现方式中,该目标序列中的数据量达到该目标数目时,该第二服务器可以停止用户数据读取和排序,将该目标序列确定为该总排行榜。

本申请实施例提供的技术方案,先由至少两个第一服务器对属于各自分区的用户数据进行排序,生成各个分区对应的子排行榜,再由第二服务器基于各个子排行榜的数据顺序,对各个子排行榜中的用户数据进行分批次读取,无需一次性加载各个分区的全部用户数据,从而降低对第二服务器的内存占用;在用户数据排序时,第一服务器基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至总排行榜的数据序列中,直到总排行榜的数据量达到目标数据,在这一过程中,每次排序所涉及的数据量均较小,从而有效降低了排序时第一服务器的运算量和运算复杂度,降低服务器的性能损耗。

图6是本申请实施例提供的一种总排行榜生成方法的示意图,结合图6对上述排行榜生成过程进行说明,在本申请实施例中,先采用分治算法和归并排序算法,先对总排行的生成问题进行拆分,拆分为多个子排行榜的生成问题,各个子排行榜生成问题,分别由各个分区对应的区服排行榜服务器601,即第一服务器进行处理,再由全服排行榜服务器602,即第二服务器对生成的多个子排行进行归并排序,得到总排行榜。由于生成各个分区对应的子排行榜是不可避免的步骤,在本申请实施例中,在子排行榜的基础上来生成全服的总排行榜,可以有效降低总排行榜生成的复杂度。

在本申请实施例中,各个第一服务器、第二服务器中均运行有一个独立的进程来存储已生成的排行榜数据,用户可以从服务器中获取自己所属分区的子排行榜以及全服的总排行榜进行查看。

在一种可能实现方式中,该用户所使用的目标终端,检测到该用户对子排行榜查看控件的触发操作后,可以基于该用户所属的目标分区,向该目标分区对应的第一服务器发送子排行榜查看指令。其中,该触发操作可以为点击操作、长按操作等,本申请实施例对此不作限定。需要说明的是,用户也可以通过其他方式触发该目标终端向第一服务器发送该子排行榜查看指令,本申请实施例对此不作限定。响应于子排行榜查看指令,该目标分区对应的该第一服务器可以将子排行榜发送至目标终端进行显示。图7是本申请实施例提供的一种子排行榜显示页面的示意图,参见图7,该子排行榜中可以显示有各个用户的用户标识701、在游戏中所取得的分值702以及在当前分区的排名703,当然,该子排行榜中还可以显示有其他信息,例如,当前分区的分区名称、分区标识等,本申请实施例对此不作限定。

在一种可能实现方式中,该目标终端检测到用户对总排行榜查看控件的触发操作后,可以向第二服务器发送总排行榜查看指令,响应于对总排行榜查看指令,该第二服务器将该总排行榜发送至目标终端进行显示。需要说明的是,用户也可以通过其他方式触发该目标终端向第二服务器发送该总排行榜查看指令,本申请实施例对此不作限定。图8是本申请实施例提供的一种总排行榜显示页面的示意图,参见图8,该总排行榜中可以显示有各个用户的用户标识801、在游戏中所取得的分值802、在全服的排名803以及该用户所属分区的分区标识804,当然,该总排行榜中还可以显示有其他信息,本申请实施例对此不作限定。

在本申请实施例中,用户还可以对自己的全服排名进行查看,在一种可能实现方式中,该第二服务器可以接收目标用户的用户排名获取指令,该用户排名获取指令包括该目标用户的用户标识以及所属分区的分区标识。响应于该总排行榜中包括该用户标识,该第二服务器可以基于该总排行榜以及该用户标识确定该目标用户的用户排名;响应于该总排行榜中不包括该用户标识,该第二服务器可以基于该分区标识,从该分区标识所指示的第一服务器中获取该目标用户对应的子排行榜,基于该目标用户对应的子排行榜、该总排行榜,确定该目标用户的排名区间。也即是,当该用户的用户数据不在该总排行榜中时,该第二服务器可以基于该用户在当前分区的排名情况、当前分区用户在全服的排名状况,来估算该用户在全服的排名区间。需要说明的是,本申请实施例对该第二服务器确定该用户的排名区间的方法不作限定。

上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。

图9是本申请实施例提供的一种排行榜生成系统的示意图,参见图9,该系统包括至少两个第一服务器901以及第二服务器902;

该至少两个第一服务器901,用于响应于排行榜初始化指令,分别对属于至少两个分区的用户的用户数据进行排序,生成该至少两个分区各自对应的子排行榜;

该第二服务器响902,用于应于该至少两个分区各自对应的子排行榜已生成,基于至少两个子排行榜中用户数据的排序,对该至少两个子排行榜中的用户数据进行分批次读取,基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至目标序列;响应于该目标序列中的数据量达到目标数目,将该目标序列确定为该至少两个分区对应的总排行榜。

在一种可能实现方式中,该第二服务器902,用于对于第一次数据读取,基于该至少两个子排行榜中用户数据的排序,分别将该至少两个子排行榜中排在第一位的用户数据读取至目标内存空间中,对该目标内存空间中缓存的用户数据进行排序,响应于来自目标子排行榜的该目标用户数据排在第一位,将该目标用户数据添加至该目标序列;对于除第一次以外的任一次数据读取,从前一次排序过程中所确定的该目标子排行榜中,读取下一位用户数据至该目标内存空间,基于该目标内存空间当前缓存的用户数据进行排序,将本次排序过程确定出的目标用户数据添加至该目标序列的尾部。

在一种可能实现方式中,该目标内存空间的大小基于该目标序列的数据量确定。

在一种可能实现方式中,该至少两个第一服务器901,用于响应于排行榜初始化指令,分别基于当前所对应分区的分区标识,从目标数据库中获取携带该分区标识的用户数据,该目标数据库用于存储该至少两个分区的用户数据;分别对获取到的用户数据进行排序,得到该至少两个分区各自对应的该子排行榜。

在一种可能实现方式中,该第一服务器901,用于将读取到的用户数据中的第一个用户数据,作为基准数据;基于该基准数据对该用户数据进行分组,将数值满足第一预设条件的该用户数据确定为第一组,将数值满足第二预设条件的该用户数据确定为第二组;对于该第一组、该第二组中的任一组用户数据,基于该任一组用户数据中的基准数据进行再次分组,直到每组只包括一个数据;基于分组结果,确定该子排行榜。

在一种可能实现方式中,任一分区对应的该第一服务器901,用于响应于对该任一分区的子排行榜查看指令,将该子排行榜发送至目标终端进行显示。

在一种可能实现方式中,该第二服务器902,用于响应于对总排行榜查看指令,将该总排行榜发送至目标终端进行显示。

在一种可能实现方式中,该第二服务器902,还用于接收目标用户的用户排名获取指令,该用户排名获取指令包括该目标用户的用户标识以及所属分区的分区标识;响应于该总排行榜中包括该用户标识,基于该总排行榜以及该用户标识确定该目标用户的用户排名;响应于该总排行榜中不包括该用户标识,基于该分区标识,从该分区标识所指示的第一服务器中获取该目标用户对应的子排行榜,基于该目标用户对应的子排行榜、该总排行榜,确定该目标用户的排名区间。

本申请实施例提供的排行榜生成系统,先由至少两个第一服务器对属于各自分区的用户数据进行排序,生成各个分区对应的子排行榜,再由第二服务器基于各个子排行榜的数据顺序,对各个子排行榜中的用户数据进行分批次读取,无需一次性加载各个分区的全部用户数据,从而降低对第二服务器的内存占用;在对用户数据进行排序时,第一服务器基于每批次读取到的用户数据进行排序,将其中满足目标条件的目标用户数据添加至总排行榜的数据序列中,直到总排行榜的数据量达到目标数据,在这一过程中,每次排序所涉及的数据量均较小,从而有效降低了排序时第一服务器的运算量和运算复杂度,降低服务器的性能损耗。

需要说明的是:上述实施例提供的排行榜生成系统与排行榜生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图10是本申请实施例提供的一种终端的结构示意图。该终端1000可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端1000包括有:一个或多个处理器1001和一个或多个存储器1002。

处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一条程序代码,该至少一条程序代码用于被处理器1001所执行以实现本申请中方法实施例提供的排行榜生成方法。

在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、显示屏1005、摄像头组件1006、音频电路1007、定位组件1008和电源1009中的至少一种。

外围设备接口1003可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路1004用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏1005用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。

定位组件1008用于定位终端1000的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1008可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。

加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3d动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器1013可以设置在终端1000的侧边框和/或显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在显示屏1005的下层时,由处理器1001根据用户对显示屏1005的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商logo时,指纹传感器1014可以与物理按键或厂商logo集成在一起。

光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制显示屏1005的显示亮度。具体地,当环境光强度较高时,调高显示屏1005的显示亮度;当环境光强度较低时,调低显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。

接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制显示屏1005从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

图11是本申请实施例提供的一种服务器的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(centralprocessingunits,cpu)1101和一个或多个的存储器1102,其中,该一个或多个存储器1102中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器1101加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器1100还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1100还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由处理器执行以完成上述实施例中的排行榜生成方法。例如,该计算机可读存储介质可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、只读光盘(compactdiscread-onlymemory,cd-rom)、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来至少一条程序代码相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1