一种基于kafka的消息处理方法技术

技术编号:15329835 阅读:32 留言:0更新日期:2017-05-16 13:25
本发明专利技术实施例公开了一种基于kafka的消息处理方法,应用于kafka的生产者,该方法包括:在发布消息时,调用生产者拦截器,所述生产者拦截器用于拦截生产者发布消息的参数;将发布消息的参数作为参数记录输出。本发明专利技术实施例还公开了一种基于kafka的消息处理方法,应用于kafka的消费者,该方法包括:在订阅消息时,调用消费者拦截器,所述消费者拦截器用于拦截消费者订阅消息的参数;将订阅消息的参数作为参数记录输出。本发明专利技术实施例通过生产者拦截器和消费者拦截器拦截发布消息和订阅消息的参数,从而拦截生产者和消费者在集群中的不同点的消息,继而观测不同的应用程序不同的消息度量,实现跨集群跟踪消息路径,为kafka系统出错后的检测分析提供了依据。

A message processing method based on Kafka

The embodiment of the invention discloses a processing method of Kafka message based on Kafka applied to the producers, the method includes: in the news release, the producers call interceptor, the interceptor to intercept parameter producers released news producers will release news; parameter as a parameter to record the output. The embodiment of the invention also discloses a processing method of Kafka message based on Kafka applied to consumers, the method includes: in the subscription message, call the consumer interceptor, the consumer interceptor parameters used to intercept consumers subscribe to messages; the parameter subscription message as a parameter to record the output. The embodiment of the invention by producers and consumers of interceptor interceptor to intercept parameters of news release and subscription messages, to intercept the producers and consumers of different points in the cluster of the message, and then observed the different application of different message metrics, to achieve inter cluster tracking message path, provides the basis for the detection and analysis of Kafka system after error.

【技术实现步骤摘要】
一种基于kafka的消息处理方法
本专利技术实施例涉及大数据技术,尤其涉及一种基于kafka的消息处理方法。
技术介绍
Kafka是一种高吞吐量的分布式发布订阅消息系统,kafka开发的主要目标是构建一个用来处理海量日志、用户行为和网站运营统计等的数据处理框架,在结合了数据挖掘、行为分析、运营监控等需求的情况下,需要能够满足各种实时在线和批量离线处理应用场合对低延迟和批量吞吐性能的要求。Kafka集群包含一个或多个服务器,这种服务器被称为broker,每条发布到kafka集群的消息都有一个主题,该主题被称为topic,每个topic包含一个或多个分区,该分区被称为partition,同一topic内部的消息按照一定的key和算法被分区存储在不同的broker上,消息生产者producer和消费者consumer作为客户端可以在多个broker上生产或消费topic。目前,kafka度量标准仅针对单个客户端或代理收集,这使得用户难以跟踪跨集群的单个消息的路径,提供系统性能和行为的完整端到端的场景。然而观察、测量和监视kafka客户端行为的能力在生产环境中很有价值,这为kafka系统出错后的检测分析提供了依据。
技术实现思路
本专利技术实施例提供一种基于kafka的消息处理方法,以解决现有技术中难以跟踪跨集群的单个消息路径的问题。第一方面,本专利技术实施例提供了一种基于kafka的消息处理方法,应用于kafka的生产者,该方法包括:在发布消息时,调用生产者拦截器,所述生产者拦截器用于拦截生产者发布消息的参数;将发布消息的参数作为参数记录输出。第二方面,本专利技术实施例还提供了一种基于kafka的消息处理方法,应用于kafka的消费者,该方法包括:在订阅消息时,调用消费者拦截器,所述消费者拦截器用于拦截消费者订阅消息的参数;将订阅消息的参数作为参数记录输出。本专利技术实施例通过在kafka的生产者与消费者架构中增加生产者拦截器和消费者拦截器,通过该生产者拦截器在生产者发布消息时拦截发布消息的参数,以及通过消费者拦截器在消费者订阅消息时拦截订阅消息的参数,从而拦截生产者和消费者在集群中的不同点的消息,继而观测不同的应用程序不同的消息度量,实现跨集群跟踪消息路径,为kafka系统出错后的检测分析提供了依据。附图说明图1是本专利技术实施例一中的基于kafka的消息处理方法的流程图;图2是本专利技术实施例一中的基于kafka的消息处理方法的应用实例的流程图;图3是本专利技术实施例二中的基于kafka的消息处理方法的流程图;图4是本专利技术实施例二中的基于kafka的消息处理方法的应用实例的流程图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。Python是一种面向对象的解释型计算机程序设计语言。实施例一图1为本专利技术实施例一提供的基于kafka的消息处理方法的流程图,本实施例可适用于kafka的生产者客户端,该方法可以由生产者客户端来执行。本专利技术实施例一的方法具体包括:S110、在发布消息时,调用生产者拦截器,所述生产者拦截器用于拦截生产者发布消息的参数;S120、将发布消息的参数作为参数记录输出。具体的,在Kafka集群中,每条发布到kafka集群的消息都有一个主题,该类别被称为topic,每个topic包含一个或多个分区,该分区被称为partition,同一topic内部的消息按照一定的key和算法被分区存储在不同的broker上,存储的位置由偏移量表示,按照一定的key和算法处理的过程称为键值序列化,消息生产者producer和消费者consumer作为客户端可以在多个broker上生产或消费topic。由此,生产者发布消息的参数可以包括消息的主题、分区、偏移量和键值。相应的,生产者拦截器包括四种类型:生产者主题拦截器、生产者分区拦截器、生产者偏移量拦截器和生产者键值拦截器,分别用于拦截生产者发布消息的主题、分区、偏移量和键值。在实施时,可以根据需要,选择对应的拦截器拦截需要的参数。进一步的,每种类型的生产者拦截器均定义在生产者拦截器列表中,而且每种类型的生产者拦截器的数量均为至少一个,每个拦截器都有自己的生命周期,由时长表示,也即每个拦截器在执行完拦截操作一定时间后就会停止操作。因此,调用生产者拦截器包括:针对生产者拦截器列表中每种类型的至少一个生产者拦截器,进行依次调用,其中,在同种类型的至少一个生产者拦截器中,每个生产者拦截器还用于将拦截到的参数传递给下一个生产者拦截器;相应的,将发布消息的参数作为参数记录输出包括:将生产者拦截器列表中每种类型的最后一个生产者拦截器拦截到的参数,以及最后一个生产者拦截器从其上一个生产者拦截器传递得到的参数,作为参数记录输出。具体的,生产者客户端在发布消息时,调用目标类型的生产者拦截器用以拦截该目标类型的参数,该目标类型可以是主题、分区、偏移量和键值中的一个或多个。在调用时,选择生产者拦截器列表中的第一个目标类型的生产者拦截器进行调用,该拦截器被调用后,会持续拦截生产者发布消息的目标类型的参数,直到到达该拦截器的操作时长为止,之后生产者客户端会选择生产者拦截器列表中的下一个目标类型的生产者拦截器进行调用,接着拦截目标类型的参数。而在此过程中,已经被调用的生产者拦截器会将其拦截到的参数传递给下一个被调用的生产者拦截器,以此类推,列表中的最后一个目标类型的拦截器会将其拦截到的目标类型的参数,和从其上一个生产者拦截器传递得到的参数,一起作为参数记录输出,从而输出得到生产者客户端发布全部消息的全部目标类型的参数。这些输出的参数记录可以供技术人员查看、分析,从而为kafka系统出错后的检测提供依据。在一种优选的实施方式中,每个生产者拦截器还会在时长结束之前,判断所拦截到的参数中是否存在无效信息,并在判断为存在无效信息时,将无效信息更改为空值。在kafka中每种参数的格式都是有标准的,那么明显不符合该标准的参数即为无效信息,此时,会在相应位置上赋值为空,从而避免记录出错。基于该优选实施方式可知,生产者拦截器有可能会修改拦截到的主题、分区、偏移量和键值的记录,因此,在调用生产者拦截器的操作中,在同种类型的至少一个生产者拦截器中,每个生产者拦截器还用于将拦截到的参数传递给下一个生产者拦截器,则可以将存在修改的记录进行继承,从而保存最原始和正确的参数记录。在另一种优选的实施方式中,若调用的某一个生产者拦截器抛出异常,为了不丢失该抛出异常的拦截器的参数记录,则在生产者拦截器列表的与所述抛出异常的生产者拦截器类型相同的生产者拦截器中,将所述抛出异常的生产者拦截器之前被调用并无异常的生产者拦截器拦截到的参数传递给下一个生产者拦截器,并调用下一个生产者拦截器进行参数拦截,从而实现生产者参数拦截的持续性。此外,根据kafka标准,在传递参数时,还需要同时抛出所述异常给生产者的onAcknowledgement()方法,用于处理该异常,使得元数据不为空,从而保证拦截操作的延续性。优选的,onAcknowledgement()方法在生产者的I/O线程上调用,拦截器本文档来自技高网...
一种基于kafka的消息处理方法

