一种数据处理方法及装置制造方法及图纸

技术编号:23704336 阅读:49 留言:0更新日期:2020-04-08 11:04
本发明专利技术实施例提供一种数据处理方法及装置,涉及计算机领域。该方法能够提供系统资源的使用效率,提高高并行写入Kafka的速度。该方法包括:将接收到的消息存入环形数组中;利用第二线程池中的处理线程,依次对环形数组中的消息进行处理并利用Kafka Producer池中的Producer将处理结果写入Kafka系统的Broker节点;其中,第二线程池中包括预设个数的处理线程;Kafka Producer池中包括预设个数的Producer。本发明专利技术应用于Kafka写入。

【技术实现步骤摘要】
一种数据处理方法及装置
本专利技术涉及计算机领域,尤其涉及一种数据处理方法及装置。
技术介绍
在Kafka系统中,在每次获取到消息时,节点通常需要对应创建相应的线程用于接收、处理消息并调用Producer将处理后的消息发送至Kafka系统中对应的Broker。
技术实现思路
本专利技术的的实施例提供一种数据处理方法及装置,能够提供系统资源的使用效率,提高高并行写入Kafka的速度。第一方面,本专利技术提供一种数据处理方法,该方法包括:将接收到的消息存入环形数组中;利用第二线程池中的处理线程,依次对环形数组中的消息进行处理并利用KafkaProducer池中的Producer将处理结果写入Kafka系统的Broker节点;其中,第二线程池中包括预设个数的处理线程;KafkaProducer池中包括预设个数的Producer。第二方面,本专利技术实施例提供一种数据处理装置,该数据处理装置包括:消息接收单元,用于将接收到的消息存入环形数组中;消息写入单元,在消息接收单元将接收到的消息存入环形数组中后,利用第二线程池中的处理线程,依次对环形数组中的消息进行处理并利用KafkaProducer池中的Producer将处理结果写入Kafka系统的Broker节点;其中,第二线程池中包括预设个数的处理线程;KafkaProducer池中包括预设个数的Producer。第三方面,本专利技术实施例提供另一种数据处理装置,包括:处理器、存储器、总线和通信接口;存储器用于存储计算机执行指令,处理器与存储器通过总线连接,当数据处理装置运行时,处理器执行上述存储器存储的上述计算机执行指令,以使数据处理装置执行如上述第一方面所提供的数据处理方法。第四方面,本专利技术实施例提供一种计算机存储介质,包括指令,当其在数据处理装置上运行时,使得数据处理装置执行上述第一方面所提供的数据处理方法。本专利技术实施例所提供的数据处理方法及装置,在设备需要处理接收到的消息并将处理结果写入Kafka时,将消息接收过程、消息处理过程进行分离。在接收到消息,先利用接收线程将接收到的消息存入环形数组。再由第二线程池中的线程对环形数组中的消息进行处理。再通过调用KafkaProducer池中的Producer,将处理结果写入Kafka。从而实现了以下技术效果:首先,本专利技术中当设备突然高并发的接收数据时,不需要同时创建对应个数的处理进程对消息进行处理,而是先将消息缓存至环形数组中,然后利用第二线程池中有限个数个处理线程,依次对环形数组中的消息进行处理,节省了设备的系统资源。并且,本专利技术中通过改变进程处理消息后写入Kafka的处理逻辑,在进程对消息进行处理后,不再单独创建Producer来进行Kafka写入,而是通过调用KafkaProducer池中的Producer来完成写入操作。从而避免在高并发时频繁创建Producer实例而使系统资源使用不平稳的问题。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为本专利技术实施例提供的一种数据处理方法流程示意图;图2为本专利技术实施例提供的一种数据处理装置的结构示意图;图3为本专利技术实施例提供的另一种数据处理装置的结构示意图;图4为本专利技术实施例提供的又一种数据处理装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本专利技术。在本专利技术实施例和所附权利要求书中所使用的单数形式的“一种”、“”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。另外,还应当理解,本文中使用的术语“多个”、“多组”是指包含两个或两个以上的列出项目的任何或所有可能组合。首先,对本专利技术实施例所涉及的术语进行解释:Java,一种流行的计算机软件开发语言。Java语言吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Kafka,由Apache软件基金会开发的一个开源流处理平台,一种高吞吐量的分布式发布订阅消息系统。在一个Kafka集群中,包括多种类型的节点。具体包括:用于存储消息的Broker、用于向KafkaBroker写入消息的Producer、用于从KafkaBroker读取消息的客户端Consumer等。以下对本专利技术的专利技术构思进行介绍:目前,设备在向Kafka写入消息时,通常的处理方法是创建对应的进程来接收消息、处理消息,再创建Producer将处理结果对应的消息写入Kafka中的Broker节点。这样一来,当系统处于高并行状态时,即设备同时接收多条消息时,则需要对应的创建与接收消息个数对应的线程以及Producer,来完成Kafka的写入动作。这极大的占用了系统资源。针对上述情况,本专利技术中想到,通过将设备的接收消息和处理消息的动作解耦合,当接收消息时将接收到的消息先存入环形数组中进行缓存。然后,再调用线程池中的处理线程,依次对环形数组中的消息进行处理。然后再调用KafkaProducer池中的Producer将处理结果写入Broker节点。在本专利技术中,由于采用了当接收消息时将接收到的消息先存入环形数组中进行缓存的手段,进而不需要在接收消息后创建对应的线程,来立即对接收到的消息进行处理。而采用第二线程池中有限个数的处理线程,依次对环形数组中的消息进行处理。从而避免重复执行创建线程的动作,提高了系统资源的使用效率。另外,本专利技术中,还通过将消息的处理过程与Kafka写入过程进行解耦合,通过创建预设个数的Producer,并使第二线程池中有限个数的处理线程共用预设个数的Producer来完成向Broker节点写入消息的功能。从而,进一步提高了系统资源的使用效率。基于上述专利技术原理,本专利技术实施例提供一种数据处理方法,如图1所示,该方法具体包括:S101、将接收到的消息存入环形数组中。在一种实现方式中,将接收到的消息存入环形数组中,具体包括:在接收消息时,调用第一线程池中的接收线程接收消息并将消息存入环形数组中。其中,第一线程池中包括预设个数的接收线程。本专利技术实施例中,通过创建一个包括预设个数接收线程的第一线程池,当需要接收消息时,直接调用第一线程池中的线程来接收消息并将消息存入环形数组中。进而,避免每次接收消息时,都需要重新执行创建线程来接收消息的步骤,降低了系统资源的消耗。在一种实现方式中,本专利技术实施例中可以采用设置多个环形数组的方式本文档来自技高网...

