一种数据处理方法及设备与流程

文档序号:31586259发布日期:2022-09-21 01:58阅读:71来源:国知局
一种数据处理方法及设备与流程

1.本技术涉及计算机技术领域,尤其涉及一种数据处理方法及设备。


背景技术:

2.kafka是消息中间件中的佼佼者,其本质是一个数据存储平台。作为一个开源软件,拥有支持应用端多语言开发以及支持实时性大规模消息处理等优点。其中,kafka系统主要有生产者(producer)、消费者(consumer)和代理(broker)三个角色,而kafka集群是有多个代理节点组成的。当生产者产生新的数据信息时,就会被划分到某个主题下。而某个主题会被划分为多个分区,这些分区会被部署在多个broker上。生产者不断地向某个类型的主题发送数据信息,代理节点暂存不同主题topic的数据信息,然后转发给消费者,最后由消费者使用并处理数据信息。
3.随着业务数据量的不断提升以及业务需求的多样性,kafka的消息队列中将存在大量的中转数据。当消费者需要查询数据时,kafka将会把数据落盘到hdfs上,然后将hdfs上数据导入数据仓库中。然后消费者需要从数据仓库中查询数据。
4.在上述过程中,消费者要查询数据,就需要先将kafka的消息队列中的数据存储到下游不同的数据仓库中,然后消费者才能对数据仓库中的数据进行查询操作。这样每收到一次查询请求,就需要将kafka中的数据存储一次,导致kafka中的数据会被存储多份,计算资源将长期被占用,并且造成存储资源的浪费。同时还将造成时间延迟,无法满足某些场景下需要对数据进行实时查询的需求,因此如何更高效便捷的查询kafka中的数据,成为亟需解决的问题。


技术实现要素:

