从实战中认识Kafka消费组

yoursoft
发布于 2023-2-15 15:03
浏览
0收藏

作为一个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类似一个分组,以客户端为维度的汇总信息,如下图所示:


从实战中认识Kafka消费组-鸿蒙开发者社区

1.2 --state 显示消费组状态

该选项主要用于显示消费组的状态,使用示例如下图所示:


从实战中认识Kafka消费组-鸿蒙开发者社区


其列说明如下:

  • COORDINATOR (ID)该消费组的控制协调器,例如协调分区重平衡等操作,不同的消费组的协调器所在的Broker不同。
  • ASSIGNMENT-STRATEGY分区负载算法,目前Kafka支持Rrange与RoundRobin两种分配上算法,默认为Range,其含义如下图所示:


从实战中认识Kafka消费组-鸿蒙开发者社区

在这里插入图片描述


  • State消费者状态,主要包括Dead, Stable(稳定状态,可消费消息), CompletingRebalance(正在重平衡), PreparingRebalance(准备重平衡), empty(所有消费不在线)
  • MEMBERS成员个数。

1.2 --reset-offsets 重置消费位点

重置消费位点是kafka-consumer-groups的重点功能,我们对常用功能进行演示,只有操作,才能记忆深刻


从实战中认识Kafka消费组-鸿蒙开发者社区


Kafka的重置位点需要先停掉所有的消费者。


从实战中认识Kafka消费组-鸿蒙开发者社区


执行真正的位点重置需要加上 --execute选项,在真正执行之前,可以用--dry-run模拟执行。

2、总结


在Kafka中,消费组是自动创建的,并且kafka中的消费组并没有提供类似RocketMQ的广播消费模式,也没Topic那么多的运维属性,其实也可以理解,topic是负责具体的数据存储,而消费组只是拉取数据进行处理。

好了,本文就介绍到这里了!!



文章转载自公众号:   中间件兴趣圈

分类
标签
已于2023-2-15 15:03:46修改
收藏
回复
举报
回复
    相关推荐