rocketmq逻辑存储结构
2024-04-10 18:37:30 1 举报
rocketmq消息存储机制
作者其他创作
大纲/内容
2
beginPhyOffset 8byte
1
msgSize
ConsumeQueue-1
30W
queue-2
500w
4byte【hash冲突使用】
1:通过msgId%500w,找到对应位置的槽位从而得到消息的索引下标
...
commitLog-offset
5oow个slot槽位
queue-1
indexCount 4byte
相当于个消息数组,直接通过数组下标查找,时间复杂度O(1)
4byte
3:直接定位到具体的消息
key.hash
8byte
Index文件:逻辑上的类HashMap结构
这个应该不只是msg的起始位置,应该还有msg的size
start-offset
2:知道下标通过计算找到具体条目offset
queue-3
next
consumeQueue文件夹
timestamp
ConsumeQueue-0
beginTimestamp8byte
0
consumer
endTimestamp8byte
ConsumeQueue-3
。这里物理上有500w个槽位,而每一个槽位保存的内容才是存的“消息索引内容”中条目数组的下标
queue-0
消息的索引内容
2000w
endPhyOffset8byte
hashSlotCount4byte
next-offset-index
一条消息对应一个
CommitLog文件单个文件大小固定1G,二进制的消息主体内容
tagsHashcode
3
订阅消息:通过config文件中得到消费位置,然后一个一个读取并消费
mq-topic
x
IndexHeader
直接就可以找到具体消息内容
ConsumeQueue-2
0 条评论
下一页