一种数据累计方法、装置及电子设备与流程

文档序号:14677081发布日期:2018-06-12 21:38阅读:181来源:国知局
一种数据累计方法、装置及电子设备与流程

本申请涉及数据处理技术领域,具体涉及一种数据累计方法、装置及电子设备。本申请同时涉及一种数据累计系统,一种数据排序系统,一种数据累计方法、装置及电子设备,以及一种数据排序方法、装置及电子设备。



背景技术:

对于大流量的业务数据统计,目前主要采用实时累加统计请求量的处理方式,即:服务器每接收到一个用户请求,就直接更新对应的统计数据;这种处理方式,将所有请求全都归置到一个存储系统写入;因此,存储系统的写入操作固然成为一个性能瓶颈点。例如,利用TAIR计数器实时增加用户的数据,每一次请求都是一次对中间件TAIR(键值对结构数据存储系统)的写入,在大流量高并发请求的情况下,将对第三方存储系统的性能造成非常大的冲击。

服务器承受前台业务的请求量毕竟是有限,若要满足持续、扩大的业务前台请求,无限扩容机器,也是治标不治本的做法。例如,在双11晚会直播过程中,粉丝对明星的炙热之情,不断为自己喜爱的明星疯狂点赞,如一场DDOS攻击,无法预知将会涌来多少点赞请求量。服务器机器数毕竟有限,且还要承载其他的业务,故必须需要一套高效理性的架构,在尽可能不增加服务器资源的情况下,去承接这样类似的大流量统计型玩法。

因此,如何研究和开发出一种新的数据累计方式,其能够降低对数据存储系统的性能影响成为本领域技术人员迫切需要解决的问题。



技术实现要素:

本申请提供一种数据累计方法、装置及电子设备,以解决现有技术对数据存储系统写性能的依赖成本高的问题。本申请另外提供一种数据累计系统,一种数据排序系统,一种数据累计方法、装置及电子设备,以及一种数据排序方法、装置及电子设备。

本申请提供一种数据累积方法,包括:

接收针对特定业务指标的数据累计请求;

根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据;

根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

可选的,所述根据所述数据更新请求,并对所述特定业务指标的数据进行累计,采用如下方式:

根据所述数据更新请求,在内存中对所述特定业务指标的数据进行累计。

可选的,所述预设的存储系统包括键值对结构数据存储系统,将所述特定业务指标的指标标识作为键,将所述完整累计数据作为值。

可选的,若所述累计后的完整累计数据超过所述键值对结构数据存储系统能表示的最大数值,则将累计数据产生的进位值存储在新的键值对中。

可选的,所述预设的存储系统包括数据库系统。

可选的,所述将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,包括:

根据所述特定业务指标的指标标识,获取所述完整累计数据;

根据所述局部累计数据和获取到的完整累计数据,计算生成累计后的完整累计数据;

将存储在所述预设的存储系统中的所述完整累计数据更新为累计后的完整累计数据。

可选的,所述预设的存储系统部署在多个数据累计装置共用的存储设备中。

可选的,所述清理所述局部累计数据,采用如下方式:

将所述局部累计数据减去本次累计到所述完整累计数据中的数据。

本申请另外提供一种数据累计装置,包括:

接收单元,用于接收针对特定业务指标的数据累计请求;

局部累计单元,用于根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据;

完整累计单元,用于根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

本申请另外提供一种电子设备,包括:

处理器;以及

存储器,用于存储实现数据累计方法的程序,该设备通电并通过所述处理器运行该数据累计方法的程序后,执行下述步骤:接收针对特定业务指标的数据累计请求;根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据;根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

本申请另外提供一种数据累计系统,包括:至少一个所述数据累计装置,用于存储特定业务指标的完整累计数据的存储系统,以及至少一个用于请求数据累计的装置;

所述用于请求数据累计的装置,包括:

请求发送单元,用于向部署所述数据累计装置的计算设备发送针对特定业务指标的数据累计请求。

本申请另外提供一种数据排序系统,包括:数据排序装置、至少一个数据累计装置;

所述数据累计装置包括:

第一请求接收单元,用于接收特定用户针对特定业务指标的数据累计请求;

数据累计单元,用于更新所述特定用户对所述特定业务指标的用户累积数据;

第一数据排序单元,用于根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户;

所述数据排序装置包括:

第二请求接收单元,用于接收针对所述特定业务指标对应的用户累积数据排行榜的数据获取请求;

数据获取单元,用于获取所述至少一个数据累计装置对应的至少一个用户累计数据本机排行榜;

第二数据排序单元,用于根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;

数据回送单元,用于向所述数据获取请求的发起方回送所述用户累计数据总排行榜。

可选的,所述数据排序系统还包括:至少一个用于请求数据累计的装置、至少一个用于请求数据排序的装置;

所述用于请求数据累计的装置包括:

第一请求发送单元,用于向部署所述数据累计装置的计算设备发送特定用户针对特定业务指标的数据累计请求;

所述用于请求数据排序的装置包括:

