一种Kafka数据处理的方法和服务器技术

技术编号:26504344 阅读:14 留言:0更新日期:2020-11-27 15:31
本说明书提供一种Kafka数据处理的方法和服务器,该方法包括:获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset,将所述待处理数据、第一Offset加载到共享消息队列,当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。通过该方法,可以实现先处理待处理数据,在向ZooKeeper提交Offset,避免因Consumer出现内存溢出或者所在服务器宕机导致向ZooKeeper提交的Offset与Consumer实际处理的数据不一致。

【技术实现步骤摘要】
一种Kafka数据处理的方法和服务器
本公开涉及大数据领域,尤其涉及一种Kafka数据处理的方法和服务器。
技术介绍
近几年由于大数据时代的到来,互联网以及移动互联网业务的数据成倍的增长,大数据对于数据准确性需求也在逐步上升。传统的关系型数据库和数据传输方式渐渐无法满足用户对数据准确性的需求。Kafka架构设计原理:在Kafka的消费者(Consumer)中,有一个很关键的机制那就是消息偏移量(Offset)机制。在有了消息偏移量(Offset)机制后,即使Kafka在消费的过程中发生异常,或者引发再均衡重新分配分区的问题,在重新恢复消费时候也可以知道从哪个位置开始消费。在Kafka里面的消息偏移量(Offset)是用来记录消息在主题(topic)中消费进度的标志,消息偏移量(Offset)在分区中的是根据消息到达时间的顺序而递增的。在Consumer中,对于位置消息偏移量(Offset)的处理是在Consumer建立连接的时候,定时将现有用户的在每个分区的消息偏移量(Offset)记录到ZooKeeper组件中。所以每次consumer启动的时候都要先从ZooKeeper组件中读取记录的Offset作为本次消费的起始点。
技术实现思路
本说明书实施例提供了一种Kafka数据处理的方法和服务器,可以实现先处理待处理数据,在向ZooKeeper提交Offset,避免因Consumer出现内存溢出或者所在服务器宕机导致向ZooKeeper提交的Offset与Consumer实际处理的数据不一致。本说明实施例提供了一种Kafka数据处理的方法,该方法包括:获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;将所述待处理数据、第一Offset加载到共享消息队列;当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。通过上述实施例可以看出,在根据第一Offset和待处理数据处理共享消息队列时,可获知共享消息队列的处理完成情况,当确定处理完成时,将生成的第二Offset发送给ZooKeeper组件,以使ZooKeeper组件保存的Offset与实际对待处理数据处理的结果一致。可选的,通过Kafka组件获取所述待处理数据,并对所述待处理数据加载用于唯一标识所述待处理数据的ID标识。可选的,从ZooKeeper组件中获取与所述待处理数据对应的第一Offset,并将所述第一Offset作为起始Offset。可选的,根据所述待处理数据、第一Offset构造消息数据,将所述消息数据加载在共享消息队列中。可选的,将所述共享消息队列中的第一Offset删除,并生成第二Offset;将所述第二Offset发送给ZooKeeper组件。本说明书实施例还提供了一种服务器,所述服务器运行有Kafka组件,所述服务器包括:获取模块,用于获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;第一处理模块,用于将所述待处理数据、第一Offset加载到共享消息队列;第二处理模块,用于当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。可选的,所述获取模块,具体用于通过Kafka组件获取所述待处理数据,并对所述待处理数据加载用于唯一标识所述待处理数据的ID标识。可选的,所述获取模块,具体用于从ZooKeeper组件中获取与所述待处理数据对应的第一Offset,并将所述第一Offset作为起始Offset。可选的,所述第二处理模块,具体用于当确定处理完所述共享消息队列中的数据后,将所述共享消息队列中的第一Offset删除,并生成第二Offset;将所述第二Offset发送给ZooKeeper组件。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。图1为本公开实施例提供的一种Kafka数据处理的方法的流程示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。如图1所示,本说明书实施例提供了一种Kafka数据处理的方法,该方法包括:S101获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;S102将所述待处理数据、第一Offset加载到共享消息队列;S103当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。在本实施例中,执行本实施例的执行主体可以为运行有Kafka组件的服务器,其中,Kafka包括Consumer(消费者)角色,Consumer可包括:Offset_Tool、New_Consumer、Messag_Package、New_Client,其中,Offset_Tool:主要负责与ZooKeeper(开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件)相关的交互操作,提供与ZooKeeper进行Offset提交、读写操作等相关操作的接口,在此接口中会定义用户配置包括ZooKeeper的IP和端口、消费主题(topic)、Consumer群组名称、指定写入ZooKeeper的文件内容、指定获取ZooKeeper中的文件内容等。New_Consumer:Consumer的主体模块,该模块主要负责主体每个分区的数据读取、消费、保证数据准确性等操作。Messag_Package:模块对原有Kafka的消息结构进行了封装,加入了offset和读取该消息所在分区的New_Consumer类的对象,为提升数据准确性的实现提供支持,丰富了原有的Message的结构。此模块提供用户get和set数据的方法,是用户完成消费动作的入口。New_C本文档来自技高网...

【技术保护点】
1.一种Kafka数据处理的方法,其特征在于,所述方法包括:/n获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;/n将所述待处理数据、第一Offset加载到共享消息队列;/n当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。/n

【技术特征摘要】
1.一种Kafka数据处理的方法,其特征在于,所述方法包括:
获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;
将所述待处理数据、第一Offset加载到共享消息队列;
当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。


2.根据权利要求1所述的方法,其特征在于,所述获取待处理数据,具体包括:
通过Kafka组件获取所述待处理数据,并对所述待处理数据加载用于唯一标识所述待处理数据的ID标识。


3.根据权利要求1所述的方法,其特征在于,获取所述第一Offset的方法包括:
从ZooKeeper组件中获取与所述待处理数据对应的第一Offset,并将所述第一Offset作为起始Offset。


4.根据权利要求1所述的方法,其特征在于,所述将所述待处理数据、第一Offset加载到共享消息队列,具体包括:
根据所述待处理数据、第一Offset构造消息数据,将所述消息数据加载在共享消息队列中。


5.根据权利要求1所述的方法,其特征在于,所述当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件,具体包括:
将所述共享消息队列中的第一Offset删除,并生成第二Offset;
将所述第二Offset发送给ZooKeeper组...

【专利技术属性】
技术研发人员:王鑫
申请(专利权)人:新华三大数据技术有限公司
类型:发明
国别省市:河南;41

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

1