外观
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