生产者ISR

作者: Shaw_Young | 来源:发表于2022-02-01 21:58 被阅读0次

    数据可靠性保证

    为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer收到ack,就会进行下一轮的发送,否则重新发送数据。

    1)副本数据同步策略
    方案 优点 缺点
    半数以上完成同步,就发送ack 延迟低 选举新的leader时,容忍n台节点的故障,需要2n+1个副本
    全部完成同步,才发送ack 选举新的leader时,容忍n台节点的故障,需要n+1个副本 延迟高

    Kafka选择了第二种方案,原因如下:
    1.同样为了容忍n台节点的故障,第一种方案需要2n+1个副本,而第二种方案只需要n+1个副本,而Kafka的每个分区都有大量的数据,第一种方案会造成大量数据的冗余。
    2.虽然第二种方案的网络延迟会比较高,但网络延迟对Kafka的影响较小。

    2)ISR

    采用第二种方案之后,设想以下情景:leader收到数据,所有follower都开始同步数据,但有一个follower,因为某种故障,迟迟不能与leader进行同步,那leader就要一直等下去,直到它完成同步,才能发送ack。这个问题怎么解决呢?

    Leader维护了一个动态的 in-sync replica set(ISR),意为和header保持同步的follower集合。当ISR中的follower完成数据的同步之后,leader就会给follower发送ack。如果follower长时间未向leader同步数据,则该follower将被踢出ISR,该时间阈值由replica.lag.time.max.ms参数设定。Leader发生故障之后,就会从ISR中选举新的leader。

    相关文章

      网友评论

        本文标题:生产者ISR

        本文链接:https://www.haomeiwen.com/subject/kyykkrtx.html