一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据排名方法及装置、电子设备、存储介质与流程

2021-10-30 02:52:00 来源:中国专利 TAG:排名 数据 数据处理 电子设备 装置


1.本公开涉及数据处理技术领域,具体而言,涉及一种数据排名方法、数据排名装置、电子设备以及计算机可读存储介质。


背景技术:

2.随着互联网的快速发展,电子竞技活动也日益丰富。在各种电子竞技活动中需要对用户初始数据按照不同的行政区域级别进行排名,如何提供一种高效且可靠的区域排名方法,成为当前电子竞技活动需要解决的问题。
3.在相关的区域排名方法中,要么是基于单服务器节点进行区域排名,要么是基于分布式服务器节点进行聚合排名。然而,对于传统的单服务器节点,通过服务端的单进程对用户初始数据进行区域排名,使得服务器运算量较大,且由于服务器的内存有限,会导致用户初始数据排名的效率,以及服务器的可靠性较低。对于分布式服务器节点,需要通过排行榜中心进程对用户初始数据进行排名,以及将排行榜数据反馈至用户所在客户端,排行榜中心进程的负载负担较大,使得排行榜中心进程出现故障的可能性较大,且数据读写的效率较低。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开实施例的目的在于提供一种数据排名方法、数据排名装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服排行榜进程负载负担较大,以及数据读写效率较低的问题。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开实施例的第一方面,提供了一种数据排名方法,包括:获取用户区域位置信息和用户初始数据;基于所述用户区域位置信息生成用户排行榜编码数据,并将所述用户初始数据插入至与所述用户排行榜编码数据对应的键值数据库表中,以在所述键值数据库表中对所述用户初始数据进行排名,得到与所述用户初始数据对应的用户排名数据;生成空闲节点列表,并将所述空闲节点列表发送至客户端;以及响应于对所述空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过所述排行榜数据拉取进程获取所述用户排名数据,以将所述用户排名数据返回至所述客户端。
8.在本公开的一些示例实施例中,基于前述方案,所述基于所述用户区域位置信息生成用户排行榜编码数据,包括:获取标准区域编码统计表,并从所述标准区域编码统计表中匹配与所述用户区域位置信息对应的用户区域位置编码;通过所述排行榜数据拉取进程获取所述用户区域位置编码的历史排行榜数据表,并基于所述历史排行榜数据表确定与所述用户区域位置编码对应的历史周期编号;基于所述历史周期编号计算所述用户区域位置
编码的当前周期编号,并基于所述用户区域位置编码和当前周期编号生成所述用户排行榜编码数据。
9.在本公开的一些示例实施例中,基于前述方案,所述用户排名数据是通过在所述键值数据库表中对所述用户初始数据以跳表数据结构进行排序得到的。
10.在本公开的一些示例实施例中,基于前述方案,所述用户初始数据包括用户标识数据,所述通过所述排行榜数据拉取进程获取所述用户排名数据,包括:通过所述排行榜数据拉取进程解析所述用户排行榜编码数据,得到与所述用户排行榜编码数据对应的所述用户区域位置编码和当前周期编号;若所述排行榜数据拉取进程检测到与所述用户区域位置编码和当前周期编号对应的缓存排行榜数据表,则获取当前时间数据,以及所述缓存排行榜数据表的生命周期数据;若所述排行榜数据拉取进程检测到所述当前时间数据小于或等于所述生命周期数据,则从所述缓存排行榜数据表中匹配得到与所述用户标识数据对应的所述用户排名数据。
11.在本公开的一些示例实施例中,基于前述方案,所述方法还包括:若所述排行榜数据拉取进程检测到不存在所述缓存排行榜数据表,则从所述键值数据库中获取与所述用户排行榜编码数据对应的排行榜数据表,并缓存所述排行榜数据表。
12.在本公开的一些示例实施例中,基于前述方案,所述方法还包括:获取更新排行榜数据表的目标时间戳;响应于接收到所述排行榜数据表更新请求,检测接收到所述更新请求的时间戳是否等于或大于所述目标时间戳;若检测到所述时间戳等于或大于所述目标时间戳,则计算所述用户区域位置编码的目标周期编号,并根据所述目标周期编号更新所述用户排行榜编码数据得到目标用户排行榜编码数据;将所述更新请求中的用户更新数据插入至与所述目标用户排行榜编码数据对应的键值数据库表中,在所述键值数据库表中对所述用户更新数据进行排名,实现对所述用户排名数据的更新。
13.在本公开的一些示例实施例中,基于前述方案,所述方法还包括:实时生成空闲节点集合,并检测所述空闲节点集合中是否存在故障节点集合;若检测到所述空闲节点集合中存在故障节点集合,则从所述空闲节点集合中删除所述故障节点集合,得到目标空闲节点集合;根据所述目标空闲节点集合更新所述空闲节点列表。
14.根据本公开实施例的第二方面,提供了一种数据排名装置,包括:
15.数据获取模块,用于获取用户区域位置信息和用户初始数据;排行榜编码数据生成模块,用于基于所述用户区域位置信息生成用户排行榜编码数据,并将所述用户初始数据插入至与所述用户排行榜编码数据对应的键值数据库表中,以在所述键值数据库表中对所述用户初始数据进行排名,得到与所述用户初始数据对应的用户排名数据;空闲节点列表发送模块,用于生成空闲节点列表,并将所述空闲节点列表发送至客户端;数据拉取进程建立模块,用于响应于对所述空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过所述排行榜数据拉取进程获取所述用户排名数据,以将所述用户排名数据返回至所述客户端。
16.在本公开的一些示例实施例中,基于前述方案,所述排行榜编码数据生成模块还包括排行榜编码生成单元,所述排行榜编码生成单元,用于获取标准区域编码统计表,并从所述标准区域编码统计表中匹配与所述用户区域位置信息对应的用户区域位置编码;通过所述排行榜数据拉取进程获取所述用户区域位置编码的历史排行榜数据表,并基于所述历
史排行榜数据表确定与所述用户区域位置编码对应的历史周期编号;基于所述历史周期编号计算所述用户区域位置编码的当前周期编号,并基于所述用户区域位置编码和当前周期编号生成所述用户排行榜编码数据。
17.在本公开的一些示例实施例中,基于前述方案,所述排行榜编码数据生成模块还包括数据插入单元,所述数据插入单元,用于将所述用户初始数据插入至所述键值数据库表中,得到所述用户排名数据;用户排名数据是通过在所述键值数据库表中对所述用户初始数据以跳表数据结构进行排序得到的。
18.在本公开的一些示例实施例中,基于前述方案,所述数据排名装置还包括用户排名数据获取模块,所述用户排名数据获取模块,用于通过所述排行榜数据拉取进程解析所述用户排行榜编码数据,得到与所述用户排行榜编码数据对应的所述用户区域位置编码和当前周期编号;若所述排行榜数据拉取进程检测到与所述用户区域位置编码和当前周期编号对应的缓存排行榜数据表,则获取当前时间数据,以及所述缓存排行榜数据表的生命周期数据;若所述排行榜数据拉取进程检测到所述当前时间数据小于或等于所述生命周期数据,则从所述缓存排行榜数据表中匹配得到与所述用户标识数据对应的所述用户排名数据。
19.在本公开的一些示例实施例中,基于前述方案,所述数据拉取进程建立模块还包括数据检测单元,所述数据检测单元,用于通过所述排行榜拉取节点检测是否存在所述缓存排行榜数据表,若所述排行榜数据拉取进程检测到不存在所述缓存排行榜数据表,则从所述键值数据库中获取与所述用户排行榜编码数据对应的排行榜数据表,并缓存所述排行榜数据表。
20.在本公开的一些示例实施例中,基于前述方案,所述数据排名装置还包括用户排名数据更新模块,所述用户排名数据更新模块,用于获取更新排行榜数据表的目标时间戳;响应于接收到所述排行榜数据表更新请求,检测接收到所述更新请求的时间戳是否等于或大于所述目标时间戳;若检测到所述时间戳等于或大于所述目标时间戳,则计算所述用户区域位置编码的目标周期编号,并根据所述目标周期编号更新所述用户排行榜编码数据得到目标用户排行榜编码数据;将所述更新请求中的用户更新数据插入至与所述目标用户排行榜编码数据对应的键值数据库表中,在所述键值数据库表中对所述用户更新数据进行排名,实现对所述用户排名数据的更新。
21.在本公开的一些示例实施例中,基于前述方案,所述数据排名装置还包括空闲节点更新模块,所述空闲节点更新模块,用于实时生成空闲节点集合,并检测所述空闲节点集合中是否存在故障节点集合;若检测到所述空闲节点集合中存在故障节点集合,则从所述空闲节点集合中删除所述故障节点集合,得到目标空闲节点集合;根据所述目标空闲节点集合更新所述空闲节点列表。
22.根据本公开实施例的第三方面,提供了一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述任意一项所述的数据排名方法。
23.根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据上述任意一项所述的数据排名方法。
24.本公开实施例提供的技术方案可以包括以下有益效果:
25.本公开的示例实施例中的数据排名方法,获取用户区域位置信息和用户初始数据;基于用户区域位置信息生成用户排行榜编码数据,并将用户初始数据插入至与用户排行榜编码数据对应的键值数据库表中,以在键值数据库表中对用户初始数据进行排名,得到与用户初始数据对应的用户排名数据;生成空闲节点列表,并将空闲节点列表发送至客户端;以及响应于对空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过排行榜数据拉取进程获取用户排名数据,以将用户排名数据返回至所述客户端。一方面,通过生成用户排行榜编码数据,将不同区域位置的用户初始数据插入至与用户排行榜编码数据对应的键值数据库表中,实现了用户初始数据的分散排名,避免了通过单进程对用户初始数据进行聚合排名,减缓了服务器的负载负担,提高了服务器的可靠性;另一方面,通过与用户排行榜编码数据对应的键值数据库表对用户初始数据进行排名,实现了不同区域位置的用户初始数据的并行排名,提高了用户初始数据的排名效率;再一方面,通过与用户登录客户端对应的服务端进程向键值数据库表写入用户初始数据,以及通过排行榜数据拉取进程读取用户排行数据,实现了对数据读写的分离,提高了服务端计算能力和数据冗余能力。
26.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
27.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
28.图1示意性示出了根据本公开的一些实施例的数据排名方法流程的示意图;
29.图2示意性示出了根据本公开的一些实施例的用户排行榜编码数据生成方法流程的示意图;
30.图3示意性示出了根据本公开的一些实施例的用户排名数据获取方法流程的示意图;
31.图4示意性示出了根据本公开的一些实施例的用户排名数据更新方法流程的示意图;
32.图5示意性示出了根据本公开的一些实施例的空闲节点列表更新方法流程的示意图;
33.图6示意性示出了根据本公开的一些实施例的数据排名装置的示意图;
34.图7示意性示出了根据本公开的一些实施例的电子设备的计算机系统的结构示意图;
35.图8示意性示出了根据本公开的一些实施例的计算机可读存储介质的示意图。
36.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
37.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加
全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
38.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
39.此外,附图仅为示意性图解,并非一定是按比例绘制。附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
40.在本示例实施例中,首先提供了一种数据排名方法,该数据排名方法可以应用于分布式服务器集群。图1示意性示出了根据本公开的一些实施例的数据排名方法流程的示意图。参考图1所示,该数据排名方法可以包括以下步骤:
41.步骤s110,获取用户区域位置信息和用户初始数据;
42.步骤s120,基于所述用户区域位置信息生成用户排行榜编码数据,并将所述用户初始数据插入至与所述用户排行榜编码数据对应的键值数据库表中,以在所述键值数据库表中对所述用户初始数据进行排名,得到与所述用户初始数据对应的用户排名数据;
43.步骤s130,生成空闲节点列表,并将所述空闲节点列表发送至客户端;以及
44.步骤s140,响应于对所述空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过所述排行榜数据拉取进程获取所述用户排名数据,以将所述用户排名数据返回至所述客户端。
45.根据本示例实施例中的数据排名方法,一方面,通过生成用户排行榜编码数据,将不同区域的用户初始数据插入至与用户排行榜编码数据对应的键值数据库表中,实现了用户初始数据的分散排名,避免了通过单进程对用户初始数据进行聚合排名,减缓了服务器的负载负担,提高了服务器的可靠性;另一方面,通过与用户排行榜编码数据对应的键值数据库表对用户初始数据进行排名,实现了不同区域用户初始数据的并行排名,提高了用户初始数据的排名效率;再一方面,通过与用户登录客户端对应的服务端进程向键值数据库表写入用户初始数据,以及通过排行榜数据拉取进程读取用户排行数据,实现了对数据读写的分离,提高了服务端计算能力和数据冗余能力。
46.下面,将对本示例实施例中的数据排名方法进行进一步的说明。
47.在步骤s110中,获取用户区域位置信息和用户初始数据。
48.在本公开的一个示例实施例中,用户区域位置信息可以指用户参与游戏比赛的区域位置信息,例如,用户区域位置信息可以是用户登录游戏页面的区域地理位置信息,也可以是用户申请进行游戏排名的目标区域位置信息,如用户在a区参与游戏比赛得到游戏分数后,申请查询该游戏分数在b区的排名数据,当然,用户区域位置信息还可以是其他用户参与游戏比赛的区域位置信息,本例实施例对此不作特殊限定。
49.用户初始数据可以指与用户游戏比赛相关的数据,例如,用户初始数据可以是用户的账号数据和游戏分数,也可以是用户的昵称、游戏等级数据,还可以是用户虚拟金币数据、用户虚拟能量数据,当然,用户初始数据还可以是其他与用户游戏比赛相关的数据如虚
拟装备数据,本例实施例对此不作特殊限定。
50.可以在用户登录游戏账号进入游戏状态后,通过用户界面上的lbs sdk(lacation based service soft development kit,基于位置服务的软件开发包)获取用户区域位置信息,并将用户区域位置信息发送至服务端,服务端根据国家统一的标准区域编码统计表,将用户区域位置信息转换为与用户位置信息对应的用户区域位置编码数据;其中,服务端可以指与用户登录的客户端建立通信连接的服务端。当然,也可以在客户端根据国家统一的标准区域编码统计表,将用户区域位置信息转换为与用户位置信息对应的用户区域位置编码数据,本例实施例对此不作特殊限定。
51.在步骤s120中,基于所述用户区域位置信息生成用户排行榜编码数据,并将所述用户初始数据插入至与所述用户排行榜编码数据对应的键值数据库表中,以在所述键值数据库表中对所述用户初始数据进行排名,得到与所述用户初始数据对应的用户排名数据。
52.在本公开的一个示例实施例中,用户排行榜编码数据可以指用于区别不同用户区域位置编码和游戏比赛排名周期的编码数据,例如,用户排行榜编码数据可以是由用户区域位置编码和游戏比赛的排名周期编号组成的编码数据,用户排名榜编码数据也可以是由用户区域位置编码、游戏比赛的排名周期编号、游戏名称组成的编码数据,当然,用户排行榜编码数据还可以是由其他数据组成的用于区别不同用户区域位置编码和游戏比赛排名周期的编码数据,本例实施例对此不作特殊限定。
53.键值数据库表可以指用于存储相同用户区域位置编码的用户初始数据的数据库表,例如,键值数据库表可以是基于redis(远程字典服务)的键

