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

技术编号:14769226 阅读:132 留言:0更新日期:2017-03-08 13:22
本发明专利技术公开一种基于kafka的处理消息的方法,模式信息作为消息头信息的一部分随消息一起发送,在消息传输时使用Apache Avro为消息传输格式。另一种方法,通过消息模式注册服务来实现消息模式变更通知,对于上游生产者应用生成的消息在发往kafka之前先到Schema Registrar注册并生成对应的模式编号,而随消息一起传递的是从模式注册服务获取到的该消息模式对应的编号,当下游消费者应用通过kafka获取到消息时,首先解析消息元数据信息,拿到消息模式编号,如果应用内存中有模式编号对应的模式信息,则根据模式信息解析消息,如果内存中没有,则应用发起请求根据模式编号从Schema Registrar中获取模式信息,然后根据模式信息解析消息,并缓存该模式信息。

【技术实现步骤摘要】

本专利技术涉及大数据处理和实时计算的
,尤其涉及一种基于kafka的处理消息的方法
技术介绍
中国专利申请(申请号:CN201510099439.9)公开了一种基于kafka的消息处理系统及处理方法。现有基于消息队列kafka的生产者和消费者应用中,上游生产者应用生成消息并发送到kafka,下游消费者应用根据上游生产者应用事先定好的消息格式消费kafka中的消息,上游消息模式变更的时候,必须通知下游消费者应用,开发人员对消费者应用做代码调整和二次开发以适应上游新的消息模式。但是,现有基于消息队列kafka的生产者和消费者应用中,下游消息消费者应用严重依赖于上游生产者应用生成的消息以及消息模式,当个上游应用由于需求变更,或者其他原因导致生成的消息模式发生变化,如果没有通知到下游应用时,会导致下游消费者应用抛出异常。即使上游生产者生成的消息模式变更通知到了下游,下游的开发人员也需要对应用做代码调整和二次开发以适应上游新的消息模式。
技术实现思路
为克服现有技术的缺陷,本专利技术要解决的技术问题是提供了一种基于kafka的处理消息的方法,其在上游生产者发往消息队列kafka中的消息在模式上有变动的情况下,下游消费者应用能够自动识别新消息的消息模式,并能根据不同消息的消息模式自动使用相应的解析方法解析消息,这样避免了由于上游消息模式变更导致下游应用异常的情况。本专利技术的技术方案是:这种基于kafka的处理消息的方法,模式信息作为消息头信息的一部分随消息一起发送,在消息传输时使用ApacheAvro为消息传输格式。还提供了另一种基于kafka的处理消息的方法,通过消息模式注册服务来实现消息模式变更通知,对于上游生产者应用生成的消息在发往kafka之前先到模式注册服务SchemaRegistrar注册并生成对应的模式编号,而随消息一起传递的是从模式注册服务获取到的该消息模式对应的编号,当下游消费者应用通过kafka获取到消息时,首先解析消息元数据信息,拿到消息模式编号,如果应用内存中有模式编号对应的模式信息,则根据模式信息解析消息,如果内存中没有模式编号对应的模式信息,则应用发起请求根据模式编号从模式注册服务SchemaRegistrar中获取模式信息,然后根据模式信息解析消息,并缓存该模式信息。本专利技术通过模式信息作为消息头信息的一部分随消息一起发送,在消息传输时使用ApacheAvro为消息传输格式,或者消息模式通过模式注册服务来实现消息模式变更通知,从而在上游生产者发往消息队列kafka中的消息在模式上有变动的情况下,下游消费者应用能够自动识别新消息的消息模式,并能根据不同消息的消息模式自动使用相应的解析方法解析消息,这样避免了由于上游消息模式变更导致下游应用异常的情况。附图说明图1所示为根据本专利技术的基于kafka的处理消息的方法的一个实施例的流程图。图2所示为根据本专利技术的基于kafka的处理消息的方法的另一个实施例的流程图。具体实施方式这种基于kafka(kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。)的处理消息的方法,模式信息作为消息头信息的一部分随消息一起发送,在消息传输时使用ApacheAvro为消息传输格式。模式信息作为消息头信息的一部分随消息一起发送,这种方式可以确保每一条生产者生成的消息都带有消息模式随消息一起被发送到消息队列kafka,下游消费者应用在从kafka获取到消息时,同时也获取到了消息的模式信息,通过模式信息,下游应用就可以正确的解析消息,及时上游生产者生成的消息模式发生变化,下游消费者也能根据变化后的消息模式解析消息信息,确保了每一条消息都能够被正确的解析。为了实现这种方法,在消息传输时可以使用ApacheAvro为消息传输格式,ApacheAvro是一个数据序列化系统,有着诸多优良特性。Avro是一种非常节约空间的二进制序列化格式,Python等动态语言对它支持非常好,而且不需要生成代码。最重要的特性是它支持模式演进,这意味着在版本兼容的前提下,写程序和读程序可以用不同版本的模式来各自生产和消费数据。这就非常完美地把生产者和消费者解耦开了,生产者可以按需要迭代演进数据的模式,而不需要消费者亦步亦趋地跟着改变。所有用Avro编码的消息都已经用有模式定义的消息头封装起来了,消息头包括消息UUID、加密细节、时间戳、消息编码所使用的模式信息等。这样下游消费者程序就可以动态地在解码时再获取模式并解析消息。因此,通过该方法,在上游生产者发往消息队列kafka中的消息在模式上有变动的情况下,下游消费者应用能够自动识别新消息的消息模式,并能根据不同消息的消息模式自动使用相应的解析方法解析消息,这样避免了由于上游消息模式变更导致下游应用异常的情况。另外,如图1所示,该方法包括以下步骤:(1)生产者应用生成带消息模式的消息;(2)消息队列kafka存储带消息模式的消息;(3)消费者应用从kafka中获取带消息模式的消息并消费消息。另外,该方法还包括步骤(4),如果生产者应用生成的消息对应的消息模式发生变更,消费者应用直接根据消息头获取到变更后的消息模式,并根据消息模式解析变更模式之后的消息。另外,所述步骤(1)中,消息模式封装到消息头里面,消息头还包括消息UUID、加密细节、时间戳。另外,所述步骤(2)中,kafka中存储的消息是带消息模式的消息。另外,所述步骤(3)中,消费者应用从kafka中获取带消息模式的信息,先从消息头里面拿到消息模式,然后通过消息模式解析消息内容。还提供了另一种基于kafka的处理消息的方法,通过消息模式注册服务来实现消息模式变更通知,对于上游生产者应用生成的消息在发往kafka之前先到模式注册服务SchemaRegistrar注册并生成对应的模式编号,而随消息一起传递的是从模式注册服务获取到的该消息模式对应的编号,当下游消费者应用通过kafka获取到消息时,首先解析消息元数据信息,拿到消息模式编号,如果应用内存中有模式编号对应的模式信息,则根据模式信息解析消息,如果内存中没有模式编号对应的模式信息,则应用发起请求根据模式编号从模式注册服务SchemaRegistrar中获取模式信息,然后根据模式信息解析消息,并缓存该模式信息。因此,通过该方法,在上游生产者发往消息队列kafka中的消息在模式上有变动的情况下,下游消费者应用能够自动识别新消息的消息模式,并能根据不同消息的消息模式自动使用相应的解析方法解析消息,这样避免了由于上游消息模式变更导致下游应用异常的情况。另外,如图2所示,该方法包括以下步骤:(a)生产者应用生成消息并注册消息模式;(b)消息队列kafka存储带消息模式编号的消息;(c)消费者应用从kafka中获取带消息模式编号的信息并消费消息。另外,该本文档来自技高网...
一种基于kafka的处理消息的方法