【技术保护点】
1.一种数据处理方法,其特征在于,所述方法包括:/n将接收到的消息存入环形数组中;/n利用第二线程池中的处理线程,依次对所述环形数组中的消息进行处理并利用KafkaProducer池中的Producer将处理结果写入Kafka系统的Broker节点;其中,所述第二线程池中包括预设个数的处理线程;所述Kafka Producer池中包括预设个数的Producer。/n

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法包括:
将接收到的消息存入环形数组中;
利用第二线程池中的处理线程,依次对所述环形数组中的消息进行处理并利用KafkaProducer池中的Producer将处理结果写入Kafka系统的Broker节点;其中,所述第二线程池中包括预设个数的处理线程;所述KafkaProducer池中包括预设个数的Producer。


2.根据权利要求1所述数据处理方法,其特征在于,所述将接收到的消息存入环形数组中,具体包括:
在接收消息时,调用第一线程池中的接收线程接收消息并将消息存入环形数组中;其中,所述第一线程池中包括预设个数的接收线程。


3.根据权利要求2所述数据处理方法,其特征在于,所述在接收消息时,调用第一线程池中的接收线程接收消息并将消息存入环形数组中,具体包括:
在接收消息时,从所述第一线程池中选择预设接收线程,利用所述预设接收线程接收消息,并将接收到的消息存入预设的m个环形数组中存储消息量最少的环形数组。


4.根据权利要求3所述数据处理方法,其特征在于,所述第二线程池中包括m个线程组,其中每个线程组分别对所述m个环形数组中的一个环形数组中的消息进行处理并利用KafkaProducer池中的Producer将处理结果写入Kafka系统的Broker节点。


5.根据权利要求4所述数据处理方法,其特征在于,所述方法还包括:
根据当前的系统资源使用量,确定所述第一线程池中的接收线程的个数、所述第二线程池中的处理线程的个数、环形数组的个数以及所述KafkaProducer池中Producer的个数。


6.一种数据处理装置,其特征在于,所...

【专利技术属性】
技术研发人员:李晓东陈世强钟华剑徐雅光刘利刚
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1