Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 1.49 KB

4.high-availability.md

File metadata and controls

58 lines (42 loc) · 1.49 KB

Kafka 高可用

复制机制

  • Kafka 每个分区都有一个副本集合
  • leader 分区负责数据读写
  • follower 分区负责数据备份和提供选举

ISR 机制

  • leader 维护一个副本列表 ISR,存储与 leader 基本一致的副本
  • 当节点心跳超时或同步间隔超时,从 ISR 中移除
  • 当 follower 的数据索引大于 leader 的已确认索引时,可以加入 ISR
  • leader 选举默认从 ISR 中选取
  • 用于故障恢复和维护数据一致

IO 优化

  • 顺序 IO
  • 小文件使用页缓存,大文件使用直接 IO
  • 使用零拷贝,sendfile、mmap
  • 分区文件分段

处理数据丢失

生产者

  • 设置重试次数和重试间隔

消费者

  • 关闭自动提交 offset,消费消息后手动提交 offset
  • 实现幂等性接口,处理重复消费问题

Kafka

  • 确认 Kafka 支持的单条消息的最大长度
  • 设置 acks=-1,ISR 副本集合写成功后才返回写成功
  • 设置 ISR 副本集最小值大于 1
  • 设置不允许 OSR 选主
  • 设置每个分区至少 3 个副本

重复消费问题

  • 业务避免分区重平衡
  • 修改心跳
  • 修改消费时间
  • 使用手动提交,利用幂等性解决重复消费