第二请求发送单元,用于向部署所述数据排序装置的计算设备发送针对特定业务指标的用户累积数据排行榜的数据获取请求。

可选的,所述第一数据排序单元包括:

本机排行榜获取子单元,用于获取所述用户累计数据本机排行榜;

判断子单元,用于判断所述特定用户的用户累计数据是否大于所述用户累计数据本机排行榜中用户累计数据的最低值,若判断结果为是,则判断所述特定用户是否在所述用户累计数据本机排行榜中,若判定所述特定用户未在所述用户累计数据本机排行榜中,则启动第一本机排行榜调整子单元,若判定所述特定用户在所述用户累计数据本机排行榜中,则启动第二本机排行榜调整子单元;

第一本机排行榜调整子单元,用于将所述最低值对应的用户从所述用户累计数据本机排行榜中清除;以及,将所述特定用户及其对应的用户累计数据添加到所述用户累计数据本机排行榜中;

第二本机排行榜调整子单元,用于根据所述特定用户的用户累计数据,更新所述用户累计数据本机排行榜中所述特定用户对应的用户累计数据。

可选的,所述数据累计装置还包括:

数据上报单元,用于根据预设的时间间隔,将所述用户累计数据本机排行榜存储到所述至少一个数据累计装置共用的存储系统中,更新所述存储系统中存储的对应排行榜数据;

所述数据获取单元,具体用于从所述存储系统中读取所述至少一个用户累计数据本机排行榜。

可选的,所述第二数据排序单元包括:

去重子单元,用于从所述至少一个用户累计数据本机排行榜中去除重复出现的同一用户对应的用户累计数据的最低值;

排序子单元,用于根据用户累计数据对去重后的所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

本申请另外提供一种数据累计方法,包括:

接收特定用户针对特定业务指标的数据累计请求;

更新所述特定用户对所述特定业务指标的用户累积数据;

根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

可选的,所述根据所述用户累积数据,并调整所述特定业务指标对应的用户累计数据本机排行榜,包括:

获取所述用户累计数据本机排行榜;

判断所述特定用户的用户累计数据是否大于所述用户累计数据本机排行榜中用户累计数据的最低值,若是,则进入下一步;

判断所述特定用户是否在所述用户累计数据本机排行榜中,若是,则根据所述特定用户的用户累计数据,更新所述用户累计数据本机排行榜中所述特定用户对应的用户累计数据;若否,则将所述最低值对应的用户从所述用户累计数据本机排行榜中清除,并将所述特定用户及其对应的用户累计数据添加到所述用户累计数据本机排行榜中。

可选的,所述数据累计方法还包括:

根据预设的时间间隔,将所述用户累计数据本机排行榜存储到至少一个数据累计装置共用的存储系统中,更新所述存储系统中存储的对应排行榜数据。

本申请另外提供一种数据累计装置,包括:

接收单元,用于接收特定用户针对特定业务指标的数据累计请求;

更新单元,用于更新所述特定用户对所述特定业务指标的用户累积数据;

调整单元,用于根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

本申请另外提供一种电子设备,包括:

处理器;以及

存储器,用于存储实现数据累计方法的程序,该设备通电并通过所述处理器运行该数据累计方法的程序后,执行下述步骤:接收特定用户针对特定业务指标的数据累计请求;更新所述特定用户对所述特定业务指标的用户累积数据;根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

本申请另外提供一种数据排序方法,包括:

接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求;

获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成;

根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;

向请求的发起方回送所述用户累计数据总排行榜。

可选的,所述获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,采用如下方式:

从所述至少一个数据累计装置共用的存储系统中读取所述至少一个用户累计数据本机排行榜。

可选的,所述根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,并获得所述特定业务指标对应的用户累计数据总排行榜,包括:

从所述至少一个用户累计数据本机排行榜中去除重复出现的同一用户对应的用户累计数据的最低值;

根据用户累计数据对去重后的所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

本申请另外提供一种数据排序装置,包括:

接收单元,用于接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求;

获取单元,用于获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成;

排序单元,用于根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;

回送单元,用于向请求的发起方回送所述用户累计数据总排行榜。

本申请另外提供一种电子设备,包括:

处理器;以及

存储器,用于存储实现数据排序方法的程序,该设备通电并通过所述处理器运行该数据排序方法的程序后,执行下述步骤:接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求;获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成;根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;向请求的发起方回送所述用户累计数据总排行榜。

本申请另外提供一种数据累计方法,包括:

接收针对特定网页的访问请求;

对所述特定网页相关的业务指标进行累计,将该累计数据作为局部累计数据;

根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述业务指标的完整累计数据中,并清理所述局部累计数据。

可选的,所述业务指标包括:页面浏览量,独立访客数。

本申请另外提供一种数据累计装置,包括:

接收单元,用于接收针对特定网页的访问请求;

局部累计单元,用于对所述特定网页相关的业务指标进行累计,将该累计数据作为局部累计数据;

完整累计单元,用于根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述业务指标的完整累计数据中,并清理所述局部累计数据。

