apache-kafka - Kafka——Consumer Group Leader的真正意义是什么
问题描述
这是关于消费组组长和消费者组协调员的。我通过文档了解“组组长”和“组协调员”的职责,特别是具有其他角色的重要原因,例如“组组长”
看起来“组协调员”主要负责组管理,无论是在管理消费者成员资格、偏移量、重新平衡等方面。唯一一次需要“组领导”来“计算分区分配”
在决定分区分配后,消费者组领导将分配列表发送给组协调器,组协调器将此信息发送给所有消费者。每个消费者只看到自己的任务
“组长”还有其他“重要角色”吗?是否真的需要增加价值的东西?
解决方案
组长所扮演的重要角色与 Kafka 遵循的分布式设计有关。虽然组协调员是经纪人之一,但组长是消费者之一。这意味着组长需要执行的任何处理以提出分区分配都将消耗来自消费者之一而不是 Kafka 代理之一的 CPU 时钟。这种方法减轻了 Kafka 代理的 CPU 消耗,特别是因为分区分配发生得非常频繁,因为每次重新平衡发生时这个过程都会重复。
所以是的,组长只负责分区分配,但这是由一个消费者执行的这一事实在以下方面意味着很多:
性能:Kafka 代理应该比 CPU 更受 I/O 限制。在这种情况下,尽可能多地卸载 CPU 使用是很聪明的。
可扩展性:从概念上讲,给定的 Kafka 架构将由少数代理和大量消费者组成。将分区分配保持在消费者的膝上可确保更好的水平可伸缩性,因为将有不同的消费者组需要管理,并且有许多消费者在边缘执行,这种工作负载可以均匀分布。
此外,将分区分配委托给组长允许不同的消费者组使用不同的分区分配策略。单个组协调器可以协调许多消费者组,因此在那里执行分区分配将需要由该协调器管理的所有组使用相同的策略。
推荐阅读
- sql - 如何在 SQL Server 中获取字符串前后的所有内容
- scrapy - Tripadvisor 爬取 0 页(0 页/分钟)的 Scrapy 蜘蛛
- amazon-web-services - 如何在 Amazon aws lex 中将响应消息显示为响应卡?
- sql-server - SQL 复制 is_subscribed 标志设置为 1
- spring - java.lang.NoClassDefFoundError: org/springframework/transaction/interceptor/TransactionAttributeSource 升级到 Spring 5 时出错
- javascript - 为什么这被认为是承诺的“良好”保证?
- sulu - 是否可以在安装之间导出和导入内容?
- css - 导航栏子元素忽略 css 规则
- python - 从 html 源代码中抓取“数据价格”
- java - 返回基于 SQL 的动态数组