一种用于Apache Kafka的消费信息流处理方法及系统技术方案

技术编号:23764406 阅读:29 留言:0更新日期:2020-04-11 19:04
本发明专利技术公开了一种用于Apache Kafka的消费信息流处理方法及系统,方法包括:计算拉取数据的处理时间,判断处理时间是否大于拉取超时时间,若是,则:拉取新的数据进行处理;若否,则:计算拉取数据线程暂停时间,在暂停时间内暂停拉取数据。本发明专利技术能够最大限度的利用Java线程池,提高程序运行效率,减少触发Apache Kafka选举机制的次数,进而提升信息系统的吞吐量。

A processing method and system of consumption information flow for Apache Kafka

【技术实现步骤摘要】
一种用于ApacheKafka的消费信息流处理方法及系统
本专利技术涉及信息处理
,尤其涉及一种用于ApacheKafka的消费信息流处理方法及系统。
技术介绍
ApacheKafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写;是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据。目前,ApacheKafka这种高吞吐量的分布式发布订阅消息系统在银行系统得到广泛应用。如图1所示,在应用场景中,需要采集的数据包括ATM、叫号机、网点WIFI等渠道的交易信息及用户行为信息,种类繁多,划分为多个Topic(每条发布到Kafka集群的消息队列都有一个类别,这个类别被称为Topic);交易量大,仅ATM日均采集交易量1500万笔,吞吐量要求比较高;针对同一个Topic中的每个消息可能需要复杂的处理逻辑。作为一个消息系统,ApacheKafka基本结构中有产生消息的组件(消息生产者),以及消费消息的组件(消费者)。生产者负责生产消息,将消息写入ApacheKafka集群;消费者从ApacheKafka集群中拉取消息。这里,将多个渠道采集的数据包括ATM、超柜、叫号机等报文消息写入ApacheKafka集群,将对消息的处理单元作为消费者。消费者消费消息队列中的消息时,存在两种配置方式。其一,拉取固定大小的消息;其二,拉取固定个数的消息。在应用场景中,各个渠道的报文长度是不固定的,第一种方式存在拉取过程中,消息被截断、不完整的问题。所以这种应用场景下,需要采取第二种方式,拉取固定个数的消息。但是,在ApacheKafka使用中,需要指定消费者读取最长等待时间,从而避免长时间阻塞,如果超过这个最长等待时间,会引发ApacheKafka重新选举机制,从而使得信息系统的性能大幅度下降。在多次拉取大量数据时,存在因为机器处理性能而阻塞,拉取时间间隔不断延长,频繁超出最长等待时间的问题。因此,如何最大限度的利用Java线程池,提高程序运行效率,减少触发ApacheKafka选举机制的次数,进而提升信息系统的吞吐量,是一项亟待解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种用于ApacheKafka的消费信息流处理方法,能够最大限度的利用Java线程池,提高程序运行效率,减少触发ApacheKafka选举机制的次数,进而提升信息系统的吞吐量。本专利技术提供了一种用于ApacheKafka的消费信息流处理方法,包括:计算拉取数据的处理时间;判断所述处理时间是否大于拉取超时时间,若是,则:拉取新的数据进行处理;若否,则:计算拉取数据线程暂停时间;在所述暂停时间内暂停拉取数据。优选地,所述计算拉取数据的处理时间包括:获取处理数据线程开始时间;获取处理数据线程完成时间;基于所述处理数据线程完成时间和所述处理数据线程开始时间的差值得到所述拉取数据的处理时间。优选地,所述计算拉取数据线程暂停时间,包括:基于公式确定拉取数据线程暂停时间,其中,downbound为暂停的最短时间,upbound为暂停的最长时间,right为暂停时间的权值调整系数,所述其中,threadActiveNumber为应用程序线程池中已使用的线程个数,threadTotalNumber为应用程序线程池中线程总个数。优选地,所述暂停的最长时间upbound的取值与拉取超时时间pollTimeOut有关,关系为min(pollTimeOut,upbound)。优选地,所述暂停的最短时间downbound和暂停时间的权值调整系数right为测试经验值。一种用于ApacheKafka的消费信息流处理系统,包括:第一计算模块,用于计算拉取数据的处理时间;判断模块,用于判断所述处理时间是否大于拉取超时时间;拉取模块,用于当所述处理时间大于拉取超时时间时,拉取新的数据进行处理;第二计算模块,用于当所述处理时间小于等于拉取超时时间时,计算拉取数据线程暂停时间;暂停模块,用于在所述暂停时间内暂停拉取数据。优选地,所述第一计算模块包括:第一获取单元,用于获取处理数据线程开始时间;第二获取单元,用于获取处理数据线程完成时间;计算单元,用于基于所述处理数据线程完成时间和所述处理数据线程开始时间的差值得到所述拉取数据的处理时间。优选地,所述第二计算模块在执行计算拉取数据线程暂停时间时,具体用于:基于公式确定拉取数据线程暂停时间,其中,downbound为暂停的最短时间,upbound为暂停的最长时间,right为暂停时间的权值调整系数,所述其中,threadActiveNumber为应用程序线程池中已使用的线程个数,threadTotalNumber为应用程序线程池中线程总个数。优选地,所述暂停的最长时间upbound的取值与拉取超时时间pollTimeOut有关,关系为min(pollTimeOut,upbound)。优选地,所述暂停的最短时间downbound和暂停时间的权值调整系数right为测试经验值。综上所述,本专利技术公开了一种用于ApacheKafka的消费信息流处理方法,首先计算拉取数据的处理时间,然后判断处理时间是否大于拉取超时时间,若是,则:拉取新的数据进行处理;若否,则:计算拉取数据线程暂停时间,在暂停时间内暂停拉取数据。本专利技术能够最大限度的利用Java线程池,提高程序运行效率,减少触发ApacheKafka选举机制的次数,进而提升信息系统的吞吐量。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术公开的ApacheKafka的一种应用架构示意图;图2为现有技术公开的ApacheKafka消息消费过程示意图;图3为本专利技术公开的一种用于ApacheKafka的消费信息流处理方法实施例1的方法流程图;图4为本专利技术公开的一种用于ApacheKafka的消费信息流处理方法实施例2的方法流程图;图5为本专利技术公开的一种用于ApacheKafka的消费信息流处理系统实施例1的结构示意图;图6为本专利技术公开的一种用于ApacheKafka的消费信息流处理系统实施例2的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图2所示,在数据消费场景中,消费者第本文档来自技高网
...