本申请另外提供一种电子设备,包括:

处理器;以及

存储器,用于存储实现数据累计方法的程序,该设备通电并通过所述处理器运行该数据累计方法的程序后,执行下述步骤:接收针对特定网页的访问请求;对所述特定网页相关的业务指标进行累计,将该累计数据作为局部累计数据;根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述业务指标的完整累计数据中,并清理所述局部累计数据。

与现有技术相比,本申请具有以下优点:

本申请提供的数据累计方法,通过接收针对特定业务指标的数据累计请求,并根据该数据累计请求对该特定业务指标的数据进行累计,将该累计数据作为该特定业务指标的局部累计数据,然后根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据;这种处理方式,采用超时上报策略,将用户级别的数据统计规整合并为业务级别的数据统计,可以将上百万的业务请求写操作降低至千至百级别以下;因此,可以有效降低对数据存储系统写性能的依赖成本。

附图说明

图1是本申请提供的一种数据累计方法的实施例的流程图;

图2是本申请提供的一种数据累计装置的实施例的示意图;

图3是本申请提供的一种电子设备的实施例的示意图;

图4是本申请提供的一种数据累计系统的实施例的示意图;

图5是本申请提供的一种数据累计系统的实施例的具体示意图;

图6是本申请提供的一种数据排序系统的实施例的示意图;

图7是本申请提供的一种数据排序系统的实施例的具体示意图;

图8是本申请提供的又一种数据累计方法的实施例的流程图;

图9是本申请提供的又一种数据累计装置的实施例的示意图;

图10是本申请提供的又一种电子设备的实施例的示意图;

图11是本申请提供的一种数据排序方法的实施例的流程图;

图12是本申请提供的一种数据排序装置的实施例的示意图;

图13是本申请提供的一种电子设备的实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请中,提供了一种数据累计方法、装置及电子设备,一种数据累计系统,一种数据排序系统,一种数据累计方法、装置及电子设备,以及一种数据排序方法、装置及电子设备。在下面的实施例中逐一进行详细说明。

本申请提供的数据累计方法,其核心的基本思想为:采用超时上报策略,将用户级别的数据统计规整合并为业务级别的数据统计。由于避免实时点对点上报的存储方式,无需将所有请求全都归置到一个存储系统写入,因而,可以有效降低对数据存储系统写性能的依赖成本。

请参考图1,其为本申请的数据累计方法实施例的流程图。所述方法包括如下步骤:

步骤S101:接收针对特定业务指标的数据累计请求。

所述特定业务指标,可以是用户投票数、用户点赞数等业务指标。以用户投票数为例,当用户A在手机客户端观看直播现场视频时,可以向服务器发送针对某个明星的投票请求,假如用户A要为“蔡琴”投票,则相应的特定业务指标为“蔡琴的用户投票数”。

所述数据累计请求,可以为类似用户投票的请求,也可以为用户针对特定网页的访问请求。当数据累计请求为用户针对特定网页的访问请求时,所述特定业务指标可以为页面浏览量、独立访客数等业务指标。当数据累计请求为类似用户投票的请求时,请求可包括用户本次投票数,当该请求不包括用户本次投票数时,可以默认为一票。

接收到针对特定业务指标的数据累计请求之后,就可以进入到下一步,根据所述数据累计请求,对所述特定业务指标的数据进行累计。

步骤S103:根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据。

本申请提供的数据累计方法,不采用传统的实时点(处理数据累计请求的设备)对点(如:第三方存储系统)上报的存储方式,而是采用超时上报策略,将用户级别(上报次数等于收到的数据累计请求次数)的数据统计规整合并为业务级别(上报次数小于收到的数据累计请求次数)的数据统计;这种处理方式,可以将上百万的业务请求写降低至千至百级别以下;因此,可以有效降低对存储系统写性能的依赖成本。

基于上述分析可知,当运行本申请提供的方法的设备接收到所述数据累计请求时,将首先需要在本机对所述特定业务指标的数据进行累计,由于该累计数据会根据预设的时间间隔定时上报到存储系统,并会在上报成功后被清理,因此,该累计数据实质为局部累计数据,即:一段时间内的累计数据。

所述局部累计数据,可以存储在缓存或硬盘等存储设备中,也可以存储在内存中,即在内存中对所述特定业务指标的数据进行累计。由于相邻两次上报局部累计数据的时间间隔通常较短(如:2秒钟),因此,在内存中对所述特定业务指标的数据进行累计是一种优选的方案。

在分布式系统架构下,可以封装一个并发原子性的内存数据结构工具类,通过调用该工具类可实现在内存中对所述特定业务指标的数据进行累计的处理。

步骤S105:根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

在当前时间距离上一次上报局部累计数据的时间间隔达到预设的时间间隔的情况下,需要上报所述局部累计数据,即:将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

所述预设的时间间隔,可以根据业务需求进行设置,例如,可将该时间间隔设置为2秒钟。

