Kafka数据复制与Failover

本文探讨了分布式系统中的一致性方案,包括Master-slave架构的同步与异步复制,WNR策略在去中心化系统中的应用,以及Paxos、Zookeeper和RAFT等协议。深入讲解了Kafka的Replica机制、数据复制与Commit策略,以及故障恢复原理。

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

failover 又称故障切换,指系统中其中一项设备或服务失效而无法运作时,另一项设备或服务即可自动接手原失效系统所执行的工作。

 

分布式架构一致性方案:

Master-slave:

Ø 同步复制可保证强一致性但会影响可用性

Ø 异步复制可提供高可用性但会降低一致性

 

 

WNR

Ø 主要用于去中心化(P2P)的分布式系统中。DynamoDB与Cassandra即采用此方案

Ø N代表副本数,W代表每次写操作要保证的最少写成功的副本数,R代表每次读至少读取的副本数

Ø 当W+R>N时,可保证每次读取的数据至少有一个副本具有最新的更新

Ø 多个写操作的顺序难以保证,可能导致多副本间的写操作顺序不一致,Dynamo通过向量时钟保证最终一致性

 

Paxos及其变种

Ø Google的Chubby,Zookeeper的Zab,RAFT等

 

 

Replica

Ø 当某个Topic的replication-factor为N且N大于1时,每个Partition都会有N个副本(Replica)

Ø Replica的个数小于等于Broker数,即对每个Partition而言每个Broker上只会有一个Replica,因此可用Broker ID表示Replica

Ø 所有Partition的所有Replica默认情况会均匀分布到所有Broker上

 

Data Replication

1.Propagate消息

 

 

Commit

Leader告诉 client 消息写完了,就是commit,kafka保证的是一条数据只要commit了,就不会出现数据丢失

ISR

Ø Leader会维护一个与其基本保持同步的Replica列表,该列表称为ISR(in-sync Replica)

Ø 如果一个Follower比Leader落后太多,或者超过一定时间未发起数据复制请求,则Leader将其从ISR中移除

Ø 当ISR中所有Replica都向Leader发送ACK时,Leader即Commit

kafka不是完全同步,也不是完全异步..当一台服务器被踢出ISR列表后,又清理了一下内存,速度变快了,它会请求Leader的数据,直到数据量没有比Leader落后太多,就会被重新加入到ISR列表中

 

Commit策略

Ø Server配置

 o replica.lag.time.max.ms=10000               

   如果ISR列表中的服务器超过十秒没有pull数据,那么就会被ISR列表移除

 o replica.lag.max.messages=4000

  如果Leader跟Follow数据差距超过4000,那么就会被移除列表

Ø Topic配置

  o min.insync.replicas=1

   Topic设置一个replicas,如果当服务器挂掉后,,数据就会丢失,最好多复制几个

Ø Producer配置

  o request.required.acks=0

  当value =  0时,producer是不需要管Leader响应的直接commit数据,直接当成发送成功,当value = 1, leader发送ack,就会当成发送成功,value = -1,用户不需要考虑决策,当iso列表中的所有follow全部发送ack,才会当成发送成功

 

Replica数据恢复

 

 

Replica全部宕机策略

n 等待ISR中任一Replica恢复,并选它为Leader

  Ø 等待时间较长,降低可用性

n 选择第一个恢复的Replica为新的Leader,无论它是否在ISR中

  Ø 并未包含所有已被之前Leader Commit过的消息,因此会造成数据丢失,可用性较高

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值