kafka副本机制详解

本文探讨了Kafka的副本机制如何提供数据冗余、保证高可用性,以及在设计上如何平衡一致性与可用性。通过Leader-follower架构和ISR策略,Kafka实现了Read-your-writes和容错性,同时讨论了Unclean领导者选举带来的风险和CAP理论的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

副本机制的好处

  • 提供数据冗余:即使系统部分组件失效,系统依然能够继续运转,增加了整体可用性以及数据持久性
  • 提供高伸缩性:支持横向扩展,能够通过增加机器的方式来提升读性能,进而提高读操作吞吐量
  • 改善数据局部性:允许将数据放入与用户地理位置相近的地方,从而降低系统延时

kafka只具备提供数据冗余的好处

kafka基于领导者的副本机制

  • 副本分为Leader,follower
  • 只有leader对外提供读写,follwoer的任务是从leader异步拉取消息,并写入到自己的提交日志中
  • leader挂了,或者leader所在的broker宕机了,kafka依托 zk提供的监控功能实时感知到,并立即开启新一轮的leader选举,从follower中选一个新的leader,老leader副本重启回来后,只能作为follower加入到集群中

kafka为什么设计只有leader可读写?

  • 方便实现“Read-your-writes”:当使用生产者API向kafka成功写入消息后,马上使用消费者API去读取刚才生产的消息
  • 方便实现单调读(Monotonic Reads):对于一个消费者用户,在多次消费时,不会看到某条消息一会存在一会不存在
  • In-sync Replicas(ISR):ISR 中的副本都是与 Leader 同步的副本,相反,不在 ISR 中的追随者副本就被认为是与 Leader 不同步的

能够进入到ISR的追随者副本要满足一定的条件:

Broker 端参数 replica.lag.time.max.ms:这个参数的含义是follower副本能够落后leader副本的最长时间间隔,默认值10s,意思是只要一个follower副本落后Leader副本的时间不连续超过10s,那kafka就认为该Fllower和Leader是同步的,即使此时Follower副本中保存的消息明显少于Leader副本中的消息,倘若follower被认为是与leader副本不同步,就不能再放入ISR,kafka会自动收缩ISR集合,将该副本提出ISR,倘若该副本后面慢慢追上了Leader的进度,它能够重新被加回ISR,ISR是一个动态调整的集合,而非静态不变的

Unclean 领导者选举(Unclean Leader Election):kafka把所有不在ISR中的存活副本都成为非同步副本

非同步副本落后 Leader 太多,因此,如果选择这些副本作为新 Leader,就可能出现数据的丢失,在 Kafka 中,选举这种副本的过程称为 Unclean 领导者选举。Broker 端参数

unclean.leader.election.enable 控制是否允许 Unclean 领导者选举。开启 Unclean 领导者选举可能会造成数据丢失,但好处是,它使得分区 Leader 副本一直存在,不至于停止对外提供服务,因此提升了高可用性。

CAP理论:一个分布式系统通常只能同事满足一致性(Consistency),可用性(Availability),分区容错性(Partition tolerance)中的两个,kafka赋予了选择C或者A的权利

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值