kafka的复制机制不是完全的同步或异步,完全的同步需要所有的副本成功写入才能返回,会极大地影响性能,完全的异步,只要写入leader副本即可,这样如果leader宕机,会丢消息,kafka采取了独特的ISR机制权衡数据的可靠性和性能.
1.日志文件逻辑格式
0是日志起始offset,HW是消费者可以拉取到的最大的offset,leo是新写入的下一条offset
2.所有的副本组成的集合是AR(Assigned Replicas)
3.与Leader保持一定程度同步的副本集合是ISR(In-Sync Replicas),消息先发送到Leader,follower才会拉取,所以follower有一定程度的滞后,这个滞后范围可以配置
rerplica.lag.time.max.ms=10000 同步最大延迟时间
rerplica.lag.max.messages=4000 同步最大延迟条数
超过以上配置的follower会被移除ISR,移入OSR(Out-of-Sync Replicas)
4.HW含义:ISR中所有offset中的最小值,即已经同步到ISR的消息
LEO每个partition下一条写入的offset