【技术保护点】
一种基于kafka的消息处理方法,应用于kafka的生产者,其特征在于,所述方法包括:在发布消息时,调用生产者拦截器,所述生产者拦截器用于拦截生产者发布消息的参数;将发布消息的参数作为参数记录输出。

【技术特征摘要】
1.一种基于kafka的消息处理方法,应用于kafka的生产者,其特征在于,所述方法包括:在发布消息时,调用生产者拦截器,所述生产者拦截器用于拦截生产者发布消息的参数;将发布消息的参数作为参数记录输出。2.根据权利要求1所述的方法,其特征在于,所述生产者发布消息的参数包括消息的主题、分区、偏移量和键值;相应的,所述生产者拦截器包括四种类型:生产者主题拦截器、生产者分区拦截器、生产者偏移量拦截器和生产者键值拦截器,分别用于拦截生产者发布消息的主题、分区、偏移量和键值。3.根据权利要求2所述的方法,其特征在于,所述每种类型的生产者拦截器的数量均为至少一个,并分别定义在生产者拦截器列表中;相应的,所述调用生产者拦截器包括:针对所述生产者拦截器列表中每种类型的至少一个生产者拦截器,进行依次调用,其中,在同种类型的至少一个生产者拦截器中,每个生产者拦截器还用于将拦截到的参数传递给下一个生产者拦截器;相应的,所述将发布消息的参数作为参数记录输出包括:将所述生产者拦截器列表中每种类型的最后一个生产者拦截器拦截到的参数,以及所述最后一个生产者拦截器从其上一个生产者拦截器传递得到的参数,作为参数记录输出。4.根据权利要求3所述的方法,其特征在于,所述每个生产者拦截器还用于判断所拦截到的参数中是否存在无效信息,并在判断为存在无效信息时,将无效信息更改为空值。5.根据权利要求3所述的方法,其特征在于,所述调用生产者拦截器还包括:当调用的生产者拦截器抛出异常时,则在所述生产者拦截器列表的与所述抛出异常的生产者拦截器类型相同的生产者拦截器中,将所述抛出异常的生产者拦截器之前被调用并无异常的生产者拦截器拦截到的参数传递给下一个生产者拦截器;调用所述下一个生产者拦截器进行参数拦截。...

【专利技术属性】
技术研发人员:杨佳辉朱林
申请(专利权)人:北京锐安科技有限公司
类型:发明
国别省市:北京,11

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

1