Skip to content

07 · Kafka 深入 ​

Kafka 的部署不难,难的是分区数、副本因子、刷盘与 ACK 策略这三件事一旦定错,后面改起来要动客户端。

小节规划 ​

小节内容状态
Zookeeper 模式集群三节点搭建、server.properties 关键字段已写
KRaft 模式集群不依赖 ZK 的新部署方式、迁移注意已写
Topic 与分区分区数怎么定、副本与 ISR、日志保留策略已写
命令行工具生产/消费/位移查看/ lag 计算已写
可靠性配置acks、min.insync.replicas、幂等与事务已写
消费组与再均衡session.timeout、max.poll.interval、重复消费已写
监控与容量Broker/Topic 指标、磁盘与网络评估已写
常见故障消息积压、leader 频繁切换、磁盘写满、时间不同步已写

最常用的四条运维命令 ​

bash
# 看 topic 的分区与 ISR(in-sync replica 少于副本数就该警惕)
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic order

# 看消费组落后多少(Lag 持续增长就是消费跟不上)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --describe --group order-group

# 从指定时间点重放(排障时最常用)
kafka-console-consumer.sh --bootstrap-server localhost:9092 \
  --topic order --group tmp-group \
  --consumer-property auto.offset.reset=earliest \
  --property print.timestamp=true --max-messages 20

# 临时改 broker 参数(重启失效,验证完记得写回配置文件)
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 1 \
  --alter --add-config log.retention.hours=48