5.有鉴于此,本技术提供了一种数据处理方法及设备。通过为kafka中的数据建立索引的方式,来支持消费者对kafka中的数据直接进行查询。这样,无需占用多余的计算资源和存储资源,同时提高了数据查询的速度和效率。
6.本技术实施例第一方面提供了一种数据处理方法,该方法包括:
7.确定kafka消息队列中的目标存储数据,其中,kafka消息队列中包括多个存储设备对应的存储数据。
8.根据kafka消息队列的数据存储信息,确定目标存储数据对应的第一存储设备的地址信息,和目标存储数据的数据副本所对应的第二存储设备的地址信息。
9.根据kafka消息队列的主题分区信息,为目标存储数据建立索引字段。
10.为目标存储数据建立索引表,其中,索引表为目标存储数据的索引字段与第一存储设备的地址信息和第二存储设备的地址信息的对应关系表。
11.在一个可选的实施方式中,该方法还包括:
12.根据用户查询请求确定目标存储数据中的待查询数据。
13.确定待查询数据的索引字段。
14.根据待查询数据的索引字段,在索引表中确定待查询数据对应的第一存储设备的地址信息和第二存储设备的地址信息。
15.确定第一存储设备和第二存储设备中的目标设备。
16.根据目标设备的地址信息发送数据查询请求,数据查询请求用于指示目标设备获取并返回待查询数据的数值。
17.在一个可选的实施方式中,该方法还包括:
18.建立针对于目标设备的查询记录,其中,查询记录用于指示当接收到用户查询请求后,优先向目标设备发送数据查询请求。
19.在一个可选的实施方式中,确定kafka数据库中的目标存储数据,包括:
20.根据kafka消息队列的主题分区信息,确定kafka消息队列的目标主题下的目标存储数据。其中,kafka消息队列对应多个主题。
21.根据kafka消息队列的数据存储信息,确定目标存储数据对应的第一存储设备的地址信息,和目标存储数据的数据副本所对应的第二存储设备的地址信息,包括:
22.根据kafka消息队列的数据存储信息,确定目标存储数据对应的数据副本。
23.确定目标主题对应的分区信息。
24.根据目标主题对应的分区信息,确定目标存储数据对应的第一分区地址和数据副本对应的第二分区地址。
25.根据目标存储数据对应的第一分区地址确定第一存储设备的地址信息,其中,第一存储设备的地址信息包括第一分区地址和第一分区地址的地址偏移量。
26.根据数据副本对应的第二分区地址,确定第二存储设备的地址信息。其中,第二存储设备的地址信息包括第二分区地址和第二分区地址的地址偏移量。
27.在一个可选的实施方式中,为目标存储数据建立索引字段,包括:
28.当目标存储数据为实时查询数据时,监测kafka消息队列中的目标存储数据。
29.根据监测结果确定目标存储数据的更新状态。
30.为目标存储数据建立索引字段,包括:
31.当目标存储数据被更新时,为目标存储数据建立索引字段。
32.在一个可选的实施方式中,为目标存储数据建立索引字段,包括:
33.当目标存储数据为离线查询数据时,在预设时间段内更新目标数据的索引字段。
34.在一个可选的实施方式中,确定第一存储设备和第二存储设备中的目标设备,包括:
35.确定第一存储设备和第二存储设备的负载状态。
36.根据第一存储设备和第二存储设备的负载状态,确定第一存储设备和第二存储设备中的目标设备。
37.在一个可选的实施方式中,确定第一存储设备和第二存储设备中的目标设备,包括:
38.确定第一存储设备和第二存储设备的运行速率。
39.根据第一存储设备和第二存储设备的运行速率,确定第一存储设备和第二存储设备中的目标设备。
40.在一个可选的实施方式中,该方法还包括:
41.确定第一设备和第二设备中的多个目标设备。
42.根据目标设备的地址信息发送数据查询请求,包括:
43.向多个目标设备同时发送数据请求信息。
44.在一个可选的实施方式中,该方法还包括:
45.接收多个目标设备发送的多个响应信息,响应信息和数据请求信息对应。
46.对多个响应信息进行合法性检测。
47.根据合法性检测的检测结果,确定多个响应信息中的目标响应信息。
48.根据目标响应信息确定待查询数据的数值。
49.本技术实施例第二方面提供了一种数据处理装置,该数据处理装置包括:
50.确定单元,用于确定kafka消息队列中的目标存储数据,其中,kafka消息队列中包括多个存储设备对应的存储数据。
51.确定单元,还用于根据kafka消息队列的数据存储信息,确定目标存储数据对应的第一存储设备的地址信息和目标存储数据的数据副本所对应的第二存储设备的地址信息。
52.建立单元,用于根据kafka消息队列的主题分区信息,为目标存储数据建立索引字段。
53.建立单元,还用于为目标存储数据建立索引表。其中,索引表为目标存储数据的索引字段与第一存储设备的地址信息和第二存储设备的地址信息的对应关系表。
54.在一个可选的实施方式中,该装置还包括发送单元。
55.确定单元,还用于根据用户查询请求确定目标存储数据中的待查询数据。确定待查询数据的索引字段。根据待查询数据的索引字段,在索引表中确定待查询数据对应的第一存储设备的地址信息和第二存储设备的地址信息。确定第一存储设备和第二存储设备中的目标设备。
56.发送单元,用于根据目标设备的地址信息发送数据查询请求,数据查询请求用于指示目标设备获取并返回待查询数据的数值。
57.在一个可选的实施方式中,建立单元,还用于建立针对于目标设备的查询记录,其中,查询记录用于指示当接收到用户查询请求后,优先向目标设备发送数据查询请求。
58.在一个可选的实施方式中,确定单元,具体用于根据kafka消息队列的主题分区信息,确定kafka消息队列的目标主题下的目标存储数据。其中,kafka消息队列对应多个主题。根据kafka消息队列的数据存储信息,确定目标存储数据对应的数据副本。确定目标主题对应的分区信息。根据目标主题对应的分区信息,确定目标存储数据对应的第一分区地址和数据副本对应的第二分区地址。根据目标存储数据对应的第一分区地址确定第一存储设备的地址信息,其中,第一存储设备的地址信息包括第一分区地址和第一分区地址的地址偏移量。根据数据副本对应的第二分区地址,确定第二存储设备的地址信息。其中,第二存储设备的地址信息包括第二分区地址和第二分区地址的地址偏移量。
59.在一个可选的实施方式中,建立单元,具体用于当目标存储数据为实时查询数据时,监测kafka消息队列中的目标存储数据。根据监测结果确定目标存储数据的更新状态。当目标存储数据被更新时,为目标存储数据建立索引字段。
60.在一个可选的实施方式中,建立单元,具体用于当目标存储数据为离线查询数据时,在预设时间段内更新目标数据的索引字段。
61.在一个可选的实施方式中,确定单元,具体用于确定第一存储设备和第二存储设备的负载状态。根据第一存储设备和第二存储设备的负载状态,确定第一存储设备和第二存储设备中的目标设备。
62.在一个可选的实施方式中,确定单元,具体用于确定第一存储设备和第二存储设备的运行速率。根据第一存储设备和第二存储设备的运行速率,确定第一存储设备和第二存储设备中的目标设备。
63.在一个可选的实施方式中,确定单元,还用于确定第一设备和第二设备中的多个目标设备。
64.发送单元,具体用于向多个目标设备同时发送数据请求信息。
65.在一个可选的实施方式中,该装置还包括接收单元。
66.接收单元,用于接收多个目标设备发送的多个响应信息,其中,响应信息和数据请求信息对应。
67.确定单元,还用于对多个响应信息进行合法性检测。根据合法性检测的检测结果,确定多个响应信息中的目标响应信息。根据目标响应信息确定待查询数据的数值。
68.本技术实施例第三方面还提供了一种服务器,包括:存储器和处理器,存储器和处理器耦合。
69.其中,存储器用于存储一条或多条计算机指令。
70.处理器用于执行一条或多条计算机指令,以实现上述第一方面所述的数据处理方法。
71.本技术实施例第五方面还提供了一种计算机可读存储介质,其上存储有一条或多条计算机指令,其特征在于,该指令被处理器执行以实现上述任意一种技术方案所述的数据处理方法。
72.本技术实施例所提供的技术方案,通过为kafka数据库中的数据建立索引表的方式,来支持对kafka中的数据直接进行查询。具体的,先根据查询需求来确定kafka中的有查询需求的目标存储数据,然后获取目标存储数据以及其副本的多个存储地址信息,最后为目标存储数据建立索引字段以及索引表。这样,用户需要查询目标存储数据时,就可以先从索引表中获取目标存储数据对应的存储设备的地址信息,然后根据地址信息直接查询。在上述技术方案中,kafka中的数据无需存储至下游数据仓库中供用户查询,不再占用多余的计算资源和存储资源,大大节约了存储资源。同时直接查询的方式减少了时间延迟,大大提高了数据查询的速度和效率。
附图说明
73.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
74.图1是本技术实施例提供的一种kafka系统的结构框架图;
75.图2为本技术实施例提供的一种kafka索引表的建立方法的流程示意图;
76.图3为本技术实施例提供的一种数据查询方法的流程示意图;
77.图4为本技术实施例提供的一种数据处理装置的结构示意图;
78.图5为本技术实施例提供的服务器的一种结构示意图。
具体实施方式
79.本技术提供了一种数据处理方法及设备。通过为kafka中的数据建立索引的方式,来支持消费者对kafka中的数据直接进行查询。这样,无需占用多余的计算资源和存储资源,同时提高了数据查询的速度和效率。
80.为了使本领域的技术人员能够更好的理解本技术的技术方案,下面结合本技术实施例中的附图,对本技术进行清楚、完整地描述。但本技术能够以很多不同于上述描述的其他方式进行实施,因此,基于本技术提供的实施例,本领域普通技术人员在不经过创造性劳动的情况下,所获得的所有其他实施例,都应属于本技术保护的范围。
81.需要说明的是,本技术的权利要求书、说明书及附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,并不用于描述特定的顺序或先后次序。这样使用的数据在适当情况下是可以互换的,以便于本文所描述的本技术的实施例,能够以除了在本文图示或描述的内容以外的顺序实施。此外,术语“包括”、“具有”以及他们的变形形式,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
82.kafka是消息中间件中的佼佼者,其本质是一个数据存储平台。作为一个开源软件,拥有支持应用端多语言开发以及支持实时性大规模消息处理等优点。其中,kafka系统主要有生产者(producer)、消费者(consumer)和代理(broker)三个角色,而kafka集群是有多个代理节点组成的。当生产者产生新的数据信息时,就会被划分到某个主题下。而某个主题会被划分为多个分区,这些分区会被部署在多个broker上。生产者不断地向某个类型的主题发送数据信息,代理节点暂存不同主题的数据信息,然后转发给消费者,最后由消费者使用并处理数据信息。
83.图1为本技术实施例提供的一种kafka系统的结构框架图。如图1所示,生产者组成的生产者集群会发布数据消息,将要传输的数据消息发送至代理服务器上。然后broker会对数据消息进行分类,根据消息种类的不同,以不同的主题存储在broker上。其中,同一个主题会被分为若干个分区,而不同的分区可以不在同一个设备上,可能会被部署在多个机器上。由消费者组成的消费者组想要订阅数据消息就会订阅主题topic的不同分区。
84.随着业务数据量的不断提升以及业务需求的多样性。目前的大数据环境下,很多场景都会采用kafka系统作为数据消息队列来中转数据消息。kafka中的代理服务器会获取多方发送的数据消息,经过数据处理后落盘到分布式文件系统hdfs上。然后hdfs上的数据将会被批量倒入至下游的数据仓库中进行存储。待用户需要查询相关数据时,需要到数据仓库中进行相关数据的查询。对于一些时效性较高的数据,通常也需要写入到下游不同的数据存储或者olap引擎中进行备份,然后再供用户查询备份数据。
85.上述查询方案均需要对kafka系统中的数据消息进行多次存储才能供用户查询。而对于数据存储而言,一些有实时查询需求的大数据量的日志,写入一份或者多份数据到其他存储中会导致计算资源的长期占用,会占据相当程度的硬件计算资源。同时也会造成
存储资源的冗余,由于kafka系统是分布式系统,kafka系统中的数据消息本身会被备份多次,如果查询数据时还需要将数据多次落盘再查询,这样将造成存储资源的严重浪费。而且kafka本身并非为查询而生,对于随机查询的需求查询速度非常慢,造成很长的延迟时间,不适用对实时性要求较高的数据的查询。因此,如何更高效便捷的查询kafka中的数据,成为亟需解决的问题。
86.基于上述问题,本技术实施例提供了一种数据处理方法及设备。通过为kafka中的数据建立索引的方式,来支持消费者对kafka中的数据直接进行查询。这样,无需占用多余的计算资源和存储资源,同时提高了数据查询的速度和效率。下面将结合具体的实施方式,对本技术实施例所提供的方案进行详细的介绍。
87.图2为本技术实施例提供的一种kafka索引表的建立方法的流程示意图。如图2所示,该方法包括:
88.201、确定kafka消息队列中的目标存储数据。
89.首先,需要根据数据查询需求来确定kafka消息队列中有查询需求的目标存储数据。示例性的,需要确定目标存储数据的业务类型等。kafka消息队列作为数据消息中转队列,包含有大量的中转数据。根据查询需求在中转数据中选择目标存储数据,可以对海量数据进行筛选,选择有用户查询需求的数据来建立索引即可。
90.其中,kafka作为分布式消息队列,包含有多个存储设备对应的存储数据,并且针对一目标存储数据而言,会在不同的存储设备上进行数据备份。因此,在为某一目标存储数据建立索引时,不仅需要得知该目标存储数据对应的存储地址,还需要确定该目标存储数据对应的数据副本对应的存储地址。这样,用户可以选择任一地址来进行目标存储数据的查询,为用户提供多路查询。
91.202、根据kafka消息队列的数据存储信息,确定目标存储数据对应的第一存储设备的地址信息,和目标存储数据的数据副本所对应的第二存储设备的地址信息。
92.在确定好目标存储数据后,就需要根据kafka消息队列的数据存储信息,来确定目标存储数据对应的多个地址信息。包括存储有目标存储数据的第一存储设备的地址信息,以及存储有目标存储数据的数据副本的第二存储设备的地址信息。其中,在目标存储数据进入kafka消息队列时,broker服务器(物理机)对每一个数据进行分类,确定其对应的主题topic,然后再将数据存储在某一个主题的一个分区内。同时,还会对该数据进行多次备份,将数据对应的数据副本存储在不同的分区。因此,在确定目标存储数据的地址信息时,先要确定目标存储数据对应的目标主题,再根据该目标主题下的分区信息,确定目标存储数据对应的多个分区地址。然后利用分区地址加地址偏移量的方式来表述目标数据的地址信息。
93.示例性的,首先根据kafka消息队列的主题分区信息,确定目标存储数据对应的kafka消息队列的目标主题。然后根据kafka消息队列的数据存储信息,确定目标存储数据对应的数据副本。再确定该目标主题对应的分区信息。根据目标主题对应的分区信息,找到目标存储数据对应的存储设备所在的第一分区地址以及数据副本对应的存储设备所在的第二分区地址。再将第一分区地址和第一分区地址的地址偏移量作为目标存储数据的一个地址信息,将第二分区地址和第二分区地址的地址偏移量作为目标存储数据的另一地址信息。可以理解的,数据副本可能会有多份,那么每一个数据副本的存储地址都可作为目标存
储数据的一个地址信息。这样可以实现目标存储数据的多线程查询,满足多个用户同时查询目标数据的目标,提高目标数据的查询效率。其中,分区地址可以是存放目标数据存放的broker物理机的地址,而地址偏移量可以是数据存储文件地址和目标数据在文件中的位置,具体不做限定。
94.在一个可选的实施方式中,可以进行批量处理。即broker服务器确定kafka消息队列一个主题topic下的所有有查询需求的目标存储数据。然后确定该主题对应的分区情况以及存储情况,获取存储有目标存储数据及其数据副本的分区的分区地址以及每一个目标存储数据及其数据副本的存储地址。最后以分区地址加上地址偏移量的方式来表述每一个目标存储数据的所有存储地址。
95.203、根据kafka消息队列的主题分区信息,为目标存储数据建立索引字段。
96.在确定好目标存储数据的地址信息后,就需要为目标存储数据建立索引,供用户直接查询目标数据。首先,需要根据kafka消息队列的主题分区信息确定目标数据的索引字段。示例性的,索引字段可以是目标存储数据对应的主题号加数据id,可以是目标存储数据对应的主题号加关键字,还可以是目标存储数据对应的主题号加数据名等,具体不做限定。
97.204、为目标存储数据建立索引表。
98.在确定好目标存储数据的索引字段后,就需要根据目标存储数据的索引字段以及目标存储数据及其数据副本的所有地址信息来建立一个索引表。其中,索引表就是目标存储数据的索引字段和目标存储数据及其数据副本对应的多个地址信息的对应关系表,以供用户查阅。
99.在一个可选的实施方式中,kafka可以提供实时查询和离线查询两种查询方式,以供不同的查询需求。而在不同的查询方式下,索引表的建立方式也略有不同,下面进行详细的介绍。
100.其中,实时查询对查询时间要求高,需要实时获取目标存储数据的数值。因此,在该种查询模式下,kafka需要随时监测目标存储数据,一旦目标存储数据的存储地址更新,包括新增存储地址、更改存储地址,又或者kafka消息队列中新增目标数据或者删除目标数据时,又或者是目标存储数据的数据被更新时都需要立即更新索引表。
101.具体的,kafka系统需要确定需要实时查询的目标存储数据,然后监测kafka消息队列中的目标存储数据的状态。一旦目标存储数据的状态被更新,比如目标存储数据的存储地址发生变化,或者kafka数据库新增了目标存储数据,又或者kafka数据库删除了目标存储数据等,都需要立即改变索引表的内容。例如,确定kafka数据库新增了某个目标存储数据,就需要根据该确定结果为该目标存储数据建立索引,并在索引表中记录该目标存储数据的索引字段以及所有地址信息的对应关系。
102.示例性的,可以编写一个服务,从kafka broker中获取到对应数据及其数据副本存放的broker物理机地址、文件地址以及对应的数据在文件中的开始位置。其中,broker agent可以从kafka存放数据的目录中解析文件,找到对应的offset的数据在对应文件的开始位置。然后将会返回物理机信息、文件路径和具体位置到服务端。
103.而离线查询对实时性的要求不高,因此可以批量性的在固定时间段内更新索引表的内容。示例性的,可以使用定时调度或者手动触发的方式来批量处理kafka中的目标数据并创建索引。
104.示例性的,可以设定一个检测周期,kafka根据该检测周期定时的检测kafka消息对立中的目标存储数据,若发现目标存储数据的存储状态发生改变时,就更新一次索引表中的内容。即索引表中的内容不是随时更新的,而是一个周期更新一次。
105.上述实施例介绍了索引表的构建方法。该实施例基于直接使用kafka作为数据查询的数据源的思想,为kafka中的目标存储数据建立了索引。当有查询需求的目标存储数据进入kafka时或者出kafka之后,可以使用流计算任务或者批处理任务对目标存储数据创建索引,并根据目标存储数据的索引字段值和数据具体存储地址建立索引表。这样,用户在访问查询引擎时会首先根据索引字段(查询字段)去索引表中查询目标存储数据的存储地址,然后快速定位到kafka的磁盘存储去获取到对应的数据。
106.基于图2所示实施例中创建的索引表,图3示出了进行数据查询的查询流程。图3为本技术实施例提供的一种数据查询方法的流程示意图。如图3所示,该查询方法包括:
107.301、根据用户查询请求确定目标存储数据中的待查询数据。
108.当kafka建立好关于目标存储数据的索引表之后,用户就可以向对kafka系统发送数据查询请求,对kafka消息队列中的目标存储数据直接进行查询,首先,kafka系统中的中转服务器需要获取用户端的数据查询操作,然后根据数据查询操作来确定目标存储数据中的待查询数据。
109.302、确定待查询数据的索引字段。
110.然后,需要确定待查询数据的索引字段,也就是待查询数据的查询字段。该索引字段用于查询索引表。由于索引表是索引字段与地址信息的对应关系表。因此,根据索引字段就能获得待查询数据的多个存储地址。
111.303、根据待查询数据的索引字段,在索引表中确定待查询数据对应的第一存储设备和地址信息和第二存储设备的地址信息。
112.具体的,获取到待查询数据的索引字段后,就需要查询索引表,根据索引表的内容来确定待查询字段的地址信息。由于kafka为分布式消息队列,其存储的数据大多都被多次备份,对应有至少一个数据备份。并且不同的数据备份以及原数据都存储在不同的存储设备上。因此,当用户需要查询待查询数据时,对原数据进行查询也可,对备份数据查询也可。kafka可以向用户提供原始的待查询数据对应的存储设备的地址信息,也可以向用户提供待查询数据的数据副本对应的存储设备的地址信息,然后基于地址信息直接定位到kafka的磁盘存储,获取到对应的数据来完成查询过程。
113.304、确定第一存储设备和第二存储设备中的目标设备。
114.示例性的,在上述描述中可以得知。待查询数据对应多个地址信息,即待查询数据具有多个数据备份,数据副本均被存储在kafka的不同broker服务器上。那么在进行待查询数据的查询时,可以先对多个存储设备进行筛选,选择其中的一个broker服务器进行数据查询。在确定好其中的目标设备时,向该目标设备发送数据请求信息。然后接收到数据请求信息的目标设备需要响应该数据请求信息,根据待查询数据的地址信息去确定待查询数据的数值。下面对如何选择目标设备进行介绍:
115.在一个可选的实施方式中,可以对每一个broker服务器的负载状态进行检测。broker服务器的负载状态反应了broker服务器的当前工作状态,当负载大时,说明broker服务器正在进行更多的数据处理,那么要是再利用负载大的broker服务器来进行数据查询
时,就会增大数据查询的延迟时间,使得数据查询速度变慢。所以基于负载均衡思想的考虑,可以选择负载较小的broker服务器来进行数据查询。示例性的,在获取每一个broker服务器的负载状态后,选择负载状态最小的broker服务器来进行数据查询,向该broker服务器发送数据查询请求。这样可以加快数据查询速度,降低延迟。
116.在一个可选的实施方式中,可以对每一个broker服务器的运行速率进行检测。broker服务器的运行速率反应了broker服务器的工作能力,当运行速率快时,说明broker服务器的工作性能高,其数据处理能力强。所以可以选择运行速率快的broker服务器来进行数据查询。示例性的,在获取每一个broker服务器的运行速率后,选择运行速率最快的broker服务器来进行数据查询,向该broker服务器发送数据查询请求。这样可以加快数据查询速度,降低延迟。
117.在另一个可选的实施方式中,kafka还可以支持目标存储数据的多线程查询,即可以同时向多个broker服务器发送数据请求信息,然后接收多个broker服务器反馈的目标存储数据的数值。这样可以防止因broker服务器发生故障而造成数据查询中断的问题。具体的,首先确定目标存储数据对应的多个地址信息,然后同时向多个地址信息对应的多个服务器发送数据查询请求。最后接收多个服务器反馈的目标存储数据的数值。这样,即使某一台broker服务器发生故障,用户端也能获取到目标存储数据的数值。
118.示例性的,在多个服务器响应数据查询请求并反馈响应信息时,还需要对多个响应信息进行合法性的检测。包括数据是否被损毁、是否被篡改等,以提高数据的安全性。最后根据合法性检测的检测结果,对多个响应信息进行筛选,确定其中的目标响应信息。再根据目标响应信息的内容来确定待查询数据的数值。
119.305、根据目标设备的地址信息,获取并返回待查询数据的数值。
120.在获取到目标设备的地址信息后,就需要向目标设备发送数据查询请求,然后接收目标设备发送的响应信息,直接定位到kafka的磁盘存储,去获取到对应的数据值即可。
121.示例性的,在数据查询结束后,还可以针对该次查询过程来建立查询记录,即记录待查询数据的数值是由目标设备来提供的。当再次接收到针对于该待查询数据的查询请求时,就可以优先向目标设备来发送数据查询请求,优先从目标设备获取待查询数据的数值。
122.本技术实施例所提供的技术方案,通过为kafka消息队列中的数据建立索引表的方式,来支持对kafka中的数据直接进行查询。具体的,先根据查询需求来确定kafka中的有查询需求的目标存储数据,然后获取目标存储数据及数据副本的多个存储地址信息,最后为目标数据建立索引字段以及索引表。这样,用户需要查询目标存储数据时,就可以先从索引表中获取目标存储数据的地址信息,然后根据地址信息直接查询。在上述技术方案中,kafka中的数据无需存储至下游数据仓库中供用户查询,不再占用多余的计算资源和存储资源,大大节约了存储资源。同时直接查询的方式减少了时间延迟,大大提高了数据查询的速度和效率。
123.图4为本技术实施例提供的一种数据处理装置的结构示意图。以下结合图4对本实施例提供的进行详细描述。以下描述所涉及的实施例用于解释本技术的技术方案,并不是实际使用的限定。
124.该数据处理装置包括:
125.确定单元401,用于确定kafka消息队列中的目标存储数据,其中,kafka消息队列
中包括多个存储设备对应的存储数据。
126.确定单元401,还用于根据kafka消息队列的数据存储信息,确定目标存储数据对应的第一存储设备的地址信息和目标存储数据的数据副本所对应的第二存储设备的地址信息。
127.建立单元402,用于根据kafka消息队列的主题分区信息,为目标存储数据建立索引字段。
128.建立单元402,还用于为目标存储数据建立索引表。其中,索引表为目标存储数据的索引字段与第一存储设备的地址信息和第二存储设备的地址信息的对应关系表。
129.在一个可选的实施方式中,该装置还包括发送单元403。
130.确定单元401,还用于根据用户查询请求确定目标存储数据中的待查询数据。确定待查询数据的索引字段。根据待查询数据的索引字段,在索引表中确定待查询数据对应的第一存储设备的地址信息和第二存储设备的地址信息。确定第一存储设备和第二存储设备中的目标设备。
131.发送单元403,用于根据目标设备的地址信息发送数据查询请求,数据查询请求用于指示目标设备获取并返回待查询数据的数值。
132.在一个可选的实施方式中,建立单元402,还用于建立针对于目标设备的查询记录,其中,查询记录用于指示当接收到用户查询请求后,优先向目标设备发送数据查询请求。
133.在一个可选的实施方式中,确定单元401,具体用于根据kafka消息队列的主题分区信息,确定kafka消息队列的目标主题下的目标存储数据。其中,kafka消息队列对应多个主题。根据kafka消息队列的数据存储信息,确定目标存储数据对应的数据副本。确定目标主题对应的分区信息。根据目标主题对应的分区信息,确定目标存储数据对应的第一分区地址和数据副本对应的第二分区地址。根据目标存储数据对应的第一分区地址确定第一存储设备的地址信息,其中,第一存储设备的地址信息包括第一分区地址和第一分区地址的地址偏移量。根据数据副本对应的第二分区地址,确定第二存储设备的地址信息。其中,第二存储设备的地址信息包括第二分区地址和第二分区地址的地址偏移量。
134.在一个可选的实施方式中,建立单元402,具体用于当目标存储数据为实时查询数据时,监测kafka消息队列中的目标存储数据。根据监测结果确定目标存储数据的更新状态。当目标存储数据被更新时,为目标存储数据建立索引字段。
135.在一个可选的实施方式中,建立单元402,具体用于当目标存储数据为离线查询数据时,在预设时间段内更新目标数据的索引字段。
136.在一个可选的实施方式中,确定单元401,具体用于确定第一存储设备和第二存储设备的负载状态。根据第一存储设备和第二存储设备的负载状态,确定第一存储设备和第二存储设备中的目标设备。
137.在一个可选的实施方式中,确定单元401,具体用于确定第一存储设备和第二存储设备的运行速率。根据第一存储设备和第二存储设备的运行速率,确定第一存储设备和第二存储设备中的目标设备。
138.在一个可选的实施方式中,确定单元401,还用于确定第一设备和第二设备中的多个目标设备。
139.发送单元403,具体用于向多个目标设备同时发送数据请求信息。
140.在一个可选的实施方式中,该装置还包括接收单元404。
141.接收单元404,用于接收多个目标设备发送的多个响应信息,其中,响应信息和数据请求信息对应。
142.确定单元401,还用于对多个响应信息进行合法性检测。根据合法性检测的检测结果,确定多个响应信息中的目标响应信息。根据目标响应信息确定待查询数据的数值。
143.本技术实施例所提供的数据处理装置,通过为kafka数据库中的数据建立索引表的方式,来支持对kafka中的数据直接进行查询。具体的,先根据查询需求来确定kafka中的有查询需求的目标存储数据,然后获取目标存储数据以及其副本的多个存储地址信息,最后为目标存储数据建立索引字段以及索引表。这样,用户需要查询目标存储数据时,就可以先从索引表中获取目标存储数据对应的存储设备的地址信息,然后根据地址信息直接查询。在上述技术方案中,kafka中的数据无需存储至下游数据仓库中供用户查询,不再占用多余的计算资源和存储资源,大大节约了存储资源。同时直接查询的方式减少了时间延迟,大大提高了数据查询的速度和效率。
144.需要说明的是,数据处理装置中各模块/单元之间的信息交互、执行过程等内容,与本技术中图1至图3对应的各个方法实施例基于同一构思,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
145.接下来介绍本技术实施例提供的一种服务器,请参阅图5,图5为本技术实施例提供的服务器的一种结构示意图。服务器800具体可以表现为虚拟现实vr设备、手机、平板、笔记本电脑、智能穿戴设备、监控数据处理设备或者雷达数据处理设备等,此处不做限定。其中,服务器800上可以部署有图5对应实施例中所描述的手势识别装置,用于实现图1至图3对应实施例中的功能。具体的,服务器800包括:接收器801、发射器802、处理器803和存储器804(其中执行设备800中的处理器803的数量可以一个或多个,图5中以一个处理器为例),其中,处理器803可以包括应用处理器8031和通信处理器8032。在本技术的一些实施例中,接收器801、发射器802、处理器803和存储器804可通过总线或其它方式连接。
146.存储器804可以包括只读存储器和随机存取存储器,并向处理器803提供指令和数据。存储器804的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,nvram)。存储器804存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
147.处理器803控制执行设备的操作。具体的应用中,执行设备的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
148.上述本技术实施例揭示的方法可以应用于处理器803中,或者由处理器803实现。处理器803可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器803可以是通用处理器、数字信号处理器(digital signal processing,dsp)、微处理器或微控制器,还可进一步包括专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可
编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器803可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器804,处理器803读取存储器804中的信息,结合其硬件完成上述方法的步骤。
149.接收器801可用于接收输入的数字或字符信息,以及产生与执行设备的相关设置以及功能控制有关的信号输入。发射器802可用于通过第一接口输出数字或字符信息;发射器802还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器802还可以包括显示屏等显示设备。
150.本技术实施例中,处理器803中的应用处理器8031,用于执行图1至图3对应实施例中的方法。需要说明的是,应用处理器8031执行各个步骤的具体方式,与本技术中图1至图3对应的各个方法实施例基于同一构思,其带来的技术效果与本技术中图1至图3对应的各个方法实施例相同,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
151.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质包括计算机指令,计算机指令在被处理器执行时用于实现本技术实施例中任意一种数据处理方法的技术方案。
152.本技术虽然以较佳实施例公开如上,但其并不是用来限定本技术,任何本领域技术人员在不脱离本技术的精神和范围内,都可以做出可能的变动和修改,因此本技术的保护范围应当以本技术权利要求所界定的范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1