Board logo

标题: 分布式开放消息系统(RocketMQ)的原理与实践-4 [打印本页]

作者: look_w    时间: 2018-12-18 20:18     标题: 分布式开放消息系统(RocketMQ)的原理与实践-4

五、消息存储RocketMQ的消息存储是由consume queue和commit log配合完成的。
1、Consume Queueconsume queue是消息的逻辑队列,相当于字典的目录,用来指定消息在物理文件commit log上的位置。我们可以在配置中指定consume queue与commitlog存储的目录
每个topic下的每个queue都有一个对应的consumequeue文件,比如:
${rocketmq.home}/store/consumequeue/${topicName}/${queueId}/${fileName}Consume Queue文件组织,如图所示:

Consume Queue文件组织示意图

死信队列(Dead Letter Queue)一般用于存放由于某种原因无法传递的消息,比如处理失败或者已经过期的消息。  
Consume Queue中存储单元是一个20字节定长的二进制数据,顺序写顺序读,如下图所示:

consumequeue文件存储单元格式

2、Commit LogCommitLog:消息存放的物理文件,每台broker上的commitlog被本机所有的queue共享,不做任何区分。
文件的默认位置如下,仍然可通过配置文件修改:
${user.home} \store\${commitlog}\${fileName}CommitLog的消息存储单元长度不固定,文件顺序写,随机读。消息的存储结构如下表所示,按照编号顺序以及编号对应的内容依次存储。

Commit Log存储单元结构图




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0