乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • 学习路径
  • 第1章 消息队列与 Kafka 概述

    • 章节导读
    • 消息队列基础
    • Kafka 概述
    • Kafka 为什么快
  • 第2章 快速上手:单机环境搭建

    • 章节导读
    • 环境准备与安装
    • 快速启动
    • Topic 管理
  • 第3章 核心概念:主题、分区与日志

    • 章节导读
    • Topic
    • Partition
    • Offset
    • Segment 与存储结构
  • 第4章 生产者详解

    • 章节导读
    • Producer 概述
    • Producer 发送机制
    • Producer 分区策略
    • Producer 幂等与事务
    • Producer 配置
  • 第5章 消费者与消费组

    • 章节导读
    • Consumer 概述
    • Consumer Group 消费组
    • Consumer 分区分配策略
    • Consumer Offset 提交
    • Consumer 多线程
    • Consumer 配置
  • 第6章 Broker 与控制器

    • 章节导读
    • Broker 概述
    • Broker 配置
    • Controller
    • KRaft 共识协议
  • 第7章 副本与数据可靠性

    • 章节导读
    • 副本机制
    • ISR 与副本同步
    • Leader 选举
    • ACK 与一致性保证
    • 高水位与 Leader Epoch
  • 第8章 存储与性能优化

    • 章节导读
    • 存储架构
    • 日志清理与压缩
    • Page Cache 与零拷贝
    • Producer 性能优化
    • Consumer 性能优化
    • Broker 性能优化
  • 第9章 生产环境运维与监控

    • 章节导读
    • Topic 管理
    • Kafka 运维工具
    • 监控
    • 常见故障排查
  • 第10章 Kafka生态与面试考点

    • 章节导读
    • Kafka 生态全景
    • 面试高频 30 题

Kafka Tools

定义与作用

Kafka 发行版自带了一套 Shell 脚本,覆盖了开发、测试、运维的大部分需求。掌握这些工具是高效操作 Kafka 的前提。本节以功能分类方式介绍各核心工具及其常用命令。

工具全景

完整示例

示例一:消费组管理

# 列出所有消费组
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

# 查看消费组详情(含 Lag)
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --group order-processor --describe
# GROUP            TOPIC   PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
# order-processor  orders  0          15234           15234           0
# order-processor  orders  1          12890           12900           10

# 重置 Offset 到最早(消费者组必须无活跃成员)
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --group order-processor --topic orders --reset-offsets --to-earliest --execute

# 重置到指定时间
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --group order-processor --topic orders \
  --reset-offsets --to-datetime 2026-06-01T00:00:00.000 --execute

# 删除消费组
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --group old-group --delete

示例二:性能基准测试

# Producer 压测(1 千万条,每条 100 字节)
bin/kafka-producer-perf-test.sh \
  --topic perf-test --num-records 10000000 --record-size 100 \
  --throughput -1 \
  --producer-props bootstrap.servers=localhost:9092 acks=1 \
    compression.type=lz4 linger.ms=5 batch.size=65536

# 输出:
# 10000000 records sent, 476190.4 records/sec (45.41 MB/sec)
# avg latency 8.2 ms, max latency 123.5 ms

# Consumer 压测
bin/kafka-consumer-perf-test.sh \
  --topic perf-test --messages 10000000 \
  --bootstrap-server localhost:9092 --group perf-group

# 输出:
# 10000000 records consumed, 833333.3 records/sec (79.46 MB/sec)

示例三:日志存储分析

# 查看日志目录状态
bin/kafka-log-dirs.sh --bootstrap-server localhost:9092 --describe \
  --topic-list orders,payments

# 查看日志文件内容
bin/kafka-dump-log.sh --files /data/kafka/orders-0/00000000000000000000.log \
  --print-data-log

# 查看索引
bin/kafka-dump-log.sh --files /data/kafka/orders-0/00000000000000000000.index

示例四:集群元数据(KRaft 模式)

# 查看 KRaft Quorum 状态
bin/kafka-metadata-quorum.sh --bootstrap-server localhost:9092 describe --status
# NodeId  LeaderId  LeaderEpoch  Status
# 1       1         5            Leader
# 2       1         5            Follower
# 3       1         5            Follower

# 查看副本状态
bin/kafka-metadata-quorum.sh --bootstrap-server localhost:9092 describe --replication

易错场景

易错 1:用 kafka-console-consumer.sh 在生产环境消费大量历史数据

场景:生产环境有 50GB 历史数据,启动 kafka-console-consumer.sh --from-beginning。

后果:控制台被 50GB 数据淹没,无法操作。且 Consumer Group 的 Offset 被推进到最新,影响后续消费。

正确做法:使用 --max-messages 限制输出:

bin/kafka-console-consumer.sh --topic orders --from-beginning \
  --max-messages 10 --bootstrap-server localhost:9092

易错 2:重置 Offset 前忘记停止 Consumer

场景:消费者组有活跃 Consumer 时执行 Offset 重置。

后果:命令执行报错 Error: Assignments can only be reset if the group is inactive。

正确做法:先停止所有 Consumer 实例,再执行重置。

面试高频考点

Q:生产环境如何安全地扩容分区?

A:

  1. 无 Key 消息:直接 --alter --partitions,无副作用
  2. 有 Key 消息且业务依赖有序性:
    • 分区扩容破坏 Key 路由 → 不同 Key 的数据混入同分区
    • 需评估业务是否真的需要分区内顺序
    • 如果需要,考虑在业务层用 transactional.id 避免分区漂移
  3. 扩容后:监控新分区的 Leader 分布是否均匀;如果不均匀,手动触发 Preferred Leader 选举
上一页
Topic 管理
下一页
监控