mq19

消息生产者发送消息时,Broker把消息存入到CommitLog中,每个CommitLog大小为1GB,CommitLog是一个顺序读写的文件,而且CommitLog并不会直接保存在磁盘中,而是保存在OS PageCache,OS PageCache性能接近内存,然后默认情况下以异步刷入的方式从OS PageCache刷入到磁盘中。由于文件顺序读写的方式性能非常高,加上CommitLog默认并不会直接写到磁盘,这就是RocketMQ高性能的原因。

此外Brokerkey的hashcode与commitLog offset作为键值对存入到IndexFile中,用于快速定位某个Key的消息。

消费者在消费消息时,从ConsumeQueue获取消息,但ConsumeQueue并不是直接保存消息内容,而且保存了CommitLog的索引,内容包括:CommitLog offset、size和tag hashcode,其中CommitLog offset和tag hashcode占8个字节,size占4个字节。

打赏
支付宝 微信
上一篇 下一篇