跳到正文
Elaine Blog
返回

Kafka 集群、分区、副本与再均衡

分布式系统、协调与消息

Kafka 的扩展单位是分区,容错单位是副本,消费并行度受分区数约束。当前 Kafka 使用 KRaft 管理集群元数据;它与业务分区的数据复制是两条相关但不同的路径。

Table of contents

Open Table of contents

Leader、Follower 与 ISR

每个分区有一个 Leader 处理读写,Follower 拉取日志。ISR(in-sync replicas,同步副本集合)是跟进进度满足要求的副本集合。记录达到规定的副本确认后才具备相应持久性。

常见生产组合是 acks=all、副本因子 3、min.insync.replicas=2。这表示只有一个同步副本时拒绝需要全确认的写入,以可用性换数据安全。具体数值要按故障域、恢复时间和业务丢失预算验证。

不要启用不安全的 Leader 选举来“快速恢复”关键数据,因为落后的副本成为 Leader 可能截断已确认历史。副本还应跨机架或可用区分布,避免一处故障同时带走多数派。

Rebalance 为什么会暂停

消费者加入、离开、超出轮询时限或分区变化时,Coordinator 重新分配分区。Eager 协议可能一次撤销全部分区;Cooperative 协议逐步迁移,减少停止范围。静态成员标识可降低短暂重启造成的变动,但重复标识会被 fencing。

消费者应把一次 poll 与业务处理解耦或限制批量,确保不会因为慢任务超过 max.poll.interval.ms。收到撤销通知时,停止接新任务,等待已完成任务并提交安全位置,不能提交尚未完成的 offset。

观察真实瓶颈

同时观察分区倾斜、ISR 缩减、Under Replicated Partitions、请求排队、磁盘利用率、网络和消费 lag。总 lag 平稳也可能掩盖一个热分区持续增长。

参考 Kafka 4.1 设计文档理解交付语义,并在采用其他版本时切换到对应版本文档。

下一步

继续阅读08-17 Kafka 日志索引、事务与流处理,进入磁盘布局和 Exactly-Once 的边界。


分享这篇文章:

上一篇
Kafka 客户端消息流转
下一篇
Kafka 日志索引、事务与流处理