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

一种数据排序方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:29:13


一种数据排序方法、装置、电子设备及存储介质

技术领域

本申请涉及数据处理的技术领域,具体而言,涉及一种数据排序方法、装置、电子设备及存储介质。

背景技术

当前社会,互联网已经深入人们生活的方方面面,由此产生了海量的数据。随着用户的不断增多,同一类型数据的数据量也不断增大,此种情况下,由于硬件资源的限制,对同一类型的数据进行整体排序也越发困难。

发明内容

本申请的提供一种数据排序方法、装置、电子设备及存储介质,以解决现有技术中由于硬件资源的限制,难以对同一类型的数据进行整体排序的问题。

第一方面,本申请提供一种数据排序方法,包括:获取用户数据,其中,所述用户数据包括基本数据和用户身份信息;根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端,以使所述处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序;接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果;将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果。

在本申请实施例中,根据获取的用户数据中包括的用户身份信息,将该用户身份信息对应的用户数据分配到对应的处理终端,以使该处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序,再接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果,并将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果,从而实现通过多台处理终端对用户数据进行排序,以降低对处理终端硬件的要求,达到对同一类型的数据进行整体排序的目的。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端,包括:对所述用户身份信息进行哈希计算,得到哈希值;从预设的分配数据表中查找出与所述哈希值对应的处理终端;将该用户身份信息对应的用户数据分配到与所述哈希值对应的处理终端。

在本申请实施例中,通过对用户身份信息进行哈希计算,从而得到哈希值,然后在预设的分配数据表中查找出与该哈希值对应的处理终端,并将用户身份信息对应的用户数据分配到与该哈希值对应的处理终端,保证同一用户的用户数据分配到同一处理终端,避免出现同一用户的用户数据被分配到多个处理终端上,导致在最终排序中同一用户拥有多个排名。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果,包括:按预设的时间间隔向每台处理终端发送数据获取请求;接收每台处理终端响应数据获取请求发送的各自对接收到的所有用户数据进行排序的排序结果。

在本申请实施例中,通过预设的时间间隔向每台处理终端发送数据获取请求,并接收每台处理终端响应数据获取请求发送的各自对接收到的所有用户数据进行排序的排序结果,通过多台处理终端对各自对接收到的所有用户数据进行排序,降低最终排序的工作量,同时按照预设的时间间隔获取最新的每台处理终端发送的排序结果,保证数据的实时性和准确性。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果,包括:将接收到的所有排序结果进行合并,并对合并后的数据添加版本号,得到包含版本号和所有用户数据的总排序结果,所述版本号用于表征总排序结果的排序时间,将所述总排序结果发送给推送终端,以使所述用户通过访问所述推送终端获取总排序结果。

在本申请实施例中,通过对合并后的数据添加用于表征总排序结果的排序时间版本号,得到包含版本号和所有用户数据的总排序结果,使得后续通过该版本号可判断当前的总排序结果是否为最新版本,同时,将总排序结果发送给推送终端,用户通过访问该推送终端获取总排序结果,减轻了中心处理器的压力,并打破了单台计算机的物理资源的限制,能同时处理更多的用户请求。

第二方面,本申请提供一种数据排序装置,包括:获取模块、分配模块、接收模块和合并模块。其中,所述获取模块用于获取用户数据,其中,所述用户数据包括基本数据和用户身份信息;所述分配模块用于根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端,以使所述处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序;所述接收模块用于接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果;所述合并模块用于将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果。

结合上述第二方面提供的技术方案,在一些可能的实施方式中,所述分配模块包括计算模块和处理模块。其中,所述计算模块用于对所述用户身份信息进行哈希计算,得到哈希值;所述处理模块用于从预设的分配数据表中查找出与所述哈希值对应的处理终端;所述处理模块还用于将该用户身份信息对应的用户数据分配到与所述哈希值对应的处理终端。

结合上述第二方面提供的技术方案,在一些可能的实施方式中,所述接收模块具体用于按预设的时间间隔向每台处理终端发送数据获取请求,接收每台处理终端响应数据获取请求发送的各自对接收到的所有用户数据进行排序的排序结果。

结合上述第二方面提供的技术方案,在一些可能的实施方式中,所述合并模块具体用于将接收到的所有排序结果进行合并,并对合并后的数据添加版本号,得到包含版本号和所有用户数据的总排序结果,所述版本号用于表征总排序结果的排序时间,所述合并模块还用于将所述总排序结果发送给推送终端,以使所述用户通过访问所述推送终端获取总排序结果。

第三方面,本申请实施例提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式的方法。

第四方面,本申请实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被计算机运行时,执行如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式的方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例示出的一种数据排序方法的流程示意图;

图2为本申请实施例示出的一种系统构架的示意图;

