当前位置: 代码网 > 科技>人工智能>数据分析 > Kafka知识总结(消费者+重平衡)

Kafka知识总结(消费者+重平衡)

2024年08月03日 数据分析 我要评论
意思就是前面两个当同组内有新的消费者加入或者旧的消费者退出的时候,会从新开始决定消费者消费方式,但是Sticky在同组中有新的消费者加入或者旧的消费者退出时,不会直接开始重构分配策略,而是保留现有消费者消费策略,将退出的消费者所消费的分区平均分配给现有消费者,新增消费者同理,同其他现存消费者的消费策略中分离。这个分配的过程就叫 Rebalance。Consumer Group 下所有实例订阅的主题的单个分区,只能分配给组内的某个 Consumer 实例消费,这个分区也可以被其他的 Group 消费。

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

消费者

消费者策略

rangeassignor:默认消费者策略。

对一个消费者组来说,消费方式是以分区总数除以消费者总数来决定,如果不能整除,往往是从头开始将剩余的分区分配。

在这里插入图片描述

roundrobinassignor:对于同一组消费者来说,使用轮训的方式来决定消费者消费的分区,既依次分配一个,直到分区被分配完毕。

在这里插入图片描述

stickyassignor,是在0.11.x新增的,保证分配最大程度地平衡,同时保留尽可能多的现有分区分配。

cooperativestickyassignor,它继承了stickyassignor的逻辑,但允许重构分区策略。

push和pull

消费者组

consumer group是指组内有多个消费者或消费者实例,它们共享一个公共的 id,这个 id 被称为 group id。组内的所有消费者协调在一起来消费订阅主题的所有分区。

点对点模型和发布/订阅模型

如果所有实例都属于同一个 group,那么它实现的就是消息队列模型;如果所有实例分别属于不同的 group,那么它实现的就是发布/订阅模型。

consumer实例个数

理想情况下,consumer 实例的数量应该等于该 group 订阅主题的分区总数。

位移主题

consumer 的位移管理机制就是将 consumer 的位移数据作为一条条普通的 kafka 消息,提交到 __consumer_offsets 中。

__consumer_offsets 的主要作用是保存 kafka 消费者的位移信息。它要求这个提交过程不仅要实现高持久性,还要支持高频的写操作。

位移主题怎么被创建的?

当 kafka 集群中的第一个 consumer 程序启动时,kafka 会自动创建位移主题。

副本数由 broker 端参数 offsets.topic.replication.factor 设置,它的默认值是 3。

怎么提交位移?

提交位移的方式有两种:自动提交位移和手动提交位移。

consumer 端有个参数叫 enable.auto.commit,如果值是 true,则 consumer 在后台默默地定期提交位移,提交间隔由一个参数 auto.commit.interval.ms 来控制。

问题:只要 consumer 一直启动着,它就会无限期地向位移主题写入消息。

假设 consumer 当前消费到了某个主题的最新一条消息,位移是 100,之后该主题没有任何新消息产生,故 consumer 无消息可消费了,所以位移永远保持在 100。

由于是自动提交位移,位移主题中会不停地写入位移 =100 的消息。

重平衡

rebalance 本质上是一种协议,规定了一个 consumer group 下的所有 consumer 如何达成一致,来分配订阅 topic 的每个分区。

rebalance的触发条件:

在 rebalance 过程中,所有 consumer 实例都会停止消费,等待 rebalance 完成

可能发生rebalance的场景

1、未能及时发送心跳,导致 consumer 被踢出group而引发的。

#单位ms 设置心跳传送时间几毫秒一次 ,默认是3000ms
heartbeat.interval.ms

#单位ms 多长时间没有心跳,后连接超时,默认10000ms
session.timeout.ms

2、consumer消费时间过长导致的,默认10分钟。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com