kafka offset

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

内容简介: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

猜你喜欢:

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

Learning Python, 5th Edition

Learning Python, 5th Edition

Mark Lutz / O'Reilly Media / 2013-7-6 / USD 64.99

If you want to write efficient, high-quality code that's easily integrated with other languages and tools, this hands-on book will help you be productive with Python quickly. Learning Python, Fifth Ed......一起来看看 《Learning Python, 5th Edition》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

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

HSV CMYK互换工具