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

一种基于消息队列的数据处理方法、装置、计算机设备和存储介质与流程

2021-11-05 21:46:00 来源:中国专利 TAG:


1.本发明实施例涉及信息处理的技术领域,尤其涉及一种基于消息队列的数据处理方法、装置、计算机设备和存储介质。


背景技术:

2.在网站数据统计应用背景下,高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中所有动作流数据。在传统使用kafka消息队列时,往往为了保证数据的准确性,都会把所有的动作流数据通过kafka消息队列生产和消费,而当动作流数据量过大时,就需要很多服务器承载数据,造成成本直线上升。
3.所以,针对上述情况,在kafka消息队列生产和消费数据的而过程中,通过数据压缩和复原,实现数据流实时分析处理,进而减少对数据的服务器配置是亟待结解决的问题。


技术实现要素:

4.本发明实施例提出了一种基于消息队列的数据处理方法、装置、计算机设备和存储介质,以解决在消息队列存储收发分布订阅消息的场景中,针对海量数据收发和存储而不停分配服务器造成成本过高的问题。
5.第一方面,本发明实施例提供了一种基于消息队列的数据处理方法,包括:
6.消息队列服务端获取待统计网站在预设周期内的各页面浏览量,以及各页面点击量的动作流数据总量;
7.所述消息队列服务端根据所述各页面浏览量以及所述各页面点击量,获取消息队列主题名称;
8.所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量与预设抽样统计规则进行匹配,得到匹配的数据压缩比例;
9.所述消息队列服务端根据匹配的所述数据压缩比例,对所述动作流数据总量执行数据随机抽样操作,得到统计结果数据;
10.所述消息队列服务端将所述统计结果数据发送到消息队列消费端;
11.所述消息队列消费端接收所述统计结果数据,并获取所述统计结果数据中的所述数据压缩比例;
12.所述消息队列消费端根据所述数据压缩比例复原所述统计结果数据,得到复原后数据总量,并存储在预设数据库中。
13.第二方面,本发明实施例还提供了一种基于消息队列的数据处理装置,其特征在于,包括:
14.动作流数据实时接收模块,用于消息队列服务端获取待统计网站在预设周期内的各页面浏览量,以及各页面点击量的动作流数据总量;
15.主题名称获取模块,用于所述消息队列服务端根据所述各页面浏览量以及所述各
页面点击量,获取消息队列主题名称;
16.抽样统计规则加载模块,用于所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量与预设抽样统计规则进行匹配,得到匹配的数据压缩比例;
17.动作流数据抽样统计操作模块,用于所述消息队列服务端根据匹配的所述数据压缩比例,对所述动作流数据总量执行数据随机抽样操作,得到统计结果数据;
18.统计结果数据发送模块,用于所述消息队列服务端将所述统计结果数据发送到消息队列消费端;
19.数据压缩比例获取模块,用于所述消息队列消费端接收所述统计结果数据,并获取所述统计结果数据中的所述数据压缩比例;
20.动作流数据复原模块,用于所述消息队列消费端根据所述数据压缩比例复原所述统计结果数据,得到复原后数据总量,并存储在预设数据库中。
21.第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
22.一个或多个处理器;
23.存储器,用于存储一个或多个程序,
24.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一项所述的基于消息队列的数据处理方法。
25.第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的基于消息队列的数据处理方法。
26.在本实施例中,所述消息队列服务端获取待统计网站在预设周期内的各页面浏览量,以及各页面点击量的动作流数据总量;所述消息队列服务端根据所述各页面浏览量以及所述各页面点击量,获取消息队列主题名称;所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量与预设抽样统计规则进行匹配,得到匹配的数据压缩比例;所述消息队列服务端根据匹配的所述数据压缩比例,对所述动作流数据总量执行数据随机抽样操作,得到统计结果数据;所述消息队列服务端将所述统计结果数据发送到消费端;所述消息队列消费端接收所述统计结果数据,并获取所述统计结果数据中的所述数据压缩比例;所述消息队列消费端根据所述数据压缩比例复原所述统计结果数据,得到复原后数据总量,并存储在预设数据库中。通过将采集到的动作流数据进行实时分析和处理,运用随机抽样的方法,根据kafka消息队列主题名称(topic)的数据量级,对应地产生不同程度的压缩和复原比例,从而减少kafka消息队列生产和消费数据的量级,减少所需kafka生产者和消费者的服务器配置,达到降低成本的效果。
附图说明
27.图1为本发明实施例一提供的一种基于消息队列的数据处理方法的流程图;
28.图2为本发明实施例一提供的基于kafka消息队列实现数据压缩和复原的抽样统计压缩示意图;
29.图3是本发明实施例一提供的基于kafka消息队列实现数据压缩和复原的抽样统计复原示意图;
30.图4为本发明实施例二提供的一种基于消息队列的数据处理装置的结构示意图;
31.图5为本发明实施例三提供的一种计算机设备的结构示意图。
具体实施方式
32.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
33.实施例一
34.图1为本发明实施例一提供的一种基于消息队列的数据处理方法的流程图,该方法可以由基于消息队列的数据处理装置来执行,该基于消息队列的数据处理装置可以由软件和/或硬件实现,可配置在计算机设备中,例如,服务器、工作站、个人电脑,等等,具体包括如下步骤:
35.步骤101,消息队列服务端获取待统计网站在预设周期内的各页面浏览量,以及各页面点击量的动作流数据总量。
36.本发明实施例中,消息队列是基于kafka分布式流媒体平台,其中,kafka它可以发布和订阅记录流。在这方面,它类似于消息队列或企业消息传递系统,它允许以容错方式存储记录流,它可以在发生记录时处理记录流。在kafka中,客户端和服务器之间的通信是通过一个简单的、高性能的、与语言无关的tcp(协议完成的。这个协议是版本化的,并保持与旧版本的向后兼容性。kafka提供了一个java客户端,但客户端可以使用多种语言。
37.如图2所示,在kafka消息队列中,以消费者为单位保留的唯一元数据是消费者在日志中的偏移或位置。这个偏移量是由消费者控制的,消费者通常会在读取记录时线性地推进其偏移量,但事实上,由于消费者的位置是由消费者控制的,所以它可以以任何喜欢的顺序消费记录。例如,消费者可以重置为较旧的偏移量以重新处理来自过去的数据,或者跳至最近的记录并从当下开始消费。这些功能的组合意味着卡夫卡的消费者非常方便,他们可以来来去去,对集群或其他消费者没有太大的影响。例如,可以使用命令行工具来抓取任何主题的内容,而不会改变现有的使用者所使用的内容。
38.在实际应用中,使用kafka系统接收预设周期内的动作流数据,统计不同网站不同类型不同日期的实时累计数据量级,根据不同网站不同类型区分kafka消息队列主题名称(topic),不同类型包括页面浏览量、页面点击量等。
39.可以理解地,预设周期根据实际应用需求设定,可以随时根据使用场景而更改,本发明实施例对此不加以限制。
40.步骤102,所述消息队列服务端根据所述各页面浏览量以及所述各页面点击量,获取消息队列主题名称。
41.本发明实施例中,当服务端获取各页面浏览量以及所述各页面点击量,进一步获取各页面标识,以各页面标识存储在消息队列中的页面浏览消息和页面点击消息,其中页面标识即为消息队列的主题名称。
42.步骤103,所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量与预设抽样统计规则进行匹配,得到匹配的数据压缩比例。
43.本发明实施例中,将如图2所示,获取的消息队列主题名称与预先设置好的抽样统计规则进行匹配,该抽样统计规则是存储在kafka消息队列的服务端的,经过匹配获取对应
该主题名称的抽样统计规则。
44.其中,抽样统计规则一般包含对应消息队列主题名称的动作流数据总量的数据压缩比例,即主题名称对应数据总量的数据压缩比例,一般数据总量不同对应的数据压缩比例不同。
45.优选地,所述对应消息队列主题名称的动作流数据总量的压缩比例包括:所述各主题名称的动作流数据总量的各级抽样统计范围阈值,以及对应所述各级抽样统计范围阈值的动作流数据总量的数据压缩比例;所述抽样统计范围阈值包括所述动作流数据总量的最低阈值和最高阈值;在所述动作流数据总量中,利用相同的数据压缩比例,抽取的样本概率相同。
46.可以理解地,抽样统计规则按以下纬度进行定义:抽样统计规则是否启用,是否存在所有主题topic的通用配置;抽样统计规则是否针对不同的主题topic存在个性化配置;抽样统计规则生效数据量级范围,包括开始量级和结束量级;生效数据量级范围对应的压缩比例,包括压缩比例数值;通用配置或者相同的主题topic配置中数据量级范围相互间不能重合,同一个范围内最终仅输出一个压缩比例;相同压缩比例随机抽样中每个样本的概率相同。
47.其中,抽样统计范围阈值包括动作流数据总量的最低阈值和最高阈值,指的是动作流数据总量开始抽样的最低阈值,以及不再进行抽样的最高阈值,例如在动作流数据总量在10

40量级之间对应四个压缩比例,10

20数量级对应压缩比例a,20

30数量级对应对应压缩比例b,30

40对应压缩比例c,小于10以及大于40数量级的数据不进行处理,直接发送至消费端。
48.可以理解地,上述规则描述只是举例说明,本发明实施例对此不加以具体限定。
49.则步骤103具体包括:
50.子步骤a1,所述消息队列服务端将所述消息队列主题名称与预设抽样统计规则中各主题名称进行匹配,获取所述对应各主题名称的所述动作流数据总量的各级抽样统计范围阈值。
51.具体地,服务端利用主题名称匹配对应的数据总量的各级抽样统计范围阈值,例如抽样统计阈值为50

100数量级,则获取该数量级对应其中有四个数据压缩比例。
52.子步骤a2,所述消息队列服务端获取对应所述各级抽样统计范围阈值的,针对所述动作流数据总量的数据压缩比例。
53.具体地,服务端利用主题名称匹配对应的数据总量的各级抽样统计范围阈值,例如动作流数据总量为60数量级,匹配到抽样统计范围阈值为50

100量级对应的四个数据压缩比例中的第一个,如数据压缩比例a。
54.在实际应用中,判断统计的各网站实时动作流数据累计量级是否满足抽样统计规则,若满足,触发压缩操作,获取对应的压缩比例。
55.优选地,在本发明另一实施例中,步骤103之后,还包括:
56.步骤d,所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量,在所述预设抽样统计规则中匹配对应数据压缩比例失败,则将所述动作流数据总量发送至所述消息队列消费端。
57.具体地,如果在预设抽样统计规则中匹配对应数据压缩比例失败,或者在抽样过
程中提取数据失败则将样本丢弃,成功抽样的样本将输出的动作流数据和对应压缩比例数值通过kafka生产者传输给消费者,本轮判断结束。
58.步骤104,所述消息队列服务端根据匹配的所述数据压缩比例,对所述动作流数据总量执行数据随机抽样操作,得到统计结果数据。
59.本发明实施例中,根据获取的数据压缩比例和数据抽样概率,将动作流数据根据压缩比例进行随机抽样操作,动作流数据总量中每个数据的被抽中的概率是相同的,将抽样成功的数据作为统计结果数据。
60.具体地,根据获取的数据压缩比例和数据抽样概率,将动作流数据根据压缩比例进行随机抽样,实时上报的每一条动作流数据只有1/n的概率输出到kafka生产者模块,其中n为压缩比例,且为整数。
61.可以理解地,消息队列服务端即为消息队列生产者。
62.步骤105,所述消息队列服务端将所述统计结果数据发送到消息队列消费端。
63.步骤106,所述消息队列消费端接收所述统计结果数据,并获取所述统计结果数据中的所述数据压缩比例。
64.本发明实施例中,如图3所示,服务端将压缩完成的数据发送至消费端,消费端接收到结果数据后,判断消费的数据中是否存在压缩比例数值,若存在,则触发复原操作,根据对应的压缩比例数值复原动作流数据,输出最终统计数据至消费端,本轮判断结束。
65.步骤107、所述消息队列消费端根据所述数据压缩比例复原所述统计结果数据,得到复原后数据总量,并存储在预设数据库中。
66.本发明实施例中,如图3所示,进一步的,复原按以下公式进行计算:
67.y=x*n
68.其中y表示复原后的动作流数据,x表示复原前的动作流数据,n表示压缩比例。
69.优选地,在本发明另一实施例中,如果获取所述统计结果数据中的所述数据压缩比例失败,则步骤107,具体包括:
70.子步骤c1,所述消息队列消费端接收所述动作流数据总量,并存储至所述预设数据库中。
71.具体地,消费端获取统计结果数据失败,则消费端接收到的是动作流数据总量,那么就将动作流数据总量直接存储在预设数据库中。
72.优选地,在本发明另一实施例中,步骤107之后,还包括:
73.步骤e,若所述消息队列消费端接收所述统计结果数据,在获取所述统计结果数据中的所述数据压缩比例失败,则将所述统计结果数据存储至预设数据库。
74.具体地,消费端获取统计结果数据中的数据压缩比例失败,则消费端接就将统计结果数据总量直接存储在预设数据库中。
75.以实例说明本发明方案:
76.如图1和图2所示,首先系统接收用户动作流数据;从动作流数据看实时加载刷新抽样统计判断规则;根据动作流数据量级判断是否满足抽样统计规则,若满足,则触发压缩操作,并将压缩后的统计数据和压缩比例输出到kafka生产者模块,输出后本轮判断结束;若不满足,则直接将统计数据输出到kafka生产者模块,输出后本轮判断结束;通过指定topic名称将动作流数据写入对应的集合中,用于传输;根据topic名称读取对应集合中的
数据,用于接收kafka生产者传输的动作流统计数据和压缩比例;判断消费的数据中是否存在压缩比例数值,若存在,则触发复原操作,根据对应的压缩比例数值复原动作流数据,输出最终统计数据,本轮判断结束;若不存在,直接输出最终动作流统计数据,本轮判断结束;将最终输出的动作流统计数据存储到数据库。
77.其中,kafka消息队列主题名称(topic),指的是kafka消息队列中同类数据所在集合的名称,用不同网站和不同种类的动作流区分不同的topic名称,通过指定topic名称将动作流数据写入对应的集合中(生产者),然后根据topic名称读取对应集合中的数据(消费者)。
78.在本实施例中,所述消息队列服务端获取待统计网站在预设周期内的各页面浏览量,以及各页面点击量的动作流数据总量;所述消息队列服务端根据所述各页面浏览量以及所述各页面点击量,获取消息队列主题名称;所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量与预设抽样统计规则进行匹配,得到匹配的数据压缩比例;所述消息队列服务端根据匹配的所述数据压缩比例,对所述动作流数据总量执行数据随机抽样操作,得到统计结果数据;所述消息队列服务端将所述统计结果数据发送到消费端;所述消息队列消费端接收所述统计结果数据,并获取所述统计结果数据中的所述数据压缩比例;所述消息队列消费端根据所述数据压缩比例复原所述统计结果数据,得到复原后数据总量,并存储在预设数据库中通过将采集到的动作流数据进行实时分析和处理,运用随机抽样的方法,根据kafka消息队列主题名称(topic)的数据量级,对应地产生不同程度的压缩和复原比例,从而减少kafka消息队列生产和消费数据的量级,减少所需kafka生产者和消费者的服务器配置,达到降低成本的效果。
79.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
80.实施例二
81.图4为本发明实施例二提供的一种基于消息队列的数据处理装置的结构框图,具体可以包括如下模块:
82.动作流数据实时接收模块201,用于消息队列服务端获取待统计网站在预设周期内的各页面浏览量,以及各页面点击量的动作流数据总量;
83.主题名称获取模块202,用于所述消息队列服务端根据所述各页面浏览量以及所述各页面点击量,获取消息队列主题名称;
84.抽样统计规则加载模块203,用于所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量与预设抽样统计规则进行匹配,得到匹配的数据压缩比例;
85.优选地,所述对应消息队列主题名称的动作流数据总量的压缩比例包括:所述各主题名称的动作流数据总量的各级抽样统计范围阈值,以及对应所述各级抽样统计范围阈值的动作流数据总量的数据压缩比例;所述抽样统计范围阈值包括所述动作流数据总量的最低阈值和最高阈值;在所述动作流数据总量中,利用相同的数据压缩比例,抽取的样本概率相同。
86.优选地,在本发明另一实施例中,所述抽样统计规则加载模块203还用于:
87.所述消息队列服务端将所述消息队列主题名称与预设抽样统计规则中各主题名称进行匹配,获取所述对应各主题名称的所述动作流数据总量的各级抽样统计范围阈值;
88.所述消息队列服务端获取对应所述各级抽样统计范围阈值的,针对所述动作流数据总量的数据压缩比例。
89.优选地,在本发明另一实施例中,所述抽样统计规则加载模块203之后,还包括:
90.动作流数据总量发送模块,用于所述消息队列服务端将所述消息队列主题名称,以及所述动作流数据总量,在所述预设抽样统计规则中匹配对应数据压缩比例失败,则将所述动作流数据总量发送至所述消息队列消费端。
91.动作流数据抽样统计操作模块204,用于所述消息队列服务端根据匹配的所述数据压缩比例,对所述动作流数据总量执行数据随机抽样操作,得到统计结果数据;
92.统计结果数据发送模块205,用于所述消息队列服务端将所述统计结果数据发送到消息队列消费端;
93.数据压缩比例获取模块206,用于所述消息队列消费端接收所述统计结果数据,并获取所述统计结果数据中的所述数据压缩比例;
94.动作流数据复原模块207,用于所述消息队列消费端根据所述数据压缩比例复原所述统计结果数据,得到复原后数据总量,并存储在预设数据库中。
95.优选地,在本发明另一实施例中,所述动作流数据复原模块207还用于:
96.所述消息队列消费端接收所述动作流数据总量,并存储至所述预设数据库中。
97.优选地,在本发明另一实施例中,所述动作流数据复原模块207之后,还包括:
98.统计结果数据存储模块,用于若所述消息队列消费端接收所述统计结果数据,在获取所述统计结果数据中的所述数据压缩比例失败,则将所述统计结果数据存储至预设数据库。
99.本发明实施例所提供的基于消息队列的数据处理装置可执行本发明任意实施例所提供的基于消息队列的数据处理方法,具备执行方法相应的功能模块和有益效果。
100.实施例三
101.图5为本发明实施例三提供的一种计算机设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图5显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
102.如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
103.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
104.计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
105.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取
存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd

rom,dvd

rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
106.具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
107.计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
108.处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于消息队列的数据处理方法。
109.实施例四
110.本发明实施例四还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述基于消息队列的数据处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
111.其中,计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
112.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

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

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

相关文献