kafka rebalance机制
来源:互联网 发布:2016世界各国经济数据 编辑:程序博客网 时间:2024/06/05 15:59
Kafka保证同一consumer group中只有一个consumer会消费某条消息,实际上,Kafka保证的是稳定状态下每一个consumer实例只会消费某一个或多个特定的数据,而某个partition的数据只会被某一个特定的consumer实例所消费。这样设计的劣势是无法让同一个consumer group里的consumer均匀消费数据,优势是每个consumer不用都跟大量的broker通信,减少通信开销,同时也降低了分配难度,实现也更简单。另外,因为同一个partition里的数据是有序的,这种设计可以保证每个partition里的数据也是有序被消费。
如果某consumer group中consumer数量少于partition数量,则至少有一个consumer会消费多个partition的数据,如果consumer的数量与partition数量相同,则正好一个consumer消费一个partition的数据,而如果consumer的数量多于partition的数量时,会有部分consumer无法消费该topic下任何一条消息。
Consumer Rebalance算法如下 :
1. 将目标 topic 下的所有 partirtion 排序,存于PT
2. 对某 consumer group 下所有 consumer 排序,存于 CG,第 i 个consumer 记为 Ci
3. N=size(PT)/size(CG),向上取整
4. 解除 Ci 对原来分配的 partition 的消费权(i从0开始)
5. 将第i*N到(i+1)*N-1个 partition 分配给 Ci
目前consumer rebalance的控制策略是由每一个consumer通过Zookeeper完成的。具体的控制方式如下:
在/consumers/[consumer-group]/下注册id
设置对/consumers/[consumer-group] 的watcher
设置对/brokers/ids的watcher
zk下设置watcher的路径节点更改,触发consumer rebalance
- Herd effect
- Split Brain
0 0
- kafka rebalance机制
- Kafka Consumer Rebalance
- 消费者rebalance机制分析
- KafkaController 分区Rebalance平衡机制
- kafka connect rebalance时herder大概率异常
- kafka 0.9.0.0 rebalance后部分分区不再读数据
- Kafka集群生产/消费的负载均衡(Rebalance)测试
- 分布式消息队列RocketMQ源码分析之3 -- Consumer负载均衡机制 -- Rebalance
- 分布式消息队列RocketMQ源码分析之3 -- Consumer负载均衡机制 -- Rebalance
- 分布式消息队列RocketMQ源码分析之3 -- Consumer负载均衡机制 -- Rebalance
- Kafka文件存储机制
- kafka存储机制
- Kafka文件存储机制
- Kafka文件存储机制
- kafka之副本机制
- Kafka Broker HA机制
- 三.kafka 备份机制
- kafka存储机制
- java--==号和equals的区别
- Lucas定理
- js事件监听
- 恶意代码逆向分析基础入门
- Android逆向之旅---Android应用的安全的攻防之战
- kafka rebalance机制
- 数据的持久化技术(二)SharedPreferences
- 运算符重载的分析及代码实现
- 51nod 1076 2条不相交的路径【边连通分量】
- 广播:开机自启播放音乐
- Android Fragment完全解析,关于碎片你所需知道的一切
- Linux Kernel设备驱动模型之struct kobj_type
- Codeforces 366C
- 二叉树学习——前序、中序、后序遍历(Java实现)