具体实施时,可设定一个定时上报任务,在当前时间距离上一次上报局部累计数据的时间间隔达到预设的时间间隔的情况下,该任务将被触发,执行将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据的步骤。

所述将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,可包括如下具体步骤:1)根据所述特定业务指标的指标标识,获取所述完整累计数据;2)根据所述局部累计数据和获取到的完整累计数据,计算生成累计后的完整累计数据;3)将存储在所述预设的存储系统中的所述完整累计数据更新为累计后的完整累计数据。

需要注意的是,在请求高并发的应用场景下,在上报所述局部累计数据的过程中,所述局部累计数据可能继续被累计,此时,如果只是简单的将所述局部累计数据清零,则将漏掉部分累计数据,从而降低累计数据的准确度。为了提高数据准确度,所述清理所述局部累计数据,可采用如下方式实现:将所述局部累计数据减去本次累计到所述完整累计数据中的数据。此外,还需注意通常在上报返回成功后,执行清理局部累计数据的步骤。

具体实施时,所述预设的存储系统可以为键值对结构数据存储系统(如:阿里巴巴集团开发的TAIR存储系统,或开源Redis解决方案),将所述特定业务指标的指标标识作为键,将所述完整累计数据作为值。此外,所述预设的存储系统,也可以为数据库系统。

由于键值对存储在访问速度上优于关系型数据库系统性能几个数量级,因此,优选的存储系统是键值对结构数据存储系统。

在本实施例中,采用阿里巴巴集团开发的TAIR存储系统存储多个业务指标各自对应的完整累计数据,TAIR存储系统提供一个简单易用的分布式原子计数器,该计数器支持高并发数据的累计处理。从存储方式角度而言,TAIR支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应。

然而,TAIR计数器存储有整形大小的限制,因此,可能发生存储的TAIR长度溢出的异常情况,即:累计后的完整累计数据超过TAIR存储系统能表示的最大数值,这种情况下,可通过封装TAIR计数器,采用进位制法,将累计数据产生的进位值存储在新的键值对中,从而将TAIR计数器的统计范围扩展至长整形;这种处理方式,使得统计上限不受限制,从而达到降低存储系统性能成本的效果。

在分布式系统架构中,所述预设的存储系统部署在多个数据累计装置共用的存储设备中,该存储系统支持在当前分布式系统下多台服务器上的数据累加统计,存储系统中的累计数据是多个服务器上的总累计数据。

需要说明的是,运行本申请提供的方法的设备可处理多个业务指标的数据累计请求,以用户投票为例,当用户在手机客户端观看直播现场视频时,可以向服务器发送针对多个明星的投票请求,假如用户A为“蔡琴”投票,则相应的特定业务指标为“蔡琴的用户投票数”,用户B为“李健”投票,则相应的特定业务指标为“李健的用户投票数”。因此,本申请提供的方法支持一个服务器上多个业务指标的数据累计处理,并且多个业务指标的数据累计处理是隔离开的,设备在上报各个业务指标的局部累计数据时,将用户级别的数据统计归整为业务级别的统计问题。

本申请提供的数据累计方法应用在双11晚会直播过程中对用户投票进行统计的环节,并采用TAIR存储系统存储各个投票指标的统计数据,将单台服务器上报局部统计数据的时间间隔设置为2秒钟;这种处理方式,对于TAIR存储系统而言,将单台服务器万级别的QPS(Queries Per Second,每秒查询率)降低到秒级别,在上百台服务器的情况下,就将百万级别的QPS降低到百级别;因此,可以有效降低对数据存储系统写性能的依赖成本。

在上述的实施例中,提供了一种数据累计方法,与之相对应的,本申请还提供一种数据累计装置。该装置是与上述方法的实施例相对应。

请参看图2,其为本申请的数据累计装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种数据累计装置,包括:

接收单元,用于接收针对特定业务指标的数据累计请求;

局部累计单元,用于根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据;

完整累计单元,用于根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

可选的,所述局部累计单元,具体用于根据所述数据更新请求,在内存中对所述特定业务指标的数据进行累计。

可选的,所述预设的存储系统包括键值对结构数据存储系统,将所述特定业务指标的指标标识作为键,将所述完整累计数据作为值。

可选的,若所述累计后的完整累计数据超过所述键值对结构数据存储系统能表示的最大数值,则将累计数据产生的进位值存储在新的键值对中。

可选的,所述预设的存储系统包括数据库系统。

可选的,所述完整累计单元包括:

获取单元,用于根据所述特定业务指标的指标标识,获取所述完整累计数据;

计算单元,用于根据所述局部累计数据和获取到的完整累计数据,计算生成累计后的完整累计数据;

更新单元,用于将存储在所述预设的存储系统中的所述完整累计数据更新为累计后的完整累计数据。

可选的,所述预设的存储系统部署在多个数据累计装置共用的存储设备中。

可选的,所述清理所述局部累计数据,具体用于将所述局部累计数据减去本次累计到所述完整累计数据中的数据。

请参考图3,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。

本实施例的一种电子设备,该电子设备包括:处理器101;以及存储器103,

