- Kafka 每个分区都有一个副本集合
- leader 分区负责数据读写
- follower 分区负责数据备份和提供选举
- leader 维护一个副本列表 ISR,存储与 leader 基本一致的副本
- 当节点心跳超时或同步间隔超时,从 ISR 中移除
- 当 follower 的数据索引大于 leader 的已确认索引时,可以加入 ISR
- leader 选举默认从 ISR 中选取
- 用于故障恢复和维护数据一致
- 顺序 IO
- 小文件使用页缓存,大文件使用直接 IO
- 使用零拷贝,sendfile、mmap
- 分区文件分段
- 设置重试次数和重试间隔
- 关闭自动提交 offset,消费消息后手动提交 offset
- 实现幂等性接口,处理重复消费问题
- 确认 Kafka 支持的单条消息的最大长度
- 设置 acks=-1,ISR 副本集合写成功后才返回写成功
- 设置 ISR 副本集最小值大于 1
- 设置不允许 OSR 选主
- 设置每个分区至少 3 个副本
- 业务避免分区重平衡
- 修改心跳
- 修改消费时间
- 使用手动提交,利用幂等性解决重复消费