图3为本申请实施例示出的一种数据排序装置的结构框图;

图4为本申请实施例示出的电子设备结构示意图。

具体实施方式

在本申请的描述中,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。

下面将结合附图对本申请的技术方案进行清楚、完整地描述。

请参阅图1,如图1所示为本申请实施例提供的一种数据排序方法,下面将结合图1对其包含的步骤进行说明。

步骤S100:获取用户数据,其中,所述用户数据包括基本数据和用户身份信息。

获取包括基本数据和用户身份信息的用户数据,其中,上述用户数据可以是预先得到的,并保存在数据库或磁盘中的,在需要时直接获取即可,或者,是在需要使用用户数据时,实时测量得到的。

其中,一种实施方式下,上述用户数据中的基本数据由数字组成,或者上述用户数据中的基本数据由数字和字母组成,其中字母可用于表征数据的种类。基本数据可以是运动数据,例如行走步数、运动距离等数据,或者该基本数据还可以是其他可以排序的数据,例如考试分数、收入、税收、汽车寿命等数据。

一种实施方式下,上述用户数据中的用户身份数据可以是用户ID、身份证号码、银行卡号码等仅用于表征唯一用户身份的数据,或者是设备的MAC(Media Access ControlAddress,局域网地址)地址、SN(Serial Number,产品序列号)序列号等。

步骤S200:根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端,以使所述处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序。

基于上述用户数据中的用户身份信息来将用户数据分配到对应的处理终端,处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序,其中,排序的方式可以是根据基本数据的大小进行排序。

其中,根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端的方法可以是:首先对用户身份信息进行哈希计算,得到哈希值,然后从预设的分配数据表中查找出与该哈希值对应的处理终端,再将该用户身份信息对应的用户数据分配到与该哈希值对应的处理终端。可选的,还可以采用其他的算法对用户身份信息进行计算。

一种实施方式下,当基本数据中仅包括一种数据时,处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序。另一种实施方式下,当基本数据中包括多种数据时,根据不同种类数据对应的预设的权重值,进行加权平均计算,得到基本数据的排序数据,根据排序数据对接收到的所有用户数据进行排序。例如当基本数据包括行走步数、行走距离两种数据时,行走步数的预设权重为0.6,行走距离预设权重为0.4时,则排序数据=0.6*行走步数+0.4*行走距离。此处的距离仅为便于理解,不应作为对本申请的限制。

步骤S300:接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果。

一种实施方式下,为了同时获取所有处理终端的各自对接收到的所有用户数据进行排序的排序结果,可以先按预设的时间间隔向每台处理终端发送数据获取请求,然后接收每台处理终端响应数据获取请求发送的各自对接收到的所有用户数据进行排序的排序结果。其中,预设的时间间隔可以根据实际需求确定,例如可以是1毫秒、1秒、1分钟、1小时、一天等等,上述举例仅为了便于理解,不应作为对本申请的限制。另一种实施方式下,可以使处理终端按照预设的时间定时发送对接收到的所有用户数据进行排序的排序结果。

步骤S400:将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果。

将接收到的所有排序结果进行合并,由于每台处理终端已分别对部分数据进行了排序,因此,中心处理器可将所有排序结果进行合并,得到包含所有用户数据的总排序结果。

例如,当处理终端的数量为3台,且第一台处理终端的排序结果中包含10个用户的数据,第二台处理终端的排序结果中包含15个用户的数据,第三台处理终端的排序结果中包含5个用户的数据,则当中心处理器接收到该3台处理终端发送的排序结果后,将三个排序结果进行合并及排序,得到包含30个用户数据的总排序结果。由于每台处理终端已经对自身接收到的用户数据进行了排序,因此,中心处理器再次进行排序时,无需遍历所有数据,只需要将三个排序结果进行横向对比,即可得到总排序结果,即将三个排序结果中用户数据的最大值进行比较,即可得到总排序结果的最大值,然后将最大值所在的排序结果中用户数据的第二大的值与另外两个表的最大值进行比较,得到总排序结果的第二大值,以此类推,直至完成所有用户数据的排序。

一种实施方式下,在将接收到的所有排序结果进行合并后,还可以对合并后的数据添加版本号,得到包含版本号和所有用户数据的总排序结果,版本号用于表征总排序结果的排序时间。例如,在2021年1月1日12时25分36秒完成对所有排序结果进行合并,则版本号可以是2021-1-1-12-25-36,其中该时间的精确度与上述的时间间隔的精确度相同,或该时间的精确度比上述的时间间隔的精确度更高,例如,当时间间隔为毫秒级时,版本号的精确度也应当为毫秒级;或者当时间间隔精确到秒时,版本号应当精确到毫秒或秒。通过版本号可以判断该总排序结果是否为最新版本。