【技术保护点】
一种基于kafka的处理消息的方法,其特征在于:模式信息作为消息头信息的一部分随消息一起发送,在消息传输时使用Apache Avro为消息传输格式。

【技术特征摘要】
1.一种基于kafka的处理消息的方法,其特征在于:模式信息作为消息头信息的一部分随消息一起发送,在消息传输时使用ApacheAvro为消息传输格式。2.根据权利要求1所述的基于kafka的处理消息的方法,其特征在于:该方法包括以下步骤:(1)生产者应用生成带消息模式的消息;(2)消息队列kafka存储带消息模式的消息;(3)消费者应用从kafka中获取带消息模式的消息并消费消息。3.根据权利要求2所述的基于kafka的处理消息的方法,其特征在于:该方法还包括步骤(4),如果生产者应用生成的消息对应的消息模式发生变更,消费者应用直接根据消息头获取到变更后的消息模式,并根据消息模式解析变更模式之后的消息。4.根据权利要求3所述的基于kafka的处理消息的方法,其特征在于:所述步骤(1)中,消息模式封装到消息头里面,消息头还包括消息UUID、加密细节、时间戳。5.根据权利要求4所述的基于kafka的处理消息的方法,其特征在于:所述步骤(2)中,kafka中存储的消息是带消息模式的消息。6.根据权利要求5所述的基于kafka的处理消息的方法,其特征在于:所述步骤(3)中,消费者应用从kafka中获取带消息模式的信息,先从消息头里面拿到消息模式,然后通过消息模式解析消息内容。7.一种基于kafka的处理消息的方法,其特征在于:通过消息模式注册服务来实现消息模式变更通知,对于上游生产者应用生成的消息在发往kafka之前先到模式注册服务SchemaRegistrar...

【专利技术属性】
技术研发人员:何良均张翼温宗臣冯森林李冰张书凡范卫卫赵志华
申请(专利权)人:北京集奥聚合科技有限公司
类型:发明
国别省市:北京;11

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

1