数据统计方法、装置、设备和存储介质与流程

文档序号:26737340发布日期:2021-09-22 22:25阅读:98来源:国知局
数据统计方法、装置、设备和存储介质与流程

1.本公开涉及数据处理技术领域,尤其涉及信息流技术。


背景技术:

2.随着信息科技的发展,各种依赖互联网的业务数据的爆增,而且这些业务数据非常重要,直接影响互联网上的相关服务的正常运行,同时对相关服务的运营和管理具备一定的指导意义。


技术实现要素:

3.本公开提供了一种数据统计方法、装置、设备和存储介质。
4.根据本公开的一方面,提供了一种数据统计方法,包括:
5.依次确定所拉取业务数据流中各标识信息对应的数值编码;
6.将各数值编码位图存储,得到目标位图数据;
7.根据目标位图数据,确定至少一个统计时段的标识信息数量。
8.根据本公开的另一方面,还提供了一种数据统计装置,包括:
9.数值编码确定模块,用于依次确定所拉取业务数据流中各标识信息对应的数值编码;
10.目标位图数据得到模块,用于将各数值编码位图存储,得到目标位图数据;
11.标识信息统计模块,用于根据目标位图数据,确定至少一个统计时段的标识信息数量。
12.根据本公开的另一方面,还提供了一种电子设备,包括:
13.至少一个处理器;以及
14.与至少一个处理器通信连接的存储器;其中,
15.存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开实施例所提供的任意一种数据统计方法。
16.根据本公开的另一方面,还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开实施例所提供的任意一种数据统计方法。
17.根据本公开的另一方面,还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开实施例所提供的任意一种数据统计方法。
18.根据本公开的技术,提高了统计结果准确度和统计效率,同时减少了数据空间占用量。
19.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.附图用于更好地理解本方案,不构成对本公开的限定。其中:
21.图1是本公开实施例提供的一种数据统计方法的流程图;
22.图2是本公开实施例提供的另一种数据统计方法的流程图;
23.图3是本公开实施例提供的另一种数据统计方法的流程图;
24.图4是本公开实施例提供的另一种数据统计方法的流程图;
25.图5是本公开实施例提供的另一种数据统计方法的流程图;
26.图6a是本公开实施例提供的一种数据统计系统的结构图;
27.图6b是本公开实施例提供的一种表示信息的数值编码过程示意图;
28.图7是本公开实施例提供的一种数据统计装置的结构图;
29.图8是用来实现本公开实施例的数据统计方法的电子设备的框图。
具体实施方式
30.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
31.现有技术在对互联网中生成的业务数据进行统计时,通常需要进行全量明细数据的存储,并基于所存储的明细数据通过高精度计算或近似计算的方式,进行业务数据统计。然而,高精度计算的方式计算效率较低、近似计算的方式,舍弃掉了部分计算精度,来满足时效性的要求。因此,现有技术的方案无法实现计算精度和时效性的两者兼顾,同时在进行数据统计时,还需要进行大量存储空间的占用,造成了存储资源的浪费。
32.本公开实施例所提供的各数据统计方法和装置,适用于对互联网中生成的业务数据实时流进行统计的情况,以达到兼顾统计结果准确度和时效性的目的,同时降低存储空间占用量。本公开所提供的各数据统计方法,可以由数据统计装置执行,该装置可以采用软件和/或硬件实现,并具体配置于电子设备中。该电子设备可以是单一服务器设备,还可以是由至少两台服务器所构建的服务器集群。
33.为了便于理解,本公开首先对各数据统计方法进行详细说明。
34.参见图1所示的一种数据统计方法,包括:
35.s101、依次确定所拉取业务数据流中各标识信息对应的数值编码。
36.其中,业务数据流通常为上游生成的实时流数据,例如可以是所监测网站、应用程序等生成的业务数据。
37.为了有效应对数据高峰期的数据拥堵情况,还可以将上游生成的实时流数据存储至消息中间件中,以实现数据生成端和数据处理端的解耦。相应的,可以直接将各消息中间件作为数据输入源,以供拉取业务数据流,有效应对数据高峰期的处理压力,实现对后续数据处理过程的压力控制。其中,消息中间件可以包括但不限于kafka(卡夫卡)和hdfs(hadoop distributed file system,分布式文件系统)等。
38.其中,标识信息可以是账户标识,用于唯一表征数据生成方,通常为设定长度的字符串。其中,数值编码为采用设定数值表示的具备设定大小的数字,例如可以是十进制数
字。
39.可以理解的是,通过将各标识信息生成一一对应的数值编码,使得数值编码同样具备唯一表征数据生成方的特性。
40.若由服务器集群执行数据统计方法,在一个可选实施例中,可以由预先设定的至少一台主服务器从各数据输入源中进行业务数据流拉取,并将所拉取数据流分发至服务器集群中的至少一台副服务器中,用于执行后续的数值编码生成等操作。可以理解的是,通过将服务器集群中的各服务器按照职能划分主服务器和副服务器,两者各司其职,有助于提高整体处理效率。
41.若由服务器集群执行数据统计方法,在另一可选实施例中,可以由服务器集群中的各服务器分别从各数据输入源中进行业务数据流拉取,并进行后续的数值编码生成等操作。可以理解的是,通过对服务器集群中的各服务器的无差别对待,便于对服务器进行管理和维护。
42.由于相同标识信息可能会产生多条业务数据,将相同标识信息的业务数据分发至不同服务器将会带来计算量的增加,影响计算效率,同时还会由于数据的重复统计,影响后续标识信息统计结果准确度。为了避免上述情况的发生,在一个可选实施例中,还可以根据标识信息,对单次拉取的业务数据流中各条业务数据进行分组,以使相同标识信息的业务数据位于相同组;将相同组的业务数据分配至相同服务器的执行器中,以确定对应标识信息的数值编码。
43.可选的,可以通过标识信息相互比对的方式,确定业务数据流中各条业务数据的标识信息是否相同,从而实现对业务数据流中各条业务数据的分组。为了简化计算,可选的,还可以计算业务数据流中各条业务数据的标识信息的哈希值,通过比对哈希值,确定各条业务数据的标识信息是否相同,从而实现对业务数据流中各条业务数据的分组。
44.示例性的,确定业务数据流中各标识信息对应的数值编码,可以是全局标识生成器,对各标识信息进行编码,得到数值编码,从而避免后续目标位图数据过于离散。其中,全局标识生成器可以基于预设数据库的自增工具加以实现。其中,预设数据库可以由技术人员根据需要或经验值进行设定或调整,本公开对此不作任何限定。例如,基于oracle(甲骨文)提供的sequence(序列)对象,或基于mysql(关系型数据库管理系统)的主键auto_increment(自动增量)等。
45.s102、将各数值编码位图存储,得到目标位图数据。
46.由于数值编码为数值型数据,因此,通过位图存储的方式,能够显著减少业务数据流的存储空间,有助于提高标识信息的数值统计精度和统计效率。
47.示例性的,可以预先设定访问标识,当数值编码存在时,将目标位图数据中与数值编码相对应的数据位标记为访问标识。其中,访问标识用于标记该数值编码对应标识信息的访问情况。为了便于计算,通常通过二进制的方式进行访问情况标记,可以用“1”表示访问,用“0”表示未访问。
48.s103、根据目标位图数据,确定至少一个统计时段的标识信息数量。
49.其中,统计时段可以由技术人员根据需要或经验值预先设定或调整。
50.可以理解的是,目标位图数据中通过设置访问标识的方式,进行数值编码对应标识信息对业务功能的访问情况,也即是否生成有该业务功能对应的业务数据。因此,可以通
过位图统计的方式,进行标识信息数量的确定,从而简化了计算,并提高了计算结果准确度。
51.示例性的,若识别到达查询时机,则根据目标位图数据,确定至少一个统计时段的标识信息数量。其中,查询时机可以由技术人员根据需要或经验值进行设定或调整。
52.可选的,可以预先设置可查询时刻,若当前时刻到达可查询时刻,则确定到达查询时机。或者可选的,若识别接收到查询请求,则确定到达查询时机。
53.在一个具体实现方式中,查询请求中还可以包括查询字段,相应的,基于该查询字段,根据目标位图数据,确定至少一个统计时段的标识信息数量。
54.本公开实施例通过将业务数据流中的标识信息转化为数值编码,进行位图存储,生成目标位图数据,从而根据目标位图数据,确定至少一个统计时段的标识信息数量,无需业务数据流中明细数据的存储,减少了数据存储空间占用量。同时,通过目标位图数据进行标识信息数量统计,避免了数据漏统计或误统计情况的出现,从而保证了统计结果准确度。另外,采用目标位图数据统计替代复杂计算的方式,简化了数据统计过程的数据运算量,兼顾了统计效率。
55.在上述各技术方案的基础上,本公开还提供了一个可选实施例,在该实施例中,对标识信息的数值编码生成过程,进行了优化改进。在本公开未详述部分,可参见前述实施例表述,在此不再赘述。
56.参见图2所示的一种数据统计方法,包括:
57.s201、针对业务数据流中各条业务数据的标识信息,顺序获取本地存储的自增号段中的数值编码,作为该条业务数据的标识信息的数值编码。
58.其中,自增号段为从预设数据库中预先读取的设定长度的数值编码序列。其中,设定长度可以由技术人员根据需要或经验值进行设定或调整,或者通过大量试验反复确定。针对不同数据统计方法的执行设备,可以设置相同或不同的设定长度,本公开对此不作任何限定。
59.基于预设数据库进行数值编码,需要在针对各条业务数据进行处理时,均需从预设数据库中进行数值编码的拉取。当业务数据流暴增时,将会严重降低数值编码的生成效率,进而影响数据统计结果的时效性。因此,通过从预设数据库中预先读取设定长度的数值编码的方式,实现在数据统计方法的执行设备的本地存储,形成自增号段。相应的,在数据统计过程中,从本地存储的自增号段中数值编码的顺序读取,极大地减轻了负担。同时,数值编码的生成过程大部分迁移至执行设备本地内容中实现,提高了各执行设备的数值编码生成效率,进而有助于提高数据统计效率。
60.举例说明,若设定长度为m,则将从预设数据库中读取数值编码的频率由1减少至1/m,减轻了预设数据库的负担,从而有助于提高数据统计效率,保证了实时流时效性的要求。
61.在一个可选实施例中,可以在本地存储的自增号段至少部分消耗完之后,从预设数据库中进行后续自增号段的读取,避免了自增号段读取过程数阻塞而影响数值编码生成效率。优选的,当自增号段消耗至一半时,从预设数据库中读取新的自增号段本地存储,以供后续使用。
62.由于业务数据流具备时效特性和海量特性,为了避免数值编码重复,在一个可选
实施例中,还可以设置预设缓存区域,将已处理的业务数据的标识信息与生成的数值编码对应存储。相应的,针对业务数据流中各条业务数据的标识信息,在预设缓存区域中查找是否存在该条业务数据的标识信息对应的数值编码;若是,则直接将查找到的数值编码作为该条业务数据的标识信息;否则,触发执行数值编码的生成操作。
63.其中,预设缓存区域可以包括执行设备的本地缓存区,或者可以包括预先设置的与执行设备关联的缓存系统中的缓存数据库。
64.需要说明的是,通过在预设缓存区域中进行标识信息和数值编码对应关系的存储,从而实现了对数值编码的去重处理,避免了对同一标识信息进行不同数值编码生成情况的出现,保证了数值编码的全局唯一性,从而为数据统计结果准确度奠定了基础。
65.在一个可选实施例中,由于业务数据流可以包括至少一个业务功能的实时业务数据。为了实现不同业务数据的同时处理,同时实现对同一执行设备中的自增号段的复用,还可以针对不同业务功能设置不同的目标位图数据。
66.s202、将各数值编码位图存储,得到目标位图数据。
67.s203、根据目标位图数据,确定至少一个统计时段的标识信息数量。
68.本公开实施例通过将数值编码生成过程,细化为针对业务数据流中各条业务数据的标识信息,顺序获取本地存储的自增号段中的数值编码,作为该条业务数据的标识信息的数值编码;其中,自增号段为预设数据库中预先读取的设定长度的数值编码序列,从而减少了从预设数据库中的数据读取频率,减轻了预设数据库的负担。同时,将大部分数值编码的生成过程,迁移至数据统计方法的执行设备本地加以实现,提高了数值编码生成效率,进而有助于提高数据统计效率。
69.在上述各技术方案的基础上,本公开还提供了一个可选实施例。在该可选实施例中,将目标位图数据细化为常规位图数据和乱序位图数据,以实现在业务数据乱序到达的场景下,对数据统计结果加以修复,进一步提高数据统计结果准确度。
70.参见图3所示的一种数据统计方法,包括:
71.s301、依次确定所拉取业务数据流中各标识信息对应的数值编码。
72.s302、针对业务数据流中的各业务数据,在常规位图数据中对应该业务数据的生成时间戳,记录该业务数据的数值编码。
73.其中,常规位图数据用于记录各数值编码在对反映生成时间戳的访问标识,从而形成该数值编码的数据记录。相应的,乱序位图数据用于对乱序数据之前到达的业务数据的数值编码进行数据记录备份,以便进行统计结果修正。
74.针对业务数据流中的各业务数据,无需关注该业务数据是否为乱序数据,直接在常规位图数据中形成相应的数据记录,避免出现数据遗漏。
75.s303、若该业务数据为乱序数据,则在乱序位图数据中复制常规位图数据中位于生成时间戳之后直至该业务数据的相邻到达的历史业务数据的数据记录。
76.其中,乱序数据可以理解为到达时间戳超出生成时间戳的业务数据。相应的,针对任一业务数据,可以根据该业务数据的生成时间戳和到达时间戳,确定该业务数据是否为乱序数据。
77.在进行数据统计过程中,部分统计结果将会受到业务数据的生成时间戳的影响,例如进行业务功能首次访问量统计场景。为了避免由于网络时延等环境因素的影响,导致
业务数据乱序到达给后续统计结果准确度带来的影响,本公开针对乱序数据,还设置了乱序位图数据,用于对乱序数据带来的统计误差加以修正。
78.s304、针对各统计时段,根据该统计时段的常规位图数据和乱序位图数据的差集,确定该统计时段的标识信息数量。
79.针对某一统计时段,由于常规位图数据对各业务数据的数值编码进行了记录,而乱序位图数据中,对于乱序数据相关联的在先记录的数值编码的记录情况进行了备份,因此,通过确定常规位图数据和乱序位图数据的差集,即可确定出在该统计时段中未重复记录的数值编码的记录情况,从而对所统计的标识信息数量进行了修正。
80.举例说明,若账户a在8:00点击了设定应用程序,在8:45再次点击了该设定应用程序。由于网络原因,账户a在8:00产生的业务数据晚于8:45产生的业务数据。此时,将会出现先处理8:45产生的业务数据,而后处理8:00产生的情况。若未进行乱序修正,则账户a在8:00

