kafka中副本数据同步策略 ,acknowledge的发送策略,kafka的数据可靠性保证

ack(acknowledge)简介

为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的消息后,都需要向producer发送ack(acknowledge),确认收到信号。

如果producer收到topic发送的ack,就会进行下一轮的发送,否则重新发送数据

何时发送ack?

确保有follower与leader同步完成,leader再发送ack,这样才能保证leader挂掉之后,能在follower中选举出新的leader

发送策略:多少个follower同步完成后发送ack?

方案一:半数以上的follower同步完成,即可发送ack。

优点:延迟低,反应速度快。 缺点:选举新的leader时,若要容忍n台结点的故障需要2n+1个副本

方案二:全部的follower同步完成,才可以发送ack

优点:选举新的leader时,容忍n台结点的故障,需要n+1副本。缺点:延迟高,反应速度慢

kafka选择了第二种方案

原因如下:
(1)为了容忍n台节点的故障,第一种方案需要2n+1个副本,而第二种方案只需要n+1个副本。kafka的每个分区都有大量的数据,第一种方案会造成大量的数据冗余

(2)虽然第二种方案的网络延迟会比较高,但网络延迟对kafka的影响较小

为何是2n+1?

节点需要超过一半才能选举一个新的leader。

如果只有2n个副本,每次同步到n个节点就返回,如果这n个节点都发生故障,数据便丢失了

如果是2n+1个副本,半数就是n+1,即每次同步到n+1个节点就返回,n个节点发生故障,至少还存在一个节点存在完整数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值