kafka--基础知识点--6.4--LSO

个人理解,可能有误,仅供参考

LSO: LastStableOffset,分区中第一个未完成事务的起始偏移量,或如果没有未完成事务则为HW。

LSO <= HW <= LEO

LSO起作用必须满足以下所有条件:

  • 同一个分区多个生产者[也可以只有一个]中必须至少有一个是事务生产者;
  • 该分区的消费者isolation.level 参数值必须为read_committed

在 isolation.level=read_committed 模式下:

  • 消费者只能读取到 LSO 之前的消息
  • 如果事务未提交,LSO 会停留在第一个未提交事务的起始偏移量
  • 这意味着LSO 之后的所有消息(无论事务/非事务)都无法被读取
  • 直到生产者事务提交事务,消费者才能继续消费后边的消息

示例:

有两个生产者将消息发往同一分区,一个是事务生产者,一个是非事务生产者;该分区的消费者设置参数isolation.level=read_committed。分区接收到两个生产者消息的顺序可能如下:

text 复制代码
# 事务提交前
偏移量: 0   1   2   3   4
消息:   A   B   C   D   E
状态:   ✓   ✗   ✓   ✗   ✓   # ✓=非事务 ✗=事务消息(未提交)
HW: 5  # 所有消息都已复制到ISR
LSO: 1  # 第一个未提交事务在偏移量1

消费者可见: 只有偏移量0的消息A
消费者被阻塞在偏移量1,无法读取1-4的任何消息

# 事务提交后
LSO: 5  # 事务提交后,LSO推进到HW

消费者可见: 消息A, B, C, D, E全部可见
相关推荐
辞砚技术录29 分钟前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong40 分钟前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
欧亚学术2 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
oMcLin2 小时前
如何在Oracle Linux 8.4上搭建并优化Kafka集群,确保高吞吐量的实时数据流处理与消息传递?
linux·oracle·kafka
黑白极客2 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
码农水水2 小时前
中国邮政Java面试:热点Key的探测和本地缓存方案
java·开发语言·windows·缓存·面试·职场和发展·kafka
大厂技术总监下海2 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
LeenixP3 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板
知行合一。。。3 小时前
Python--03--函数入门
android·数据库·python
X***07883 小时前
理解 MySQL 的索引设计逻辑:从数据结构到实际查询性能的系统分析
数据库·mysql·sqlite