请教个问题哈,DefaultMessageStore#checkInDiskByCommitOffset 这个方法来检查消息是否在内存中,40% 这个逻辑是怎么形成的呢?是依照什么指标决定出来的呢?
个人想了一下,使用内存的地方可能如下:(现在对 RocketMQ 的整体还不太了解,可能不准确)
1,启动 rocketmq 的 jvm 内存。记得官方推荐 16G 内存的机器,runbroker.sh 里默认是 8G。这样的内存就剩下 50%了。
2,除了 CommitLog 外,Index、ConsumeQueue 等会占用一部分 page cache 内存,这些文件不算太大,我们估计成占用 10% 的内存。
3,系统占用内存忽略。
上面占用内存统计后,大约是 60%,剩下的 40% 内存是 CommitLog 所占用,所以 checkInDiskByCommitOffset 方法里,计算是否在内存中时,使用的是系统内存的 40%。不知道这样从结果推原因,是不是准确。
rocket mq 底层存储源码分析(7)-业务消息查询本章节是《rocket mq 底层存储源码分析》系列的最后一章,我们结合【逻辑位移索引】以及【key查询索引】,从低层接口分析如何利用这两类索引,为上层业务接口提供查询业务消...