CN112000489A - 一种Kafka数据处理的方法和服务器 - Google Patents
一种Kafka数据处理的方法和服务器 Download PDFInfo
- Publication number
- CN112000489A CN112000489A CN202010743890.0A CN202010743890A CN112000489A CN 112000489 A CN112000489 A CN 112000489A CN 202010743890 A CN202010743890 A CN 202010743890A CN 112000489 A CN112000489 A CN 112000489A
- Authority
- CN
- China
- Prior art keywords
- data
- offset
- processed
- message queue
- zookeeper
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本说明书提供一种Kafka数据处理的方法和服务器,该方法包括:获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset,将所述待处理数据、第一Offset加载到共享消息队列,当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。通过该方法,可以实现先处理待处理数据,在向ZooKeeper提交Offset,避免因Consumer出现内存溢出或者所在服务器宕机导致向ZooKeeper提交的Offset与Consumer实际处理的数据不一致。
Description
技术领域
本公开涉及大数据领域,尤其涉及一种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_Client:是整个Consumer的对用户的接口模块,完成主要的功能,New_Client类是Runable类的实现类,实现run()方法,是一个线程类,每个线程针对主题(topic)的某一个分区进行处理:
在步骤S101中,该服务器使用Kafka提供的Low Level API接口,其目的为降低发送Offset的优先级,使得通过Kafka的Low Level API获取待处理数据,并且在处理完待处理数据前,不发送Offset。
在步骤S101中,Consumer中的New_Client与ZooKeeper组件建立连接;根据topic、分区编码获取该主体的broker(代理服务器)的ip和port;根据topic、分区编码、GroupId获取当前最新的消费Offset(既第一Offset)作为起始Offset。
同时,初始化各数据结构,建立用于周期性提交Offset的Timer。
New_Client中的run()方法根据初始化的leader-broker的ip和port,利用Kafak底层接口从ZooKeeper向broker服务器拉取待处理数据。
在步骤S101中,当服务器获取待处理数据时,还可以为待处理数据加载用于唯一标识该待处理数据的ID标识,将该ID标识作为待处理数据的主键,从而可以实现Consumer对待处理数据进行去重操作。
在步骤S102中,根据所述待处理数据、第一Offset构造消息数据,将所述消息数据加载在共享消息队列中。具体的,根据待处理数据、New_Client对象、以及第一Offset,构造Messag_PacKage,并装填到共享消息队列中,同时,将第一Offset追加到MsgWait中。
在步骤S103中,所述当确定处理完所述共享消息队列中的数据后,将所述共享消息队列中的第一Offset删除,并生成第二Offset,将所述第二Offset发送给ZooKeeper组件。
具体的,读取共享消息队列中的消息并执行完处理逻辑,调用Finish(),将该消息的起始Offset(第一Offset)从MsgWait中删除;调用CommitOffset(),从MsgWait中取出最小的Offset,并将其提交到ZooKeeper。
由此可以看出,由于在确定处理完共享消息队列中的消息并执行完处理逻辑后,会将起始Offset删除,此时在MsgWait中只有新生成的第二Offset,通过调用CommitOffset()可以将第二Offset提交到ZooKeeper,保证了提交到ZooKeeper的Offset与处理的实际情况一致。
反之,若未处理完共享消息队列中的消息并执行完处理逻辑时,则不会删除第一Offset,由于调用CommitOffset()时,会从MsgWait中取出最小的Offset,并提交给ZooKeeper,所以在未删除第一Offset时,第一Offset为最小的Offset所以,会将第一Offset提交给ZooKeeper,避免了,因Consumer出现内存溢出或者所在服务器宕机导致向ZooKeeper提交的Offset与Consumer实际处理的数据不一致(Offset已提交到ZooKeeper,但数据还未进行消费)。
本说明书实施例还提供了一种服务器,所述服务器运行有Kafka组件,所述服务器包括:
获取模块,用于获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;
第一处理模块,用于将所述待处理数据、第一Offset加载到共享消息队列;
第二处理模块,用于当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。
可选的,所述获取模块,具体用于通过Kafka组件获取所述待处理数据,并对所述待处理数据加载用于唯一标识所述待处理数据的ID标识。
可选的,所述获取模块,具体用于从ZooKeeper组件中获取与所述待处理数据对应的第一Offset,并将所述第一Offset作为起始Offset。
可选的,所述第一处理模块,具体用于根据所述待处理数据、第一Offset构造消息数据,将所述消息数据加载在共享消息队列中。
可选的,所述第二处理模块,具体用于当确定处理完所述共享消息队列中的数据后,将所述共享消息队列中的第一Offset删除,并生成第二Offset;
将所述第二Offset发送给ZooKeeper组件。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (10)
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组件。
6.一种服务器,其特征在于,所述服务器运行有Kafka组件,所述服务器包括:
获取模块,用于获取待处理数据,以及所述待处理数据对应的第一消息偏移量Offset;
第一处理模块,用于将所述待处理数据、第一Offset加载到共享消息队列;
第二处理模块,用于当确定处理完所述共享消息队列中的数据后,将生成的第二Offset发送给ZooKeeper组件。
7.根据权利要求6所述的服务器,其特征在于,
所述获取模块,具体用于通过Kafka组件获取所述待处理数据,并对所述待处理数据加载用于唯一标识所述待处理数据的ID标识。
8.根据权利要求6所述的服务器,其特征在于,
所述获取模块,具体用于从ZooKeeper组件中获取与所述待处理数据对应的第一Offset,并将所述第一Offset作为起始Offset。
9.根据权利要求6所述的服务器,其特征在于,
所述第一处理模块,具体用于根据所述待处理数据、第一Offset构造消息数据,将所述消息数据加载在共享消息队列中。
10.根据权利要求6所述的服务器,其特征在于,
所述第二处理模块,具体用于当确定处理完所述共享消息队列中的数据后,将所述共享消息队列中的第一Offset删除,并生成第二Offset;
将所述第二Offset发送给ZooKeeper组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010743890.0A CN112000489A (zh) | 2020-07-29 | 2020-07-29 | 一种Kafka数据处理的方法和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010743890.0A CN112000489A (zh) | 2020-07-29 | 2020-07-29 | 一种Kafka数据处理的方法和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112000489A true CN112000489A (zh) | 2020-11-27 |
Family
ID=73463984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010743890.0A Pending CN112000489A (zh) | 2020-07-29 | 2020-07-29 | 一种Kafka数据处理的方法和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000489A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463411A (zh) * | 2020-12-10 | 2021-03-09 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、服务器及存储介质 |
CN113742085A (zh) * | 2021-09-16 | 2021-12-03 | 中国科学院上海高等研究院 | 一种基于分支过滤的执行端口时间信道安全防护系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424186A (zh) * | 2013-08-19 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 一种流计算应用中实现持久化的方法及装置 |
US9544277B1 (en) * | 2015-09-09 | 2017-01-10 | Roger G Marshall | KAFKA: A cellular automation / complex Fibonacci sequences-based technique for encrypting and decrypting audio, video and text messages |
CN106657349A (zh) * | 2016-12-29 | 2017-05-10 | 上海理想信息产业(集团)有限公司 | 一种消息订阅处理装置、系统及方法 |
CN107423145A (zh) * | 2017-07-11 | 2017-12-01 | 北京潘达互娱科技有限公司 | 一种避免消息丢失的方法与装置 |
CN108509299A (zh) * | 2018-03-29 | 2018-09-07 | 努比亚技术有限公司 | 消息处理方法、设备及计算机可读存储介质 |
CN108809855A (zh) * | 2018-05-24 | 2018-11-13 | 北京三快在线科技有限公司 | 消息管理方法、装置及电子设备 |
CN109493076A (zh) * | 2018-11-09 | 2019-03-19 | 武汉斗鱼网络科技有限公司 | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
-
2020
- 2020-07-29 CN CN202010743890.0A patent/CN112000489A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424186A (zh) * | 2013-08-19 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 一种流计算应用中实现持久化的方法及装置 |
US9544277B1 (en) * | 2015-09-09 | 2017-01-10 | Roger G Marshall | KAFKA: A cellular automation / complex Fibonacci sequences-based technique for encrypting and decrypting audio, video and text messages |
CN106657349A (zh) * | 2016-12-29 | 2017-05-10 | 上海理想信息产业(集团)有限公司 | 一种消息订阅处理装置、系统及方法 |
CN107423145A (zh) * | 2017-07-11 | 2017-12-01 | 北京潘达互娱科技有限公司 | 一种避免消息丢失的方法与装置 |
CN108509299A (zh) * | 2018-03-29 | 2018-09-07 | 努比亚技术有限公司 | 消息处理方法、设备及计算机可读存储介质 |
CN108809855A (zh) * | 2018-05-24 | 2018-11-13 | 北京三快在线科技有限公司 | 消息管理方法、装置及电子设备 |
CN109493076A (zh) * | 2018-11-09 | 2019-03-19 | 武汉斗鱼网络科技有限公司 | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
Non-Patent Citations (1)
Title |
---|
郑奇煌: "《Kafka技术内幕 图文详解Kafka源码设计与实现》", 30 November 2017, 人民邮电出版社 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463411A (zh) * | 2020-12-10 | 2021-03-09 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、服务器及存储介质 |
CN113742085A (zh) * | 2021-09-16 | 2021-12-03 | 中国科学院上海高等研究院 | 一种基于分支过滤的执行端口时间信道安全防护系统及方法 |
CN113742085B (zh) * | 2021-09-16 | 2023-09-08 | 中国科学院上海高等研究院 | 一种基于分支过滤的执行端口时间信道安全防护系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200402515A1 (en) | Dialog management with multiple modalities | |
US20180365254A1 (en) | Method and apparatus for processing information flow data | |
US20160232002A1 (en) | Dynamic code generation and memory management for component object model data constructs | |
US9672826B2 (en) | System and method for efficient unified messaging system support for speech-to-text service | |
US11252149B1 (en) | Resource management techniques for dialog-driven applications | |
CN108287708B (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
KR20110063313A (ko) | 메시지 큐 내에서 논리적으로 연관된 메시지들의 자동화된 병합 방법 | |
CN109743411B (zh) | 一种在分布式环境下动态调度ip代理池的方法、装置及存储介质 | |
CN112000489A (zh) | 一种Kafka数据处理的方法和服务器 | |
CN106612330B (zh) | 支持分布式多文件导入的系统及方法 | |
WO2019161620A1 (zh) | 应用依赖关系更新方法、终端、设备及存储介质 | |
US11817091B1 (en) | Fault-tolerance techniques for dialog-driven applications | |
CN111414743A (zh) | 一种文档模板的调用方法、装置、电子设备及存储介质 | |
CN110381150B (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
CN110764930B (zh) | 基于消息模式的请求或应答处理方法及装置 | |
US20240264886A1 (en) | Customized configuration of multimodal interactions for dialog-driven applications | |
CN111597035A (zh) | 基于多线程的仿真引擎时间推进方法及系统 | |
US11429400B2 (en) | User interface metadata from an application program interface | |
CN110968334A (zh) | 应用资源更新方法、资源包制作方法、装置、介质及设备 | |
CN116319643B (zh) | 消息存储和消息展示方法、装置、电子设备及存储介质 | |
CN115618239B (zh) | 一种深度学习框架训练的管理方法、系统、终端及介质 | |
CN113779450B (zh) | 页面访问方法和页面访问装置 | |
US20230061892A1 (en) | Non-transitory computer-readable medium, service management device, and service management method | |
JPWO2021119064A5 (zh) | ||
CN115951831A (zh) | 一种存储文件的管理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20201127 |