请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

存储offset是一个什么概念?

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

正在回答 回答被采纳积分+3

1回答

阿神 2019-09-12 00:33:37

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 回复 有任何疑惑可以回复我~
  • 像这种知识点,没有清晰的动态图,我们很难理解
    回复 有任何疑惑可以回复我~ 2019-09-20 15:19:26
  • 老师您说:"rmq对存储大体上可以分三大类形式,一为真实的message存储文件commitlog,二则为commitlog的索引文件consumequeue"
    
    那么第三大类形式是什么样的呢?
    回复 有任何疑惑可以回复我~ 2020-07-30 15:15:33
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信