8:30的访问量为1,在8:30

9:00的访问量为1,在8:00

9:00的访问量为2。采用本公开的方式进行乱序修正时,账户a的常规位图数据中记录了8:00和8:45生成的数值编码,在乱序位图数据中记录了8:45生成的数值编码,因此可以确定账户a在8:00

8:30的访问量为1,在8:30

9:00的访问量为0,在8:00

9:00的访问量为1,从而对访问量统计结果进行了修正。
81.本公开实施例通过将目标位图数据细化为包括常规位图数据和乱序位图数据,并在常规位图数据中对应业务数据的生成时间戳记录该业务数据的数值编码,在乱序位图数据中复制常规位图数据中位于该条业务数据的生成时间戳之后直至该业务数据的相邻到达的历史业务数据的数据记录,对常规位图数据记录加以修正,从而避免了标识信息统计结果出现重复统计的情况,提高了标识信息统计结果的准确度。
82.在上述各技术方案的基础上,本公开还提供了另一可选实施例。在该实施例中,对目标位图数据的存储情况进行了优化改进。
83.参见图4所示的一种数据统计方法,包括:
84.s401、依次确定所拉取业务数据流中各标识信息对应的数值编码。
85.s402、根据预设分桶数和标识信息预估数据,确定各数值编码对应的桶标识。
86.s403、根据桶标识,将各数值编码顺序存储至对应的存储桶中,以得到目标位图数据。
87.s404、根据目标位图数据,确定至少一个统计时段的标识信息数量。
88.其中,预设分桶数即为预先设定的存储桶的数量。标识信息预估数据,即为预先估计的设定统计时段的标识信息数量,可以基于设定关联历史时段的标识信息数据预估得到。设定关联历史时段可以由技术人员根据需要或经验值进行设定,或通过大量试验调整确定。例如,若设定统计时段为日活业务数据中的某一时段,则设定关联历史时段可以是月活业务数据或季活业务数据中相同时段数据。需要说明的是,基于设定关联历史时段的业务数据进行标识信息预估数据确定,可以采用现有技术中的至少一种确定方式加以实现,本公开对此不作任何限定。
89.其中,存储桶可以是分布式集群中支持位图存储的数据存储结构,例如可以包括mysql、palo(百度数据仓库)等。
90.在一个可选实施例中,根据预设分桶数和标识信息预估数据,确定各数值编码对应的桶标识,可以是:确定标识信息预估数据和预设分桶数的比值,根据比值结果,确定各
存储桶中的数值编码存储数量;将未存储的最小数值编码,以存储数量为步长,确定各存储桶的数值编码段;根据各数值编码与数值编码段之间的所属关系,确定各数值编码对应的桶标识。
91.在另一可选实施例中,根据预设分桶数和标识信息预估数据,确定各数值编码对应的桶标识,可以是:确定标识信息预估数据和预设分桶数的比值;针对各数值编码,确定该数值编码与该比值结果的比值;将该比值取整后,得到该数值编码对应的桶标识。
92.举例说明,若数值编码为0

