LEO log end offset 日志末端偏移量,表示下一次数据写入的offset位移值,如果一个分区有三条消息,那么LEO就是3,LEO是从0开始算的;

HW 高水位 highWaterMark缩写,控制消费者可读取消息范围,取一个partition分区中ISR中最小的LEO,consumer最多只能消费到HW所在的位置。另外每个replica都有HW,leader和follower各自负责更新自己的HW的状 态。对于leader新写入的消息,consumer不能立刻消费,leader会等待该消息被所有ISR中的replicas同步后更新HW, 此时消息才能被consumer消费。这样就保证了如果leader所在的broker失效,该消息仍然可以从新选举的leader中获取。

对于HW, leader副本和follower副本只保存自身的HW,

对于LEO,follower副本只保存自身的,但是leader副本除了保存自身的,还会保存follower副本的

无论是leader副本所在的节点,还是follower副本所在的节点,分区都会保存所有的副本对象,但是只有本地副本才会有对应的日志文件。

整个数据写入和同步过程:

1、leader副本把数据写入本地磁盘

2、leader副本更新LEO

3、follower副本发送FETCH同步数据请求,携带自身的LEO

4、leader副本会读取底层日志文件中的消息数据,更新本地保存的其他副本LEO

5、leader副本尝试更新ISR列表

6、leader副本更新HW

7、leader副本给follower副本返回数据,携带leader副本的HW值

8、follower副本接收响应并写入数据,更新自身的LEO

9、follower副本更新笨的HW值

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