所述存储器,用于存储实现数据累计方法的程序,该设备通电并通过所述处理器运行该数据累计方法的程序后,执行下述步骤:接收针对特定业务指标的数据累计请求;根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据;根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

本申请实施例还提供了一种数据累计系统,如图4所示,该系统包括至少一个上述实施例所述的数据累计装置101和至少一个用于请求数据累计的装置102,以及用于存储特定业务指标的完整累计数据的存储系统。其中,所述用于请求数据累计的装置102包括请求发送单元,该单元用于向部署所述数据累计装置的计算设备发送针对特定业务指标的数据累计请求。

所述数据累计装置101通常部署于服务器,但并不局限于服务器,也可以是能够实现所述数据累计装置方法的任何设备;所述用于请求数据累计的装置通常102部署于移动通讯设备、个人电脑、PAD、iPad等终端设备;所述用于存储特定业务指标的完整累计数据的存储系统,可部署在所述数据累计装置101以外的第三方存储设备中。

请参考图5,其为本申请提供的一种数据累计系统实施例的具体示意图。在本实施例中,用于请求数据累计的装置部署在智能手机上,数据累计装置部署在服务器上;所述用于请求数据累计的装置能够向服务器发送针对特定业务指标的数据累计请求;所述数据累计装置通过接收针对特定业务指标的数据累计请求,并根据所述数据累计请求,对所述特定业务指标的数据进行累计,将该累计数据作为局部累计数据,然后根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据。

本申请提供的数据累计方法、装置及系统,通过接收针对特定业务指标的数据累计请求,并根据该数据累计请求对该特定业务指标的数据进行累计,将该累计数据作为该特定业务指标的局部累计数据,然后根据预设的时间间隔,将所述局部累计数据累计到存储在预设的存储系统中的所述特定业务指标的完整累计数据中,并清理所述局部累计数据;这种处理方式,采用超时上报策略,将用户级别的数据统计规整合并为业务级别的数据统计,可以将上百万的业务请求写操作降低至千至百级别以下;因此,可以有效降低对数据存储系统写性能的依赖成本。

与上述的数据累计系统相对应,本申请还提供一种数据排序系统。下面首先对现有技术下数据排序系统的处理方式及存在的技术问题进行说明。

当千万用户如洪水猛兽疯狂为自己的明星点赞时,有限的服务器需要支撑住百万、甚至千万至亿的用户数,并需要迅速统计用户累计的点赞数,以及快速实时给出一份前N名用户点赞排行版,可见,性能与计算速率无疑是一个很大的挑战。例如,双11晚会直播现场,为达到线上线下双向互动,SNH48团体歌唱表演节目,需要实时准确给出一份该节目的用户点赞数排行版,用于明星口播感谢和电视机屏幕用户粉丝榜满天星效果展现。

在高并发、大请求量的外界访问下,传统的排序方法存在较大的性能瓶颈,如,高并发插入排序冲突的问题,redis大数据量排序流量上升瓶颈等问题,其中重点缺陷问题如下所述:

1)若采用现有支持排序的中间件(如:redis),则首先需要租赁中间件服务器存储空间进行存储,支付使用费用,增加了额外的成本;其次,中间件单节点只能承受10W的请求量,则对于请求量无线扩大的业务需求,则中间件的性能上也会是一种阻碍。

2)传统的排序,若不依赖中间件,则需要存储每个用户用于排名的分数,在需要展现排行版的时候,批量捞取所有用户的分数,进行排序;这种处理方式,对于上百万至千万级的用户的排序需求,计算速率与内存大小,将很难满足前台业务秒级展现的需求。

因此,如何研究和开发出一种新的数据排序方式,其能够快速准确地生成用户点赞排行版成为本领域技术人员迫切需要解决的问题。

本申请提供的数据排序系统,其核心的基本思想为:采用“分而治之”的思想,将一个大的排序任务拆解至各个排序子任务分发到各个服务器进行处理。由于充分利用各个服务器资源,避免了数据集中排序,因而,可以有效提高数据排序速度。

本申请实施例提供的一种数据排序系统,如图6所示,该系统包括至少一个数据累计装置101、和数据排序装置102。

所述数据累计装置101包括:第一请求接收单元1011,用于接收特定用户针对特定业务指标的数据累计请求;数据累计单元1013,用于更新所述特定用户对所述特定业务指标的用户累积数据;第一数据排序单元1015,用于根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

所述数据排序装置102包括:第二请求接收单元1021,用于接收针对所述特定业务指标对应的用户累积数据排行榜的数据获取请求;数据获取单元1023,用于获取所述至少一个数据累计装置对应的至少一个用户累计数据本机排行榜;第二数据排序单元1025,用于根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;数据回送单元1027,用于向所述数据获取请求的发起方回送所述用户累计数据总排行榜。

所述数据累计装置101通常部署于服务器,但并不局限于服务器,也可以是能够实现所述数据累计装置方法的任何设备;所述数据排序装置102通常部署于服务器,但并不局限于服务器,也可以是能够实现所述数据排序装置方法的任何设备。