5,存储桶数量为3,通过上述方式确定桶标识为0时,对应存储的数值编码为0、1;桶标识为1时,对应存储的数值编码为2、3;桶标识为2时,对应存储的数值编码为4、5。
93.可以理解的是,在至少两个执行设备进行数值编码生成的应用场景中,采用上述方式进行桶标识确定,无需关注数值编码具体由哪个执行设置执行,直接采用通用计算方式即可,避免了分桶混乱的情况发生,从而便于后续进行数据统计,提高统计效率。
94.需要说明的是,通过桶标识计算的方式,将各数值编码顺序存储至对应的存储桶中,使得各存储桶中存储的数值编码尽可能连续。由于在位图结构中,连续的数值编码的查询效率较高,从而采用上述技术方案在进行设定功能的业务数据的标识信息统计时,有助于提高数据统计效率。
95.在上述各技术方案的基础上,本公开还提供了一个可选实施例,在该实施例中,在进行数值编码存储时引入存储生效标识,用于指示所存储数值编码的有效性。需要说明的是,在本公开未详述部分,可参见前述实施例的表述,在此不再赘述。
96.参见图5所示的一种数据统计方法,包括:
97.s501、依次确定所拉取业务数据流中各标识信息对应的数值编码。
98.s502、针对单次拉取的业务数据流,生成存储生效标识。
99.其中,存储生效标识用于指示该次拉取业务数据流中各数值编码的有效性。
100.需要说明的是,存储生效标识可用于区分不同词拉取的业务数据流即可,本公开对存储生效标识的具体生成方式不作任何限定。也即,针对单次拉取的业务数据流中的各标识信息,生成相同的存储生效标识;针对不同次拉取的业务数据流中的各标识信息,生成不同的存储生效标识。
101.s503、在该次拉取的业务数据流中各标识信息的数值编码存储完毕后,将存储生效标识与各数值编码对应存储,以得到目标位图数据。
102.需要说明的是,针对每次拉取的业务数据流,仅在该次拉取的业务数据流中各标识信息的数值编码存储完毕之后,才会进行存储生效标识的对应存储。当存储的数值编码对应存储有存储生效标识时,表征该次拉取的业务数据流的各标识信息的数值编码有效;当存储的数值编码对应未存储有存储生效标识时,表征该次拉取的业务数据流中各标识信息无效或暂时无效。
103.s504、根据目标位图数据,确定至少一个统计时段的标识信息数量。
104.根据目标位图数据中存储有效部分的各数值编码,确定至少一个统计时段的标识信息储量。
105.本公开实施例通过针对每次拉取的业务数据流,生成存储生效标识,并在进行该次拉取的业务数据流中各标识信息的数值编码存储时,仅在该次拉取的全部业务数据均存
储完毕后,进行存储生效标识的对应存储,从而避免了数据存储过程出现部分遗漏的情况,有助于提高统计结果准确度。
106.在上述各技术方案的基础上,若数据统计系统异常,且识别到存储桶中存在未包含存储生效标识的数值编码,则表明前次拉取的业务数据流未完全存储,可以直接舍弃前次拉取的业务数据流,或重新执行前次拉取的业务数据流的拉取操作。其中,数据统计系统异常可以包括但不限于设备断电、宕机、和重启等异常。
107.然而,直接舍弃前次拉取的业务数据流,必然导致前次拉取的业务数据存储遗漏的情况;直接重新执行前次拉取的业务数据流的拉取操作,将会出现部分已存储数据的重复存储。因此,上述两种方式均会在数据统计系统异常的情况下,给数据统计结果准确度带来影响。
108.在一个可选实施例中,若数据统计系统异常,且识别到存储桶中存在未包含存储生效标识的数值编码,则回滚执行前次业务数据流中各标识信息的数值编码确定操作,避免了已存储数据的重复存储以及未存储数据的存储遗漏,从而保证数据统计系统异常情况下,数据统计结果的准确度。
109.在一个具体实现方式中,可以基于checkpoint(检查点)机制,进行业务数据流的重新拉取和消费,并通过引入存储生效标识,用幂等来避免数据的重复消费,保证数据输入源的数据与目标位图数据中的数据一致性。
110.在上述各技术方案的基础上,本公开还提供了一个实现数据统计方法的优选实施例。该优选实施例具体应用于对设定应用程序中首次访问设定功能的uv(unique visitor,独立访客)数量进行统计的场景。
111.为了便于理解,参见图6a,首先对该实施例所采用的数据统计系统的具体结构进行详细说明。
112.该数据统计系统包括数据输入源10、实时计算引擎20、缓存系统30和位图存储系统40。
113.其中,数据输入源10设置有至少一个消息中间件(例如可以包括kafka、hdfs等),用于顺序存储数据生成方所生成的业务数据,从而实现实时计算引擎20与数据生成方的解耦,以应对数据高峰期噪声的数据拥堵。
114.其中,实时计算引擎20设置有至少一个执行器(excutor),用于从数据输入源10中进行业务数据流拉取,并对业务数据流中的各条业务数据进行处理。
115.示例性的,对业务数据进行处理,可以是对业务数据进行抽取、清洗、格式转换等操作,从而选取业务方所需的对应维度的业务数据以及标识信息。
116.示例性的,针对每个执行器,根据业务数据流中各标识信息的哈希值,对业务数据进行分组,以使相同标识信息对应业务数据位于相同组;将相同组的业务数据分发至实时计算引擎20中的相同执行器中。
117.可选的,可以根据实时计算引擎20中的执行器数量,对各标识信息的哈希值进行取模,并根据计算结果,对各业务数据进行分组。
118.其中,缓存系统30中设置有第一数据库(如mysql)和第二数据库(如redis)。其中,第一数据库与实时计算引擎20中的各执行器合作生成各标识信息的数值编码(也即全局id),第二数据库用于存储已生成的数值编码与标识信息的对应关系。
119.针对各条业务数据,执行器将该业务数据的标识信息在本地缓存和第二数据库中进行查询,若未查询到该条业务数据的标识信息对应的数值编码,则触发执行数值编码的生成操作。
120.其中,位图存储系统40中设置有至少一个支持位图结构的存储桶,用于顺序存储已生成的各数值编码。
121.其中,实时计算引擎20中的执行器,还会根据查询需求,从位图存储系统中进行标识信息统计。
122.为了便于理解,在一个可选实施例中,将结合图6b,对标识信息的数值编码过程进行详细说明。
123.执行器中设置有取号线程,通过该取号线程从第一数据库中读取设定长度的自增号段,并本地存储。针对每条业务数据,执行器从本地顺序读取自增号段中的数值编码,从而与建立业务数据的标识信息的对应关系。当执行器中的自增号段未消费部分满足设定比例时(如小于设定长度的1/2),则调用取号线程,从第一数据库中继续读取设定长度的自增号段。
124.示例性的,在多业务统计场景中,还可以针对不同业务,实现相同数值编码的复用。
125.在一个可选实施例中,继续结合图6a,对各数值编码的分桶存储过程进行详细说明。
126.示例性的,采用以下公式,确定各数值编码的桶标识:
127.tid=取整(v/(m/n));
128.其中,tid为桶标识,v为标识信息的数值编码,m为预估标识信息数量,n为存储桶数量。
129.相应的,将各数值编码存储至所确定桶标识所对应的存储桶中,实现了数值编码的紧密、连续存储。
130.由于业务数据为实时流数据,当数据统计系统出现崩溃或重启等异常时,将会影响数据统计结果准确度。为了有效应对系统异常情况,执行器采用checkpoint机制,回滚执行前次处理的业务数据流中各标识信息的数值编码确定操作。同时,在对所拉取业务数据流进行标识信息的数值编码存储时,引入存储生效标识,当且仅当本次拉取业务流数据的数值编码全部存储后,对应存储本次业务数据流的存储生效标识,指示本次拉取业务流数据的全部数值编码生效。从而通过幂等来保证系统异常情况下的重复消费,保证端到端的数据一致性。需要说明的是,当系统异常时,所存储的未包含存储生效标识的数值编码将会被删除。
131.由于网络延时等环境因素的影响,导致到达执行器的业务数据存在乱序的情况,也即在先生成的业务数据,后续到达,将会影响统计结果的准确度。有鉴于此,在一个可选实施例中,在数值编码存储时,设置常规位图存储,用于对应存储各业务数据的数值编码;还设置有乱序位图存储,用于对乱序业务数据的修正数据,从实现对乱序场景下的统计结果的修正,进一步提高统计结果准确度。
132.示例性的,针对每条业务数据,当执行器确定该条业务数据的数据编码后,将该数据编码在常规位图存储部分的相应生成时间戳位置,进行数据记录;若该条业务数据为乱
序数据,则在乱序位图存储部分复制常规位图存储部分中位于该条业务数据生成时间戳之后直至该业务数据的相邻到达的历史业务数据的数据记录。
133.相应的,在进行设定统计时段的标识信息数量统计时,根据设定统计时段内常规位图存储部分和乱序位图存储部分的差集,进行标识信息数量统计。
134.在上述各技术方案的基础上,本公开还提供了实现上述数据统计方法的装置的可选实施例。
135.参见图7所示的一种数据统计装置700,包括:数值编码确定模块701、目标位图数据得到模块702和标识信息统计模块703。其中,
136.数值编码确定模块701,用于依次确定所拉取业务数据流中各标识信息对应的数值编码;
137.目标位图数据得到模块702,用于将各数值编码位图存储,得到目标位图数据;
138.标识信息统计模块703,用于根据目标位图数据,确定至少一个统计时段的标识信息数量。
139.本公开实施例通过将业务数据流中的标识信息转化为数值编码,进行位图存储,生成目标位图数据,从而根据目标位图数据,确定至少一个统计时段的标识信息数量,无需业务数据流中明细数据的存储,减少了数据存储空间占用量。同时,通过目标位图数据进行标识信息数量统计,避免了数据漏统计或误统计情况的出现,从而保证了统计结果准确度。另外,采用目标位图数据统计替代复杂计算的方式,简化了数据统计过程的数据运算量,兼顾了统计效率。
140.在一个可选实施例中,数值编码确定模块701,包括:
141.数值编码确定单元,用于针对业务数据流中各条业务数据的标识信息,顺序获取本地存储的自增号段中的数值编码,作为该条业务数据的标识信息的数值编码;
142.其中,自增号段为从预设数据库中预先读取的设定长度的数值编码序列。
143.在一个可选实施例中,装置,还包括:
144.数值编码查找模块,用于针对业务数据流中各条业务数据的标识信息,在预设缓存区域查找是否存在该条业务数据的标识信息对应的数值编码;
145.数值编码生成模块,用于若是,则直接将查找到的数值编码作为该条业务数据的标识信息;否则,触发执行数值编码的生成操作。
146.在一个可选实施例中,目标位图数据包括常规位图数据和乱序位图数据;
147.目标位图数据得到模块702,包括:
148.常规位图数据生成单元,用于针对业务数据流中的各业务数据,在常规位图数据中对应该业务数据的生成时间戳,记录该业务数据的数值编码;
149.乱序位图数据生成单元,用于若该业务数据为乱序数据,则在乱序位图数据中复制常规位图数据中位于生成时间戳之后直至该业务数据的相邻到达的历史业务数据的数据记录;
150.标识信息统计模块703,包括:
151.标识信息统计单元,用于针对各统计时段,根据该统计时段的常规位图数据和乱序位图数据的差集,确定该统计时段的标识信息数量。
152.在一个可选实施例中,目标位图数据得到模块702,包括:
153.桶标识生成单元,用于根据预设分桶数和标识信息预估数据,确定各数值编码对应的桶标识;
154.分桶存储单元,用于根据桶标识,将各数值编码顺序存储至对应的存储桶中,以得到目标位图数据。
155.在一个可选实施例中,目标位图数据得到模块702,包括:
156.存储生效标识生成单元,用于针对单次拉取的业务数据流,生成存储生效标识;
157.存储生效标识存储单元,用于在该次拉取的业务数据流中各标识信息的数值编码存储完毕后,将存储生效标识与各数值编码对应存储,以得到目标位图数据;
158.其中,存储生效标识用于指示该次拉取业务数据流中各数值编码的有效性。
159.在一个可选实施例中,目标位图数据得到模块702,还包括:
160.异常回滚单元,用于若数据统计系统异常,且识别到存储桶中存在未包含存储生效标识的数值编码,则回滚执行前次业务数据流中各标识信息的数值编码确定操作。
161.在一个可选实施例中,数值编码确定模块701,包括:
162.业务数据流分组单元,用于根据标识信息,对单次拉取的业务数据流中各条业务数据进行分组,以使相同标识信息的业务数据位于相同组;
163.业务数据分配单元,用于将相同组的业务数据分配至相同执行器中,以确定对应标识信息的数值编码。
164.上述数据统计装置可执行本公开任意实施例所提供的数据统计方法,具备执行数据统计方法相应的功能模块和有益效果。
165.本公开的技术方案中,所涉及的业务数据流的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
166.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
167.图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
168.如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储设备800操作所需的各种程序和业务数据。计算单元801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
169.设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/业务数据。
170.计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单
元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如数据统计方法。例如,在一些实施例中,数据统计方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的数据统计方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据统计方法。
171.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收业务数据和指令,并且将业务数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
172.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程业务数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
173.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd

rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
174.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
175.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为业务数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的
计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字业务数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
176.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端

服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
177.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开提供的技术方案所期望的结果,本文在此不进行限制。
178.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1