从实战中认识Kafka消费组
作为一个Kafka初学者,需要快速成长,承担维护公司Kafka的重任,对Kafka的学习,我按照三步走策略:
- 阅读Kafka相关书籍
- 从运维实战的角度学习Kafka
- 阅读源码,体系化,精细化掌握其实现原理
本文属于学习的第二阶段:[从运维实战的角度学习Kafka],本文重点介绍kafka-consumer-groups运维命令的使用,从运维、使用驱动对消费组的了解。
1、Kafka 消费组运维实战
选项 | 类型 | 详细说明 |
--delete | 命令 | 删除消费组,消费组删除后,其对应的消费位点也会被删除, 该命令无法删除在线的消费组(有客户端连接) |
--list | 命令 | 查询所有消费组(列表) |
--describe | 命令 | 查看消费组详情 |
--reset-offsets | 命令 | 重置消费组位点 |
--bootstrap-server | 选项 | 指定kafka集群的地址 |
--members | 选项 | 在--describe时生效,用于显示一个消费组的客户端信息,不显示分区级别 |
--state | 选项 | 在--describe时生效,用于显示消费组的状态,主要包括所在 的协调器、分区负载算法等。 |
--timeout | 选项 | 超时时间,单位为ms,默认为5000。 |
--topic | 选项 | 指定本次操作的主题、分区信息,Kafka删除订阅关系或重置位点时 支持只重置部分主题的部分分区,其格式为:主题:分区列表,示例: "topic1:0,1,2", |
--verbose | 选项 | 输出一些更详细的信息,可与--offsets --members --state结合使用 |
--all-topics | 选项 | 重置位点(--reset-offsets)时作用域为该消费组所订阅的所有主题。 |
--by-duration | 选项 | 重置位点到距离当前时间指定间隔的位移处,格式 ,PnDTnHnMnS,例 重置30分钟之前,格式为PT0H30M0S |
--to-current | 选项 | 重置到当前时间所代表的位点 |
--to-latest | 选项 | 重置到最大位点 |
--to-datetime | 选项 | 重置大于指定时间所代表的位点最小值,格式为'YYYY-MM-DDTHH:mm:SS.sss' |
--to-offset | 选项 | 重置到指定位点 |
--to-earliest | 选项 | 重置到最小位点 |
--shift-by | 选项 | 把位点重置到到当前位移 + N 处,N 可以是负数, 表示向前移动 |
--dry-run | 选项 | 只显示结果,不真正执行,感觉是模拟执行 |
--execute | 选项 | 执行真正的位点重置,如果不带该参数,则不会真正执行位点重置 |
--export | 选项 | 将位点重置计划导出到文件 |
--from-file | 选项 | 指定位点重置计划,该文件由--export参数生成 |
接下来对一些要点做一个简单的说明与举例。
1.1 --members 显示消费组成员
在使用--describe选项查看一个消费组信息时会详细显示各个分区的消费情况,而加上--members类似一个分组,以客户端为维度的汇总信息,如下图所示:
1.2 --state 显示消费组状态
该选项主要用于显示消费组的状态,使用示例如下图所示:
其列说明如下:
- COORDINATOR (ID)该消费组的控制协调器,例如协调分区重平衡等操作,不同的消费组的协调器所在的Broker不同。
- ASSIGNMENT-STRATEGY分区负载算法,目前Kafka支持Rrange与RoundRobin两种分配上算法,默认为Range,其含义如下图所示:
在这里插入图片描述
- State消费者状态,主要包括Dead, Stable(稳定状态,可消费消息), CompletingRebalance(正在重平衡), PreparingRebalance(准备重平衡), empty(所有消费不在线)
- MEMBERS成员个数。
1.2 --reset-offsets 重置消费位点
重置消费位点是kafka-consumer-groups的重点功能,我们对常用功能进行演示,只有操作,才能记忆深刻。
Kafka的重置位点需要先停掉所有的消费者。
执行真正的位点重置需要加上 --execute选项,在真正执行之前,可以用--dry-run模拟执行。
2、总结
在Kafka中,消费组是自动创建的,并且kafka中的消费组并没有提供类似RocketMQ的广播消费模式,也没Topic那么多的运维属性,其实也可以理解,topic是负责具体的数据存储,而消费组只是拉取数据进行处理。
好了,本文就介绍到这里了!!
文章转载自公众号: 中间件兴趣圈