所述数据累计请求包括但不限于:所述特定用户的用户标识、所述特定业务指标的指标标识,还可以包括累计值等数据。所述特定业务指标,可以是用户投票数等业务指标。

下面以用户投票数为例对所述数据累计装置101和所述数据排序装置102进行说明。

假如用户A在手机客户端观看直播现场视频,该用户可以向服务器发送针对某个明星的投票请求,且该用户要为“蔡琴”投3票,则特定业务指标为“蔡琴的用户投票数”,相应的,所述数据累计请求包括:用户A、“蔡琴的用户投票数”、3票;所述数据累计装置101的第一请求接收单元1011接收到该投票请求后,将启动数据累计单元1013,该单元将根据投票请求,更新用户A对“蔡琴的用户投票数”这个业务指标的累积投票数(如:该用户之前已经投了100票,本次再投3票),经过该处理后,用户A对“蔡琴的用户投票数”的累积投票数为103,接下来,将启动第一数据排序单元1015,根据用户A为103票,调整“蔡琴的用户投票数”对应的用户累计投票数本机排行榜,该本机排行榜被设置为包括10个用户,因此,该本机排行榜包括为蔡琴投票排在前10位的用户,如:1)用户A:103票,2)用户B:99票,3)用户C:97票…。

假如直播视频制作方用户在个人电脑上向部署了所述数据排序装置102的设备发送针对“蔡琴的用户投票数”这个业务指标对应的用户投票数排行榜的数据获取请求;所述数据排序装置102的第二请求接收单元1021接收到该数据获取请求后,将启动数据获取单元1023,该单元将获取所述至少一个数据累计装置101对应的至少一个用户累计数据本机排行榜,然后将启动第二数据排序单元1025,该单元根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得“蔡琴的用户投票数”这个业务指标对应的用户投票数总排行榜,再启动数据回送单元,该单元向该直播视频制作方用户的个人电脑回送该用户累计数据总排行榜。

需要说明的是,在分布式系统架构下,前台用户实时通过互动或游戏积攒累计分数,前端请求通过负载均衡策略,随机分发至某台服务器上,每台部署了所述数据累计装置101的服务器上均维护一个所述用户累计数据本机排行榜。

作为一种可选的方案,所述第一数据排序单元1015可包括如下具体单元:本机排行榜获取子单元,用于获取所述用户累计数据本机排行榜;判断子单元,用于判断所述特定用户的用户累计数据是否大于所述用户累计数据本机排行榜中用户累计数据的最低值,若判断结果为是,则判断所述特定用户是否在所述用户累计数据本机排行榜中,若判定所述特定用户未在所述用户累计数据本机排行榜中,则启动第一本机排行榜调整子单元,若判定所述特定用户在所述用户累计数据本机排行榜中,则启动第二本机排行榜调整子单元。

所述第一本机排行榜调整子单元,用于将所述最低值对应的用户从所述用户累计数据本机排行榜中清除;以及,将所述特定用户及其对应的用户累计数据添加到所述用户累计数据本机排行榜中。

所述第二本机排行榜调整子单元,用于根据所述特定用户的用户累计数据,更新所述用户累计数据本机排行榜中所述特定用户对应的用户累计数据。

例如,用户X对“蔡琴的用户投票数”的累积投票数为80,经过本次投票后其累积投票数为82,超过了本机排行榜的最后一名用户Y的累积投票数81,则启动所述第一本机排行榜调整子单元,该单元将用户Y从本机排行榜中移除,将用户X加入到本机排行榜中。

又例如,用户X对“蔡琴的用户投票数”的累积投票数为80,经过本次投票后其累积投票数为82,超过了本机排行榜的最后一名用户Y的累积投票数70,而用户X已经在本机排行榜中,则启动所述第二本机排行榜调整子单元,该单元将用户X的累积投票数为82。

再例如,用户X对“蔡琴的用户投票数”的累积投票数为80,经过本次投票后其累积投票数为82,未超过了本机排行榜的最后一名用户Y的累积投票数85,则将该用户直接过滤,不加入榜单。

在本实施例中,基于跳表的存储数据结构,设计了一个可以支持高并发插入,低分数自动逐出的工具类;这种处理方式,可以支持高并发、大请求量、自动排查逐出。

作为一种可选的方案,所述数据累计装置101还可包括如下单元:数据上报单元,用于根据预设的时间间隔,将所述用户累计数据本机排行榜存储到所述至少一个数据累计装置共用的存储系统中,更新所述存储系统中存储的对应排行榜数据;所述数据获取单元1023,具体用于从所述存储系统中读取所述至少一个用户累计数据本机排行榜。

所述用户累计数据本机排行榜,可以仅存储在本机中,也可以根据预设的时间间隔启动所述数据上报单元,通过该单元将所述用户累计数据本机排行榜存储到所述至少一个数据累计装置共用的存储系统中,更新所述存储系统中存储的对应排行榜数据;这种情况下,所述数据获取单元1023,需要从所述存储系统中读取所述至少一个用户累计数据本机排行榜。

