一、集群模式
- Kafka集群由多个broker组成,每个broker就是Kafka实例。
- 假如某个broker宕机,在集群中其他的broker依然可以对外提供服务,这个就是集群能够保证高可用性。
二、分区备份机制
- 分区提供了副本机制,一个分区可能存在多个副本,并且这些副本分别存储在不同的broker中。
- leader副本对外提供读写数据,同一个分区下的所有副本存储的内容是一样的。由leader负责把数据同步给其他follower。
- 当某个分区的leader所在的broker宕机了,就会从其他的broker的follower中选举一个成为新的leader,继续对外服务。这样保证了系统的容错性和高可用性。
1. follower分类
- ISR副本:in-sync-replica,需要同步复制保存的follower副本。标名为ISR的副本,leader在同步数据时,以同步请求方式。同步请求的数据更具有完整性,
- 普通副本:普通副本,leader在同步数据时,以异步请求方式。异步请求无法保证完整性。
- 如果leader宕机了,肯定是ISR中的副本更加接近leader中的数据。
2. leader宕机,新的leader选举原则
- ISR配置:在broker配置中,可以设定topic副本数量和ISR最少个数。根据实际情况设置。
- ISR同步保存数据,性能不高,一般至少会设置1个ISR列表,其他的尽量设置为普通副本。保证高可用的前提下,数据的时效性。
- 选举时优先从ISR中选定,因为这个列表中的follower的数据是与leader同步的。
- 如果ISR列表中的follower都不行了,就只能从其他的普通follower中选取。
三、总结