kafka 消费者offset记录位置和方式

 

我们大家都知道,kafka消费者在会保存其消费的进度,也就是offset,存储的位置根据选用的kafka api不同而不同。

首先来说说消费者如果是根据javaapi来消费,也就是【kafka.javaapi.consumer.ConsumerConnector,我们会配置参数【zookeeper.connect】来消费。这种情况下,消费者的offset会更新到zookeeper的【consumers/{group}/offsets/{topic}/{partition}】目录下,例如:

 

[zk: localhost(CONNECTED) 0] get /kafka/consumers/zoo-consumer-group/offsets/my-topic/0
5662
cZxid = 0x20006d28a
ctime = Wed Apr 12 18:20:51 CST 2017
mZxid = 0x30132b0ed
mtime = Tue Aug 22 18:53:22 CST 2017
pZxid = 0x20006d28a
cversion = 0
dataVersion = 5758
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

 

如果是根据kafka默认的api来消费,即【org.apache.kafka.clients.consumer.KafkaConsumer】,我们会配置参数【bootstrap.servers】来消费。而其消费者的offset会更新到一个kafka自带的topic【__consumer_offsets】下面,查看当前group的消费进度,则要依靠kafka自带的工具【kafka-consumer-offset-checker】,例如:

[root@localhost data]# kafka-consumer-offset-checker --zookeeper localhost :2181/kafka --group test-consumer-group  --topic stable-test
[2017-08-22 19:24:24,222] WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$)
Group           Topic                          Pid Offset          logSize         Lag             Owner
test-consumer-group stable-test                    0   601808          601808          0               none
test-consumer-group stable-test                    1   602826          602828          2               none
test-consumer-group stable-test                    2   602136          602136          0               none

上面结果的说明:

  • Group : 消费者组
  • Topic : topic的名字
  • Pid : partition的ID
  • Offset : kafka消费者在对应分区上已经消费的消息数【位置】
  • logSize : 已经写到该分区的消息数【位置】
  • Lag : 还有多少消息未读取(Lag = logSize - Offset)
  • Owner : 分区创建在哪个broker

offset更新的方式,不区分是用的哪种api,大致分为两类:

  1. 自动提交,设置enable.auto.commit=true,更新的频率根据参数【auto.commit.interval.ms】来定。这种方式也被称为【at most once】,fetch到消息后就可以更新offset,无论是否消费成功。
  2. 手动提交,设置enable.auto.commit=false,这种方式称为【at least once】。fetch到消息后,等消费完成再调用方法【consumer.commitSync()】,手动更新offset;如果消费失败,则offset也不会更新,此条消息会被重复消费一次。

 

 

转载于:https://www.cnblogs.com/yucy/p/7413394.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka是一种分布式流处理平台,可用于构建实时数据管道和流处理应用程序。Kafka消费者参数是指在消费者端配置的一些参数,用于控制消费者的行为和性能。 首先,消费者需要指定要消费的主题。可以通过设置"bootstrap.servers"参数来指定Kafka集群的地址。消费者还可以通过设置"group.id"参数来指定消费者所在的消费组,以便和其他消费者进行协调分配分区。 其次,消费者需要设置"auto.offset.reset"参数来控制消费者在启动时如何处理已提交的偏移量。可以设置为"earliest",表示从最早的可用偏移量开始消费;或者设置为"latest",表示从最新的偏移量开始消费。 还有一些其他的消费者参数可以配置。比如,可以设置"max.poll.records"参数来控制每次拉取的最大记录数;设置"enable.auto.commit"参数来控制消费者是否自动提交偏移量;设置"auto.commit.interval.ms"参数来控制自动提交偏移量的间隔时间。 此外,消费者还可以通过设置一些性能参数来优化消费者的性能。比如,可以设置"fetch.min.bytes"参数来控制每次拉取的最小字节数,以减少网络请求的频率;设置"max.partition.fetch.bytes"参数来控制每个分区每次拉取的最大字节数;设置"fetch.max.wait.ms"参数来控制拉取请求的等待时间。 最后,消费者还可以设置一些安全相关的参数,比如设置"security.protocol"参数来指定连接到Kafka集群时使用的安全协议。 综上所述,Kafka消费者参数的配置可以根据实际需求来设置,以提供更好的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值