为了便于用户读访问读取该总排序结果,一种实施方式下,中心处理器可以将该总排序结果发送至推送终端,用户通过访问推送终端获得总排序结果,从而降低中心处理器的工作量。由于每台计算机的读写吞吐量都是有限的,当同时访问的用户数量过大时,一台中心处理器无法承载海量用户同时的读写请求,因此中心处理器将总排序结果发送至推送终端,使用户通过访问推送终端获得总排序结果,打破了单台计算机的物理资源的限制,其中,推送终端可以有多个。当用户第一次获取总排序结果时,直接读取推送终端中的总排序结果,当用户再次获取总排序结果时,用户终端比较推送终端中的总排序结果与用户终端已获取的总排序结果的版本号,若版本号已更新,读取更新后的总排序结果,若版本号未更新,则放弃读取并结束进程。

运行如图1所示的方法的系统架构如图2所示,其中,该系统架构包括接入层、路由层、缓存层、控制层。

接入层包含连接控制、鉴权、数据校验模块,其中,连接控制模块负责维护与客户端的连接,鉴权模块负责客户端鉴权,数据校验模块负责校验客户端上报的运动数据,避免非法数据污染后续流程。

路由层包括转发模块和哈希分桶两部分,其中,转发模块的作用是将请求转发到缓存层的对应机器上,哈希分桶的作用是将接入层的请求拆分。哈希分桶有多种哈希算法,可以将用户数据分散到各个机器上。一种实施方式下,通过用户身份信息(例如用户ID)对哈希桶数量取模,另一种实施方式下,采用一致性哈希算法将用户身份信息(例如用户ID)分散在多个哈希槽中,再将哈希槽分配到各个桶。

缓存层主要包含缓存和数据汇总模块两部分,其中,缓存分为写缓存和读缓存,写缓存和读缓存各包含多个机器;数据汇总模块负责将写缓存中的数据汇总为整体排序后的数据,并将汇总结果发送到读缓存。数据汇总流程为,当定时器超时后,数据汇总模块将写缓存中的数据取出并合并为汇总后的数据,再将自增后的版本号一并推送到读缓存中,然后等待下次定时器超时。

控制层包含配置模块以及监控和告警模块,其中,配置模块保存了整个系统的配置,包括个模块注册信息、哈希规则、任务周期、缓存地址等;监控和告警模块负责整体系统的各项数据监控和告警,定时任务模块负责驱动缓存层的数据汇总任务。

请参阅图3,图3为本申请实施例提供的一种数据排序装置100,该装置包括获取模块110、分配模块120、接收模块130、合并模块140。

获取模块110,用于获取用户数据,其中,所述用户数据包括基本数据和用户身份信息。

分配模块120,用于根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端,以使所述处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序。分配模块还包括计算模块和处理模块,计算模块,用于对所述用户身份信息进行哈希计算,得到哈希值;处理模块,用于从预设的分配数据表中查找出与所述哈希值对应的处理终端。

接收模块130,用于接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果。

接收模块130具体用于按预设的时间间隔向每台处理终端发送数据获取请求,接收每台处理终端响应数据获取请求发送的各自对接收到的所有用户数据进行排序的排序结果。

合并模块140,用于将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果。

合并模块140具体用于将接收到的所有排序结果进行合并,并对合并后的数据添加版本号,得到包含版本号和所有用户数据的总排序结果,所述版本号用于表征总排序结果的排序时间,该合并模块还用于将所述总排序结果发送给推送终端,以使所述用户通过访问所述推送终端获取总排序结果。

请参阅图4,其为本申请实施例提供的一种电子设备200。所述电子设备200包括:收发器210、存储器220、通讯总线230、处理器240。

所述收发器210、所述存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图3中所示的软件功能模块,即数据排序装置100。其中,数据排序装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作系统(operating system,OS)中的软件功能模块。所述处理器240,用于执行存储器220中存储的可执行模块,例如数据排序装置100包括的软件功能模块或计算机程序。例如,获取用户数据,其中,所述用户数据包括基本数据和用户身份信息;根据所述用户身份信息将该用户身份信息对应的用户数据分配到对应的处理终端,以使所述处理终端根据接收到的用户数据中的基本数据对接收到的所有用户数据进行排序;接收每台处理终端发送的各自对接收到的所有用户数据进行排序的排序结果;将接收到的所有排序结果进行合并,得到包含所有用户数据的总排序结果。

其中,存储器220可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。

处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器240也可以是任何常规的处理器等。

其中,上述的电子设备200,包括但不限于个人电脑、服务器等。

本申请实施例还提供了一种非易失性计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的数据排序方法。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 数据排序方法、数据排序装置、电子设备及可读存储介质
  • 一种数据排序方法、装置、电子设备及存储介质
技术分类

06120112941840