所述预设的时间间隔,可以根据业务需求进行设置,例如,可将该时间间隔设置为2秒钟。

所述数据上报单元可以设置为一个定时上报任务,在当前时间距离上一次上报所述用户累计数据本机排行榜的时间间隔达到预设的时间间隔的情况下,该任务将被触发,执行所述用户累计数据本机排行榜存储到所述至少一个数据累计装置共用的存储系统中,并更新所述存储系统中存储的对应排行榜数据的步骤。

具体实施时,所述存储系统可基于内存和文件的两种存储方式,分别与缓存和持久化存储对应。

作为一种可选的方案,所述第二数据排序单元1025可包括如下单元:去重子单元,用于从所述至少一个用户累计数据本机排行榜中去除重复出现的同一用户对应的用户累计数据的最低值;排序子单元,用于根据用户累计数据对去重后的所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

下面通过举例方式所述至少一个用户累计数据本机排行榜中重复出现同一用户的情况及处理方式进行说明。在分布式系统架构下,包括分别部署了数据累计装置的N台服务器,前台集中式请求流量(如:100Wqps)通过负载均衡分发至N台服务器上,当流量均分至N台服务器后,不同服务器可能接收到同一用户先后发送的不同数据累计请求,这种情况下,可能出现不同服务器的用户累计数据本机排行榜中出现了同一用户,并且该用户的用户累计数据在不同服务器中可能并不一致。这种情况下,可首先启动所述第二数据排序单元1025的去重子单元,从多个用户累计数据本机排行榜中去除重复出现的同一用户对应的用户累计数据的最低值,然后启动排序子单元,根据用户累计数据对去重后的多个用户累计数据本机排行榜中的用户进行排序,获得用户累计数据总排行榜。

此外,本申请提供的数据排序系统,还可包括:至少一个用于请求数据累计的装置和至少一个用于请求数据排序的装置。

所述用于请求数据累计的装置包括第一请求发送单元,该单元用于向部署所述数据累计装置的计算设备发送特定用户针对特定业务指标的数据累计请求;所述用于请求数据排序的装置包括第二请求发送单元,该单元用于向部署所述数据排序装置的计算设备发送针对特定业务指标的用户累积数据排行榜的数据获取请求。所述用于请求数据累计的装置和所述用于请求数据排序的装置,通常部署于移动通讯设备、个人电脑、PAD、iPad等终端设备;

请参考图7,其为本申请提供的一种数据排序系统实施例的具体示意图。在本实施例中,用于请求数据累计的装置和用于请求数据排序的装置均部署智能手机上,数据排序装置部署在一台服务器上,数据累计装置部署在另一台独立的服务器上;所述用于请求数据累计的装置能够向部署了数据累计装置的服务器发送特定用户针对特定业务指标的数据累计请求;所述数据累计装置通过接收特定用户针对特定业务指标的数据累计请求,并更新所述特定用户对所述特定业务指标的用户累积数据,然后根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户;所述用于请求数据排序的装置能够向部署了数据排序装置的服务器发送针对特定业务指标的用户累积数据排行榜的数据获取请求;所述数据排序装置,通过接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求,并获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成,然后根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

本申请提供的数据累计系统,采用“分而治之”的思想,将一个大的排序任务拆解至各个排序子任务分发到各个服务器进行处理。由于充分利用各个服务器资源,避免了数据集中排序;因此,可以有效提高数据排序速度。

与上述的数据排序系统相对应,本申请还提供又一种数据累计方法。请参考图8,其为本申请提供的又一种数据累计方法实施例的流程图,本实施例与所述数据排序系统实施例内容相同的部分不再赘述,请参见所述数据排序系统实施例中的相应部分。本申请提供的又一种数据累计方法包括:

步骤S101:接收特定用户针对特定业务指标的数据累计请求。

步骤S103:更新所述特定用户对所述特定业务指标的用户累积数据。

步骤S105:根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

具体实施时,本步骤S105可包括如下具体步骤:1)获取所述用户累计数据本机排行榜;2)判断所述特定用户的用户累计数据是否大于所述用户累计数据本机排行榜中用户累计数据的最低值,若是,则进入下一步;3)判断所述特定用户是否在所述用户累计数据本机排行榜中,若是,则根据所述特定用户的用户累计数据,更新所述用户累计数据本机排行榜中所述特定用户对应的用户累计数据;若否,则将所述最低值对应的用户从所述用户累计数据本机排行榜中清除,并将所述特定用户及其对应的用户累计数据添加到所述用户累计数据本机排行榜中。

在分布式系统架构下,本申请提供的数据累计方法还可包括如下步骤:根据预设的时间间隔,将所述用户累计数据本机排行榜存储到至少一个数据累计装置共用的存储系统中,更新所述存储系统中存储的对应排行榜数据。

在上述的实施例中,提供了又一种数据累计方法,与之相对应的,本申请还提供又一种数据累计装置。该装置是与上述又一种数据累计方法的实施例相对应。