值数据库,也可以是基于nosql(非关系型数据库)的键

值数据库,还可以是基于riak(分布式数据库)的键

值数据库,当然,键值数据库表还可以是基于其他数据库设计的数据库表,本例实施例对此不作特殊限定。用户排名数据可以指用户的比赛名次数据。
54.可以将用户排行榜编码数据发送至与用户登录的客户端建立通信连接的服务端,该服务端向分布式服务器集群发送获取与用户排行榜编码数据对应的键值数据库表的请求,分布式服务器集群接收到该请求后,可以从各自的数据库或内存查询是否存在与该用户排行榜编码数据的键值数据库表,若存在与该用户排行榜编码数据的键值数据库表,则将键值数据库表返回至该服务端,服务端对该键值数据库表进行缓存,并将用户初始数据插入至该键值数据库表中,并对用户初始数据进行排名。由于不同用户登录不同的客户端,使得不同客户端对应的服务端均缓存了键值数据库表,实现了对键值数据库表的复制,提高了对用户初始数据和排行榜数据表的容灾能力。
55.在步骤s130中,生成空闲节点列表,并将所述空闲节点列表发送至客户端。
56.在本公开的一个示例实施例中,空闲节点列表可以指用于统计分布式服务集群中空闲节点信息的列表,例如,空闲节点列表可以是记录空闲节点的标识数据的列表,空闲节点列表也可以是记录空闲节点的可用内存大小的列表,空闲节点列表还可以是记录空闲节点的可用内存的首地址和长度等信息的列表,本例实施例对此不作特殊限定。
57.服务端可以实时获取分布式服务器集群中空闲节点信息,并更新空闲节点列表;同时若检测到空闲节点列表中存在故障节点,则删除空闲节点列表中的故障节点,将包含正常状态的空闲节点的空闲节点列表发送至客户端,以供用户从空闲节点列表中选择一个空闲节点。在检测到用户选择的空闲节点后,建立排行榜数据拉取进程,以通过排行榜数据
拉取进程从缓存或键值数据库表中获取用户排名数据,提高了用户排名数据的读取效率,也提高了分布式服务集群中空闲节点的利用率。
58.在步骤s140中,响应于对所述空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过所述排行榜数据拉取进程获取所述用户排名数据,以将所述用户排名数据返回至所述客户端。
59.在本公开的一个示例实施例中,排行榜数据拉取进程可以指用于读取与用户排行榜编码数据对应的排行榜数据表的进程。可以将空闲节点列表发送至客户端,当检测到用户对空闲节点列表的选择操作,则从空闲节点列表中匹配得到目标空闲节点,并根据空闲节点列表中目标空闲节点的可用内存信息,基于该目标空闲节点建立排行榜数据拉取进程,以通过该排行榜数据拉取进程从缓存中或与用户排行榜编码数据对应的键值数据库中获取排行榜数据表,在根据用户的标识数据如用户账号等从排行榜数据表中匹配得到与该用户账号对应的用户排名数据。
60.通过生成空闲节点列表,并将空闲节点列表发送至客户端,以检测用户对空闲节点列表的选择操作,并从空闲节点列表中确定目标空闲节点,并根据空闲节点列表中目标空闲节点的内存信息等,建立排行榜数据拉取进程,以从服务端的缓存中或与用户排行榜编码数据对应的键值数据库中读取排行榜数据表;减少了不同用户选择同一空闲节点的可能性,进而避免了空闲节点出现能力瓶颈,保障了空闲节点的高可用性,也支持多个用户并行获取用户排名数据,实现对用户排名数据读取的在线扩容。
61.图2示意性示出了根据本公开的一些实施例的用户排行榜编码数据生成方法流程的示意图。参考图2所示,该用户排行榜编码数据生成方法可以包括以下步骤:
62.在步骤s210中,获取标准区域编码统计表,并从所述标准区域编码统计表中匹配与所述用户区域位置信息对应的用户区域位置编码;
63.在步骤s220中,通过所述排行榜数据拉取进程获取所述用户区域位置编码的历史排行榜数据表,并基于所述历史排行榜数据表确定与所述用户区域位置编码对应的历史周期编号;
64.在步骤s230中,基于所述历史周期编号计算所述用户区域位置编码的当前周期编号,并基于所述用户区域位置编码和当前周期编号生成所述用户排行榜编码数据。
65.其中,标准区域编码统计表可以指区域位置信息和区域位置编码数据之间的标准映射表。用户区域位置编码可以指标准区域编码统计表中与用户区域位置信息对应的区域位置编码。历史排行榜数据表可以指统计相同用户排行榜编码数据对应的历史的排行榜数据表,例如,历史排行榜数据表可以是相同用户排行榜编码数据对应的同一游戏比赛的结算周期序号小于当前结算周期序号的排行榜数据的排行榜数据表,如当前游戏比赛的结算周期序号为3,历史排行榜数据表可以是游戏比赛的结算周期序号为2的排行榜数据,当然,历史排行榜数据表还可以是在相同游戏比赛的条件下,相同用户排行榜编码数据对应的其他多个历史结算周期序号对应的排行榜数据表,本例实施例对此不作特殊限定。
66.历史周期编号可以指与历史排行榜数据表对应的结算周期编号,例如,历史周期编号可以是与历史游戏比赛的赛季对应的结算周期编号,也可以是与历史游戏比赛的场次对应的结算周期编号,当然,历史周期编号还可以是其他与历史排行榜数据表对应的结算周期编号,本例实施例对此不作特殊限定。当前周期编号可以指结算当前游戏比赛的排行
榜数据的周期编号。
67.优选的,可以通过排行榜数据表拉取进程根据用户区域位置编码,从键值数据库表中查询与该用户区域位置编码对应的历史排行榜数据表,进而获得历史排行榜数据表对应的历史周期编号,并在检测到该历史周期编号为历史最新的周期编号时,基于该历史周期编号计算当前周期编号,如在该历史周期编号的基础上加一得到当前周期编号,从而,基于用户区域位置编码和当前周期编号可以确定当前用户游戏排行榜编码数据,将用户初始数据插入至与用户排行榜编码数据对应的键值数据库表中对用户初始数据进行排名,也可以在游戏比赛结束后,根据该排行榜编码数据从键值数据库表中或排行榜数据拉取进程对应的节点的缓存中获取排行榜数据表,并根据用户的标识数据从排行榜数据表中匹配出用户排名数据。
68.可选的,可以通过公式(1),计算当前周期编号。
69.n=(t
n

t0)/h
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
70.其中,n可以表示当前周期编号,t
n
可以表示当前周期开始时间戳,t0可以表示基准周期开始时间戳,h可以表示单次游戏比赛结算周期的时间间隔数据。
71.举例而言,游戏比赛的单场结算周期为1小时,即每隔1小时结算一下该游戏比赛的用户排名,且每天该游戏比赛的基准周期开始时间戳都是00:00:00,当前周期开始时间戳为02:00:00。同时,可以将当前周期开始时间戳转换为以秒为单位的时间戳,如02:00:00到00:00:00之间的时间间隔是7200秒,而每1小时进行一次用户排名对应的时间间隔为3600秒,则根据上述公式(1),可计算得到当前周期编号为2。进而,通过当前周期编号和用户区域位置编码即可得到用户排行榜编码数据,从而可以根据用户排行榜编码数据,将用户初始数据插入至与键值数据库表中对用户初始数据进行排名,也可以在对用户初始数据排名后,根据用户排行榜编码数据查询到当前用户的用户排名数据。
72.在本公开的示例实施例中,可以将用户初始数据插入至与用户排行榜编码数据对应的键值数据库表中,通过在键值数据库表中对用户初始数据以跳表数据结构进行排序得到用户排名数据。
73.可以通过将用户初始数据插入至与用户排行榜编码数据对应的键值数据库表中,对用户初始数据以跳表的结构进行排序和存储,避免了查询用户排名数据时,需要遍历整个键值数据库表,提高了用户排名数据的查询效率。
74.举例而言,可以基于redis数据库以zset结构对用户初始数据进行存储和排名,如将同一用户排行榜编码数据的用户初始数据插入至同一键值数据库表中,并对插入的用户初始数据如用户游戏分数按照从小到大的顺序进行排列,得到一个数据集合s,且s={20,25,33,45,66,74,76,85,96,125,130},建立s集合中每个元素的节点索引,并从s集合中随机抽取节点,作为第一层稀疏索引,如从s集合中抽取25、74、85、125对应的节点,并建立25、74、85、125对应的节点的索引作为第一层稀疏索引,同时可以从第一层稀疏索引中抽取25、85对应的节点作为第二层稀疏索引对应的节点,即当前的键值数据库表可以是一个包含两层稀疏索引和一层原始数据的数据库表。如果用户游戏分数为66,可以先在第二层稀疏索引中查找,得到66在25至85的数据区间,在进入第一层稀疏索引得到66在25至74的数据区间,进而在基础层的用户分数排序中找到66的索引,进而可以得到用户游戏分数为66的排名数据。
75.图3示意性示出了根据本公开的一些实施例的用户排名数据获取方法流程的示意图。参考图3所示,该用户排名数据获取方法可以包括以下步骤:
76.在步骤s310中,通过所述排行榜数据拉取进程解析所述用户排行榜编码数据,得到与所述用户排行榜编码数据对应的所述用户区域位置编码和当前周期编号;
77.在步骤s320中,若所述排行榜数据拉取进程检测到与所述用户区域位置编码和当前周期编号对应的缓存排行榜数据表,则获取当前时间数据,以及所述缓存排行榜数据表的生命周期数据;
78.在步骤s330中,若所述排行榜数据拉取进程检测到所述当前时间数据小于或等于所述生命周期数据,则从所述缓存排行榜数据表中匹配得到与所述用户标识数据对应的所述用户排名数据。
79.其中,当前时间数据可以指当前服务端的时间数据。生命周期数据可以指排行榜数据表的有效缓存对应的时间数据。排行榜数据表可以指相同用户排行榜编码数据对应的排行榜数据,例如,排行榜数据表可以是包含同一用户排行榜编码数据对应的用户排名数据的数据表,当然,排行榜数据表还可以是包含用户其他信息的数据表,本例实施例对此不作特殊限定。用户标识数据可以指用于区分不同用户身份的标识数据,例如,用户标识数据可以是用户的账号数据,也可以是用户昵称数据,当然,用户标识数据还可以是其他用于区分不同用户身份的标识数据,本例实施例对此不作特殊限定。
80.可以通过排行榜数据拉取进程解析用户排行榜编码数据,得到用户区域位置编码和当前周期编号,并根据用户区域位置编码和当前周期编号查询排行榜拉取进程是否存在与用户区域位置编码和当前周期编号对应的缓存排行榜数据表,若排行榜数据拉取进程存在与用户区域位置编码和当前周期编号对应的缓存排行榜数据表,则检测缓存排行榜数据表是否过期,若缓存排行榜数据表对应的有效缓存截止时间大于当前时间数据,则缓存排行榜数据表未过期,可以根据用户标识数据从缓存排行榜数据表中匹配得到用户排名数据。若与该排行榜数据表已经过期,则可以删除缓存排行榜数据表,并根据用户排行榜编码数据从键值数据库表中获取排行榜数据表,并将排行榜数据表重新缓存至内存中,以便其他用户在选择相同的排行榜拉取进程后,可以快速获取用户排名数据,也通过将上传用户初始数据和获取用户排名数据进行分离,缓解了服务端的负载负担。
81.在本公开的一个示例实施例中,若排行榜数据拉取进程检测到不存在缓存排行榜数据表,则从键值数据库表中获取与用户排行榜编码数据对应的排行榜数据表,并缓存所述排行榜数据表。
82.可以通过排行榜数据拉取进程检测是否存在与用户区域位置编码和当前周期编号对应的缓存排行榜数据表,如检测到不存在缓存排行榜数据表,可以根据用户区域位置编码和当前周期编号从键值数据库表中获取与用户区域位置编码和当前周期编号对应的排行榜数据表,并将该排行榜数据表缓存至排行榜拉取进程对应的内存中,以便其他用户在选择相同的排行榜拉取进程后,可以快速获取用户排名数据,也节省了获取用户初始数据的服务端的内存消耗,提高了用户所在服务端的运行效率和可靠性。
83.图4示意性示出了根据本公开的一些实施例的用户排名数据更新方法流程的示意图。参考图4所示,该用户排名数据更新方法可以包括以下步骤:
84.在步骤s410中,获取更新排行榜数据表的目标时间戳;
85.在步骤s420中,响应于接收到所述排行榜数据表更新请求,检测接收到所述更新请求的时间戳是否等于或大于所述目标时间戳;
86.在步骤s430中,若检测到所述时间戳等于或大于所述目标时间戳,则计算所述用户区域位置编码的目标周期编号,并根据所述目标周期编号更新所述用户排行榜编码数据得到目标用户排行榜编码数据;
87.在步骤s440中,将所述更新请求中的用户更新数据插入至与所述目标用户排行榜编码数据对应的键值数据库表中,在所述键值数据库表中对所述用户更新数据进行排名,实现对所述用户排名数据的更新。
88.其中,目标时间戳可以指触发更新排行榜数据表的时间戳。目标周期编号数据可以指更新后的周期编码数据,例如,当前周期编号为2,目标周期编号可以是对当前周期编号更新后的周期编号,如周期编号为3的周期编号,当然,目标周期编号还可以是对其他当然周期编号进行更新得到的周期编号,本例实施例对此不作特殊限定。
89.目标用户排行榜编码数据可以指更新后的用户排行榜编码数据,例如,目标用户排行榜数据可以是与目标周期编号对应的用户排行榜编码数据,当然,目标用户排行榜编码数据还可以是其他更新后的用户排行榜编码数据,本例实施例对此不作特殊限定。用户更新数据可以指更新后的用户初始数据,例如,用户更新数据可以是用户更新后的游戏分数,也可以是用户重新查询排名数据所登录新客户端的数据,当然,用户更新数据还可以是用户更新后的其他数据如用户更新后的区域位置信息对应的数据,本例实施例对此不作特殊限定。
90.可以在服务端设置定时更新排行榜数据表的定时器,在到达目标时间戳时,触发更新排行榜数据表,且目标时间戳可以与游戏比赛的单次游戏比赛结算周期的时间间隔数据对应。当接收到排行榜数据表更新请求时,确定接收到排行榜数据表更新请求对应的时间戳是否等于或大于目标时间戳。若排行榜数据表更新请求对应的花时间戳等于或大于目标时间戳,则计算目标周期编号,并基于目标周期编号更新当前排行榜数据表对应用户排行榜编码数据,以将用户更新数据插入至与目标用户排行榜编码数据对应的键值数据库表中,对用户更新数据进行排名。若接收到排行榜数据表更新请求的时间戳,则不需要更新当前排行榜数据表对应的用户排行榜编码数据,只需要根据用户标识数据从与当前排行榜数据表对应的键值数据库表中剔除原有的用户初始数据,并对用户更新数据进行重新排名,实现了对排行榜数据表和用户排名数据的实时更新,提高了用户初始数据的排名准确率。
91.若用户更新数据中包含用户区域位置信息的更新,则需要对用户区域位置信息进行重新编码得到目标用户区域位置编码,并检测接收到排行榜数据表更新请求对应的时间戳是否等于或大于目标时间戳,若排行榜数据表更新请求对应的花时间戳等于或大于目标时间戳,则计算目标周期编号,并基于目标用户区域位置编码和目标周期编号更新用户排行榜编码数据得到目标用户排行榜编码数据,并将用户更新数据插入至与目标用户排行榜编码数据对应的键值数据库表,对用户更新数据进行重新排名,提高更新用户排名数据的实时性和用户排名数据的真实性。
92.图5示意性示出了根据本公开的一些实施例的空闲节点列表更新方法流程的示意图。参考图5所示,该空闲节点列表更新方法可以包括以下步骤:
93.在步骤s510中,实时生成空闲节点集合,并检测所述空闲节点集合中是否存在故
障节点集合;
94.在步骤s520中,若检测到所述空闲节点集合中存在故障节点集合,则从所述空闲节点集合中删除所述故障节点集合,得到目标空闲节点集合;
95.在步骤s530中,根据所述目标空闲节点集合更新所述空闲节点列表。
96.其中,空闲节点集合可以指分布式服务器集群中无状态节点对应的集合。故障节点集合可以指分布式服务器集群中无法响应于客户端请求的节点集合。目标空闲节点集合可以指从空闲节点集合中剔除故障节点集合后得到的空闲节点集合。
97.由于分布式服务器集群中各个服务器可以通过点对点协议或主从架构进行通信,使得获取分布式服务器集群中空闲节点集合较为方便。服务端在得到空闲节点集合后,可以检测空闲节点集合中是否存在故障节点集合,若空闲节点集合中存在故障节点集合,则删除空闲节点集合中的故障节点集合,得到目标空闲节点集合,并根据目标空闲节点集合更新当前空闲节点列表,实现对空闲节点列表的实时更新。
98.通过将实时更新的空闲节点列表发送至客户端,以供客户端从空闲节点列表中选择目标空闲节点,并基于目标空闲节点建立一个进程用于拉取排行榜数据表。由于空闲节点列表中存在多个空闲节点,使得排行榜数据拉取进程是基于多节点部署的,且空闲节点列表中的空闲节点均是无故障节点,保障了客户端可以并行且实时的获取用户排名数据,提高了用户获取用户排名数据的可靠性。
99.需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
100.此外,在本示例实施例中,还提供了一种数据排名装置。参照图6所示,该数据排名装置600包括:数据获取模块610、排行榜编码数据生成模块620、空闲节点列表发送模块630、数据拉取进程建立模块640。其中:数据获取模块610,获取用户区域位置信息和用户初始数据;排行榜编码数据生成模块620,基于所述用户区域位置信息生成用户排行榜编码数据,并将所述用户初始数据插入至与所述用户排行榜编码数据对应的键值数据库表中,以在所述键值数据库表中对所述用户初始数据进行排名,得到与所述用户初始数据对应的用户排名数据;空闲节点列表发送模块630,生成空闲节点列表,并将所述空闲节点列表发送至客户端;数据拉取进程建立模块640,响应于对所述空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过所述排行榜数据拉取进程获取所述用户排名数据,以将所述用户排名数据返回至所述客户端。
101.在本公开的一些示例实施例中,基于前述方案,所述排行榜编码数据生成模块620还包括排行榜编码生成单元,所述排行榜编码生成单元,用于获取标准区域编码统计表,并从所述标准区域编码统计表中匹配与所述用户区域位置信息对应的用户区域位置编码;通过所述排行榜数据拉取进程获取所述用户区域位置编码的历史排行榜数据表,并基于所述历史排行榜数据表确定所述用户区域位置编码对应的历史周期编号;基于所述历史周期编号计算所述用户区域位置编码的当前周期编号,并基于所述用户区域位置编码和当前周期编号生成所述用户排行榜编码数据。
102.在本公开的一些示例实施例中,基于前述方案,所述排行榜编码数据生成模块620
还包括数据插入单元,所述数据插入单元,用于将所述用户初始数据插入至所述键值数据库表中,得到所述用户排名数据;用户排名数据是通过在所述键值数据库表中对所述用户初始数据以跳表数据结构进行排序得到的。
103.在本公开的一些示例实施例中,基于前述方案,所述数据排名装置600还包括用户排名数据获取模块,所述用户排名数据获取模块,用于通过所述排行榜数据拉取进程解析所述用户排行榜编码数据,得到与所述用户排行榜编码数据对应的所述用户区域位置编码和当前周期编号;若所述排行榜数据拉取进程检测到与所述用户区域位置编码和当前周期编号对应的缓存排行榜数据表,则获取当前时间数据,以及所述缓存排行榜数据表的生命周期数据;若所述排行榜数据拉取进程检测到所述当前时间数据小于或等于所述生命周期数据,则从所述缓存排行榜数据表中匹配得到与所述用户标识数据对应的所述用户排名数据。
104.在本公开的一些示例实施例中,基于前述方案,所述数据拉取进程建立模块630还包括数据检测单元,所述数据检测单元,用于通过所述排行榜拉取节点检测是否存在所述缓存排行榜数据表,若所述排行榜数据拉取进程检测到不存在所述缓存排行榜数据表,则从所述键值数据库中获取与所述用户排行榜编码数据对应的排行榜数据表,并缓存所述排行榜数据表。
105.在本公开的一些示例实施例中,基于前述方案,所述数据排名装置600还包括用户排名数据更新模块,所述用户排名数据更新模块,用于获取更新排行榜数据表的目标时间戳;响应于接收到所述排行榜数据表更新请求,检测接收到所述更新请求的时间戳是否等于或大于所述目标时间戳;若检测到所述时间戳等于或大于所述目标时间戳,则计算所述用户区域位置编码的目标周期编号,并根据所述目标周期编号更新所述用户排行榜编码数据得到目标用户排行榜编码数据;将所述更新请求中的用户更新数据插入至与所述目标用户排行榜编码数据对应的键值数据库表中,在所述键值数据库表中对所述用户更新数据进行排名,实现对所述用户排名数据的更新。
106.在本公开的一些示例实施例中,基于前述方案,所述数据排名装置600还包括空闲节点更新模块,所述空闲节点更新模块,用于实时生成空闲节点集合,并检测所述空闲节点集合中是否存在故障节点集合;若检测到所述空闲节点集合中存在故障节点集合,则从所述空闲节点集合中删除所述故障节点集合,得到目标空闲节点集合;根据所述目标空闲节点集合更新所述空闲节点列表。
107.上述中数据排名装置各模块的具体细节已经在对应的数据排名方法中进行了详细的描述,因此此处不再赘述。
108.应当注意,尽管在上文详细描述中提及了数据排名装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
109.此外,在本公开的示例性实施例中,还提供了一种能够实现上述数据排名方法的电子设备。
110.所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全
的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
111.下面参照图7来描述根据本公开的这种实施例的电子设备700。图7所示的电子设备700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
112.如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740。
113.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,所述处理单元710可以执行如图1中所示的步骤s110,获取用户区域位置信息和用户初始数据;步骤s120,基于所述用户区域位置信息生成用户排行榜编码数据,并将所述用户初始数据插入至与所述用户排行榜编码数据对应的键值数据库表中,以在所述键值数据库表中对所述用户初始数据进行排名,得到与所述用户初始数据对应的用户排名数据;步骤s130,生成空闲节点列表,并将所述空闲节点列表发送至客户端;步骤s140响应于对所述空闲节点列表的选择操作,建立排行榜数据拉取进程,并通过所述排行榜数据拉取进程获取所述用户排名数据,以将所述用户排名数据返回至所述客户端。
114.存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)721和/或高速缓存存储单元722,还可以进一步包括只读存储单元(rom)723。
115.存储单元720还可以包括具有一组(至少一个)程序模块725的程序/实用工具724,这样的程序模块725包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
116.总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
117.电子设备700也可以与一个或多个外部设备770(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
118.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
119.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能
够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
120.参考图8所示,描述了根据本公开的实施例的用于实现上述数据排名方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd

rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
121.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
122.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
123.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
124.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
125.此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
126.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施例的方法。
127.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其
它实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
128.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