KafkaNotes

附录:附录:速查手册

zjc 于 2026-01-29 发布

这是《Kafka 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。

A.1 核心配置速查

Broker 端

配置 默认 说明
broker.id / node.id - 节点唯一 ID
log.dirs /tmp/kafka-logs 数据目录,逗号分隔多目录
num.partitions 1 新 topic 默认分区数
default.replication.factor 1 新 topic 默认副本数
min.insync.replicas 1 写入所需最小同步副本
unclean.leader.election.enable false 是否允许非 ISR 副本当选
log.retention.hours 168 日志保留时间
log.retention.bytes -1 每分区保留大小
log.segment.bytes 1GB 单 segment 大小
log.index.interval.bytes 4096 稀疏索引间隔
num.network.threads 3 网络线程数
num.io.threads 8 请求处理线程数
num.replica.fetchers 1 副本拉取线程数
message.max.bytes ~1MB 单条消息上限
auto.create.topics.enable true 自动建 topic(生产建议关)
auto.leader.rebalance.enable true 自动 Leader 均衡
replica.lag.time.max.ms 30000 ISR 判定超时

Producer

配置 默认 说明
acks all 0/1/all
enable.idempotence true 幂等生产者
retries MAX 重试次数
delivery.timeout.ms 120000 发送总期限
linger.ms 0 攒批等待
batch.size 16KB 单批大小
buffer.memory 32MB 发送缓冲总量
compression.type none zstd/lz4/snappy/gzip
max.in.flight.requests.per.connection 5 未确认请求数
max.request.size 1MB 单请求上限
transactional.id - 事务 ID,需稳定

Consumer

配置 默认 说明
group.id - 消费组
enable.auto.commit true 自动提交(生产建议关)
auto.commit.interval.ms 5000 自动提交间隔
auto.offset.reset latest 无位移时策略
session.timeout.ms 45000 心跳超时
heartbeat.interval.ms 3000 心跳间隔
max.poll.interval.ms 300000 两次 poll 上限
max.poll.records 500 单次 poll 条数
fetch.min.bytes 1 返回最小数据量
fetch.max.wait.ms 500 攒批最长等待
max.partition.fetch.bytes 1MB 单分区拉取上限
isolation.level read_uncommitted 事务场景 read_committed
partition.assignment.strategy Range+CoopSticky 分配策略
group.instance.id - 静态成员 ID

A.2 常用命令速查

# 主题
kafka-topics.sh --create --topic t --partitions 6 --replication-factor 3
kafka-topics.sh --list
kafka-topics.sh --describe --topic t
kafka-topics.sh --alter --topic t --partitions 12
kafka-topics.sh --delete --topic t
kafka-topics.sh --describe --under-replicated-partitions
kafka-topics.sh --describe --unavailable-partitions

# 控制台
kafka-console-producer.sh --topic t
kafka-console-consumer.sh --topic t --from-beginning
kafka-console-consumer.sh --topic t --group g \
  --property print.key=true --property print.partition=true

# 消费组
kafka-consumer-groups.sh --list
kafka-consumer-groups.sh --describe --group g
kafka-consumer-groups.sh --group g --topic t \
  --reset-offsets --to-earliest --execute

# 位移与日志
kafka-get-offsets.sh --topic t
kafka-dump-log.sh --files <segment.log> --print-data-log

# 集群与运维
kafka-broker-api-versions.sh --bootstrap-server bs
kafka-metadata-quorum.sh --bootstrap-server bs describe --status
kafka-leader-election.sh --bootstrap-server bs \
  --election-type preferred --all-topic-partitions
kafka-reassign-partitions.sh --bootstrap-server bs \
  --topics-to-move-json x.json --broker-list 1,2,3 --generate
kafka-configs.sh --bootstrap-server bs \
  --alter --entity-type topics --entity-name t \
  --set-config retention.ms=86400000

# 压测
kafka-producer-perf-test.sh --topic t --num-records 1000000 \
  --record-size 1024 --throughput -1 \
  --producer-props bootstrap.servers=bs acks=all
kafka-consumer-perf-test.sh --bootstrap-server bs --topic t \
  --messages 1000000

A.3 可靠性黄金配置

# Broker / Topic
default.replication.factor=3
min.insync.replicas=2
unclean.leader.election.enable=false
offsets.topic.replication.factor=3

# Producer
acks=all
enable.idempotence=true
delivery.timeout.ms=120000

消费端:手动提交、先处理后提交、失败进重试/死信、下游幂等。

A.4 学习资源