生产者
数据可靠性
数据同步
生产者将数据发送给leader
,leader
和follower
都是副本
- 半数以上完成返回ACK:优点低延迟,缺点,选举新的leader时容忍n个服务器故障,最少需要2n+1个副本(保证半数以上服务器有数据,剩下的n+1台中至少有一台有数据)
- 全部完成返回ACK:优点,容忍n台故障,只需要n+1台,缺点是延迟高
为了减少数据冗余,Kafka选择全部信息同步后才发送ACK,使用较少的服务器。
ISR(In-sync replica set)
防止数据同步时,存在某个服务器同步信息非常慢,而又需要等待所有的服务器都完成同步,迟迟不能发送ACK。因此提出ISR
意为和leader
保持同步的follower
集合。ISR中的follower完成数据同步后,就会返回ACK。
通过参数replica.lag.time.max.ms
进行判定:如果一个follower在这个时间内没有发送fetch请求或消费leader日志到结束的offset,leader将从ISR中移除这个followerÿ