kafka offset

栏目: IT技术 · 发布时间: 5年前

内容简介:kafka offset

一、Simple Consumer(或Low Level Consume)

1、手工管理offset

  1. 每次从特定Partition的特定offset开始fetch特定大小的消息
  2. 完全由Consumer应用程序决定下一次fetch的起始offset
  3. 使用Low Level Consume可以每次去指定希望消费消费哪个topic的那个partition多少offset之后的多少字节的消息,对于字节,如果指定的是100字节,那么最多拿100字节,如果每条消息都超过100字节,那么将拿不到任何消息,所以尽可能把字节上线设置大一点。

2、使用Low Level Consumer (Simple Consumer)的主要原因是,用户希望比Consumer Group更好的控制数据的消费,如:

  1. 同一条消息读多次,方便Replay,处理错误数据等
  2. 只消费某个Topic的部分Partition
  3. 管理事务,从而确保每条消息被处理一次(Exactly once)

3、与High Level Consumer相对,Low Level Consumer要求用户做大量的额外工作

  1. 在应用程序中跟踪处理offset,并决定下一条消费哪条消息
  2. 获知每个Partition的Leader
  3. 处理Leader的变化
  4. 处理多Consumer的协作

二、High Level Consumer

  • 自动管理(提交)offset
    auto.commit.enable=true # 默认true
    auto.commit.interval.ms=60 * 1000 # 自动提交时机 单位 毫秒
  • 手工管理offset
    ConsumerConnector.commitOffsets();
  • offset存储
    offsets.storage=zookeeper
    dual.commit.enabled=true

三、Log compaction

kafka的日志,将就得数据删除,如果kafka的日志满足时间或者超过某个大小,就把整个segment文件删除了,但是做日志压缩,就不能直接删除那个segment,因为很有可能某个partition的offset一直没有跟新,所以它在旧的那个segment里面,如果直接将他删除掉,那么如果后面的想去读这个consumer对每个partition的offset是多少,那么就需要Log compaction。

Log compaction:
kafka offset
在上图中,数字代表offset,Cleaner Point是一个清除点,左边的数字不是连续的,它右边的数字都是连续的。左边的offset会被一个线程压缩,而右边的offset不会被处理。

kafka offset

Log compaction效果

  1. 一直保持消费Log head的consumer可按顺序消费所有消息,并且offset连续
  2. 任何从offset 0开始的读操作至少可读到每个key对应的最后一条消息
  3. 每条消息的offset保持不变,offset是消息的永久标志符
  4. 消费本身的顺序不会被改变

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

标签: kafka offset

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大数据时代的算法:机器学习、人工智能及其典型实例

大数据时代的算法:机器学习、人工智能及其典型实例

刘凡平 / 电子工业出版社 / 2017-1 / 49

《大数据时代的算法:机器学习、人工智能及其典型实例》介绍在互联网行业中经常涉及的算法,包括排序算法、查找算法、资源分配算法、路径分析算法、相似度分析算法,以及与机器学习相关的算法,包括数据分类算法、聚类算法、预测与估算算法、决策算法、关联规则分析算法及推荐算法。《大数据时代的算法:机器学习、人工智能及其典型实例》涉及的相关算法均为解决实际问题中的主流算法,对于工作和学习都有实际参考意义。 《......一起来看看 《大数据时代的算法:机器学习、人工智能及其典型实例》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具