请参看图9,其为本申请的又一种数据累计装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的又一种数据累计装置,包括:

接收单元,用于接收特定用户针对特定业务指标的数据累计请求;

更新单元,用于更新所述特定用户对所述特定业务指标的用户累积数据;

调整单元,用于根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

可选的,所述调整单元包括:

获取单元,用于获取所述用户累计数据本机排行榜;

判断单元,包括判断所述特定用户的用户累计数据是否大于所述用户累计数据本机排行榜中用户累计数据的最低值,若是,则启动调整单元;

判断所述特定用户是否在所述用户累计数据本机排行榜中,若是,则根据所述特定用户的用户累计数据,更新所述用户累计数据本机排行榜中所述特定用户对应的用户累计数据;若否,则将所述最低值对应的用户从所述用户累计数据本机排行榜中清除,并将所述特定用户及其对应的用户累计数据添加到所述用户累计数据本机排行榜中。

可选的,所述数据累积方法装置还包括:

根据预设的时间间隔,将所述用户累计数据本机排行榜存储到至少一个数据累计装置共用的存储系统中,更新所述存储系统中存储的对应排行榜数据。

请参考图10,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。

本实施例的一种电子设备,该电子设备包括:处理器101;以及存储器103,

所述存储器,用于存储实现数据累计方法的程序,该设备通电并通过所述处理器运行该数据累计方法的程序后,执行下述步骤:接收特定用户针对特定业务指标的数据累计请求;更新所述特定用户对所述特定业务指标的用户累积数据;根据所述用户累积数据,调整所述特定业务指标对应的用户累计数据本机排行榜,所述用户累计数据本机排行榜包括预设数量的用户。

与上述的数据排序系统相对应,本申请还提供一种数据排序方法。请参考图11,其为本申请提供的一种数据排序方法实施例的流程图,本实施例与所述数据排序系统实施例内容相同的部分不再赘述,请参见所述数据排序系统实施例中的相应部分。本申请提供的一种数据排序方法包括:

步骤S101:接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求。

步骤S103:获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成。

所述至少一个用户累计数据本机排行榜,可能分别存储在各自对应的数据累计装置所在的计算设备的存储系统中,也可能统一存储在至少一个数据累计装置共用的存储系统中。

如果所述至少一个用户累计数据本机排行榜分别存储在各自对应的数据累计装置所在的计算设备的存储系统中,则需要分别从各个存储系统获取相应的用户累计数据本机排行榜;如果所述至少一个用户累计数据本机排行榜统一存储在至少一个数据累计装置共用的存储系统中,则需要从该共用的存储系统中读取所述至少一个用户累计数据本机排行榜。

步骤S105:根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

本步骤将用户累计数据作为排序依据,对上一步骤获得的至少一个用户累计数据本机排行榜中的用户进行总排序,获得所述特定业务指标对应的用户累计数据总排行榜。

在分布式系统架构下,分别部署了数据累计装置的不同计算设备可能接收到同一用户的数据累计请求,这种情况下,可能出现不同计算设备的用户累计数据本机排行榜中出现了同一用户,并且该用户的用户累计数据在不同的计算设备中可能并不一致;这种情况下,本步骤可包括如下具体步骤:1)从所述至少一个用户累计数据本机排行榜中去除重复出现的同一用户对应的用户累计数据的最低值;2)根据用户累计数据对去重后的所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

步骤S107:向请求的发起方回送所述用户累计数据总排行榜。

在上述的实施例中,提供了一种数据排序方法,与之相对应的,本申请还提供一种数据排序装置。该装置是与上述数据排序方法的实施例相对应。

请参看图12,其为本申请的一种数据排序装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种数据排序装置,包括:

接收单元,用于接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求;

获取单元,用于获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成;

排序单元,用于根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;

回送单元,用于向请求的发起方回送所述用户累计数据总排行榜。

可选的,所述获取单元,具体用于从所述至少一个数据累计装置共用的存储系统中读取所述至少一个用户累计数据本机排行榜。

可选的,所述排序单元包括:

去除单元,用于从所述至少一个用户累计数据本机排行榜中去除重复出现的同一用户对应的用户累计数据的最低值;

用户排序单元,用于根据用户累计数据对去重后的所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜。

请参考图13,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。

本实施例的一种电子设备,该电子设备包括:处理器101;以及存储器103,

所述存储器,用于存储实现数据排序方法的程序,该设备通电并通过所述处理器运行该数据排序方法的程序后,执行下述步骤:接收针对特定业务指标对应的用户累积数据排行榜的数据获取请求;获取所述特定业务指标对应的至少一个用户累计数据本机排行榜,所述至少一个用户累计数据本机排行榜由至少一个数据累计装置形成;根据用户累计数据对所述至少一个用户累计数据本机排行榜中的用户进行排序,获得所述特定业务指标对应的用户累计数据总排行榜;向请求的发起方回送所述用户累计数据总排行榜。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

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