2、创建2个分区两个副本
/usr/local/kafka/bin# ./kafka-topics.sh --bootstrap-server 192.168.58.130:9092 --create --topic atguigu2 --partitions 2 --replication-factor 2
3、查看topic详细信息
/usr/local/kafka/bin# ./kafka-topics.sh --bootstrap-server 192.168.58.130:9092 --describe --topic atguigu2
2、Follower故障处理细节
Leader是接收生产者的数据,会先收到数据,所有Follower中的数据都是从Leader中拉取的,由于存在时间差的问题,导致Leader中的数据要多一些,Follower中的数据要少一些。
ISR[0 1 2]:
表示三台服务器正常运行
LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的offset+1。
HW(High Watermark):所有副本中最小的LEO。
2.1 Follower故障
(1)Follower发生故障后会被临时剔出ISR。
(2)这个期间Leader和Follower继续接收数据,那么对应的HW和LEO就会正常的变化。
此时接受数据 8 9
HW=8
LWO=9+1
(3)待该Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向Leader进行同步。
(4)等该Follower的LEO大于等于该Partition的HW,即Follower追上Leader之后,就可以重新加入ISR了。
2.2 Leader故障
(1)Leader发生故障之后,会从ISR中选出一个新的Leader
(2)为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据。
注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复