1. CommitLog消息顺序写入机制
首先思考一下,当生产者的消息发送到一个Broker上的时候,他接收到了一条消息,接着他会对这个消息做什么事情?
首先第一步,他会把整个消息直接写入磁盘上的一个日志文件,叫做CommitLog,直接顺序写入这个文件,如下图:
这个CommitLog是很多磁盘文件,每个文件限定最多1GB,Broker接收到消息之后就直接追加写入这个文件的末尾,就跟上面图里一样,如果一个CommitLog写满了1GB,就会创建一个新的CommitLog文件。
2. MessageQueue在数据存储中是体现在哪里?
接着我们会发现一个问题,如果写入这个Broker的消息都是进入到CommitLog中去存储的,那么前面提到的MessageQueue是体现在哪里呢?
其实在Broker中,对于Topic下的每个MessageQueue都会有一系列的ConsumerQueue文件;这是什么意思呢?就是在Broker的磁盘上,会