ISR机制和HW&LEO原理
ISR机制
ISR机制通过只选举在ISR列表中的follower作为新的leader来保证kafka数据的不丢失。
ISR:即in-sync replica
,就是跟leader partition保持同步的follower partition的数量,只有处于ISR列表中的follower才可以在leader宕机之后被选举为新的leader,因为在这个ISR列表里代表他的数据跟leader是同步的。
ISR列表:存放和leader partition保持同步的follower partition的列表,ISR列表存放在ZK上
单纯的多副本可以保证kafka高可用,但是并不能保证kafka数据的不丢失。当leader宕机时,如果leader有部分数据未同步到follower中,即使新选举出leader(原某个follower),未同步部分的数据以及丢失了。
如果要保证写入kafka的数据不丢失
- 首先需要保证ISR中至少有一个follower
- 其次就是在一条数据写入了leader partition之后,要求必须复制给ISR中所有的follower partition
只有同时满足上面两个条件才能说代表这条数据已提交,绝对不会丢失
HW&LEO原理
HW和LEO只要是为了保证ISR列表中的数据是一致的(leader和follower都在ISR列表中),进而保证kafka数据的不丢失。
其主要通过以下两个值来约束,