Kafka的副本数据同步策略是:
当副本全部完成同步时,才会返回ack
优点是选举新的leader时,容忍n台节点故障,需要n+1
个副本,而且不会造成数据的大量冗余,缺点是延迟高。
虽然它的网络延迟高,但网络延迟对kafka的影响较小;
ISR:
作用:
剔除故障的follower(不和leader进行同步)
如果leader故障,此时会在follower中选举新的leader
场景:
leader收到数据后,所有follower都开始同步数据,但有某个follower发生故障,迟迟不能与leader进行同步,这时leader会一直等下去,知道它完成同步,才能发送ack,当出现这个场景时
leader维护一个动态的in-sync replica set(ISR),意为和leader保持同步的follower集合。当ISR中的follower完成数据同步之后,就会发送ack。如果follower长时间未向leader同步数据,则该follower将会被踢出ISR,该时间阈值由replica.lag.time.max.ms参数设定,leader发生故障之后,就会从ISR中选举新的leader。