【技术保护点】
1.一种用于Apache Kafka的消费信息流处理方法,其特征在于,包括:/n计算拉取数据的处理时间;/n判断所述处理时间是否大于拉取超时时间,若是,则:拉取新的数据进行处理;若否,则:/n计算拉取数据线程暂停时间;/n在所述暂停时间内暂停拉取数据。/n

【技术特征摘要】
1.一种用于ApacheKafka的消费信息流处理方法,其特征在于,包括:
计算拉取数据的处理时间;
判断所述处理时间是否大于拉取超时时间,若是,则:拉取新的数据进行处理;若否,则:
计算拉取数据线程暂停时间;
在所述暂停时间内暂停拉取数据。


2.根据权利要求1所述的方法,其特征在于,所述计算拉取数据的处理时间包括:
获取处理数据线程开始时间;
获取处理数据线程完成时间;
基于所述处理数据线程完成时间和所述处理数据线程开始时间的差值得到所述拉取数据的处理时间。


3.根据权利要求2所述的方法,其特征在于,所述计算拉取数据线程暂停时间,包括:
基于公式确定拉取数据线程暂停时间,其中,downbound为暂停的最短时间,upbound为暂停的最长时间,right为暂停时间的权值调整系数,所述其中,threadActiveNumber为应用程序线程池中已使用的线程个数,threadTotalNumber为应用程序线程池中线程总个数。


4.根据权利要求3所述的方法,其特征在于,所述暂停的最长时间upbound的取值与拉取超时时间pollTimeOut有关,关系为min(pollTimeOut,upbound)。


5.根据权利要求4所述的方法,其特征在于,所述暂停的最短时间downbound和暂停时间的权值调整系数right为测试经验值。


6.一种用于ApacheKafka的消费信息流处理系统,其特征在于,包括:
第一计算...

【专利技术属性】
技术研发人员:赵晓王瑞聪申文龙
申请(专利权)人:中国农业银行股份有限公司
类型:发明
国别省市:北京;11

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

1