存储offset是一个什么概念?

来源:5-5 Offset存储讲解

_LJ

2019-09-09

是存储消费者对应的消费偏移量这个概念吗?
就像kafka中使用名为__consumer_offset的topic来存储各个consumer group对应的消费进度

写回答

1回答

阿神

2019-09-12

offset你可以理解为就是每一个文件的偏移量,是以字节为单位的。关于store存储这块其实比较复杂,建议小伙伴去看看相关的资料或分析文章。在这里本神简单和小伙伴说一下。
rmq对存储大体上可以分三大类形式,一为真实的message存储文件commitlog,二则为commitlog的索引文件consumequeue,consumequeue主要就是记录每一个消息的具体位置的,其内部数据每一条就是20个字节的数据,前八位是在commitlog的offset的起始位置,然后是4位的size,也就是这个消息的大小长度(size),最后8位是一个根据该消息的订阅tag的一个hashcode值。我们消费端可以通过对consumequeue的读取从commitlog中找到其真正的消息内容,然后就是一个index文件,主要做查询使用的,比如根据key或者时间等进行搜索消息。还有其他具体的内容比如消息如何转储,如何进行备份,新版本4.5.0以后又加入了DLedger,他是commitlog的子类,做了rafty一致性的扩展,用于做主从切换,保证一致性等等。

0
2
Poplar_hills
老师您说:"rmq对存储大体上可以分三大类形式,一为真实的message存储文件commitlog,二则为commitlog的索引文件consumequeue" 那么第三大类形式是什么样的呢?
2020-07-30
共2条回复

RocketMQ核心技术精讲与高并发抗压实战

理论+实战,系统掌握RocketMQ核心技术, 挑战高并发抗压实战

1182 学习 · 304 问题

查看课程