|NO.Z.00026|——————————|BigDataEnd|——|Hadoop&kafka.V11|——|kafka.v11|消费者|消费组|心跳机制.v01|
一、概念入门
### --- [kafka高级特性解析]
~~~ [消费者/消费组]
~~~ [心跳机制]
### --- 消费者、消费组
~~~ # 消费者从订阅的主题消费消息,
~~~ 消费消息的偏移量保存在Kafka的名字是__consumer_offsets 的主题中。
~~~ 消费者还可以将自己的偏移量存储到Zookeeper,需要设置offset.storage=zookeeper。
~~~ 推荐使用Kafka存储消费者的偏移量。因为Zookeeper不适合高并发。
~~~ # 多个从同一个主题消费的消费者可以加入到一个消费组中。
~~~ 消费组中的消费者共享group_id。
~~~ configs.put("group.id", "xxx");
~~~ group_id一般设置为应用的逻辑名称。
~~~ 比如多个订单处理程序组成一个消费组,可以设置group_id为"order_process"。
~~~ group_id通过消费者的配置指定: group.id=xxxxx
~~~ # 消费组均衡地给消费者分配分区,每个分区只由消费组中一个消费者消费。
~~~ 一个拥有四个分区的主题,包含一个消费者的消费组。
~~~ 此时,消费组中的消费者消费主题中的所有分区。并且没有重复的可能。
~~~ 如果在消费组中添加一个消费者2,则每个消费者分别从两个分区接收消息。


二、如果消费组有四个消费者,则每个消费者可以分配到一个分区。

三、如果向消费组中添加更多的消费者超过主题分区数量,则有一部分消费者就会闲置,不会接收任何消息。

~~~ 向消费组添加消费者是横向扩展消费能力的主要方式。
~~~ 必要时,需要为主题创建大量分区,在负载增长时可以加入更多的消费者。
~~~ 但是不要让消费者的数量超过主题分区的数量。

~~~ 除了通过增加消费者来横向扩展单个应用的消费能力之外,
~~~ 经常出现多个应用程序从同一个主题消费的情况。
~~~ 此时,每个应用都可以获取到所有的消息。
~~~ 只要保证每个应用都有自己的消费组,就可以让它们获取到主题所有的消息。
~~~ 横向扩展消费者和消费组不会对性能造成负面影响。
~~~ 为每个需要获取一个或多个主题全部消息的应用创建一个消费组,
~~~ 然后向消费组添加消费者来横向扩展消费能力和应用的处理能力,则每个消费者只处理一部分消息。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv013-kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通