分区中的所有副本统称为AR
所有与leader副本保持一定程度同步的副本组成ISR(包括leader,这个同步程度参数设置)
与leader副本同步滞后过多的副本组成OSR(Out-of-Sync Replicas)
得出:
AR=ISR+OSR
leader副本负责维护和跟踪ISR集合中所有follower副本的滞后状态,太滞后了(超过参数),踢出ISR
如果OSR中有follower副本“追上”leader副本(同步到参数范围内),加入ISR
当leader发生故障了,只有ISR中的副本才有资格被选举为新的leader
生产和消费都是作用于leader分区的,follower分区只负责同步,所以上图算是leader分区的图
HW(High Watermark) 和 LEO(Log End Offset) 标识两个特定的offset 数值位置
HW - 1 的offset是消费者可以消费的区间
ISR集合中的每个副本都会维护自身的LEO
LEO比较好理解,未来要写入信息的offset位置(当前没有写入信息)
HW是ISR集合中最小的LEO
HW的使用虽然能提示效率,从生产者这边来看 似乎并不能保证HW~LEO中的数据不丢失?
思考半天 这好像是一直用的参数ack的使用来源(人为设置参数保证)
能存在思考的问题)**
开发大佬说生产端是0 可能都是日志数据 所以要提升吞吐量,kafka也不存重要的业务数据