請教個問題哈,DefaultMessageStore#checkInDiskByCommitOffset 這個方法來檢查消息是否在內(nèi)存中,40% 這個邏輯是怎么形成的呢?是依照什么指標(biāo)決定出來的呢?
個人想了一下,使用內(nèi)存的地方可能如下:(現(xiàn)在對 RocketMQ 的整體還不太了解,可能不準(zhǔn)確)
1,啟動 rocketmq 的 jvm 內(nèi)存。記得官方推薦 16G 內(nèi)存的機(jī)器,runbroker.sh 里默認(rèn)是 8G。這樣的內(nèi)存就剩下 50%了。
2,除了 CommitLog 外,Index、ConsumeQueue 等會占用一部分 page cache 內(nèi)存,這些文件不算太大,我們估計成占用 10% 的內(nèi)存。
3,系統(tǒng)占用內(nèi)存忽略。
上面占用內(nèi)存統(tǒng)計后,大約是 60%,剩下的 40% 內(nèi)存是 CommitLog 所占用,所以 checkInDiskByCommitOffset 方法里,計算是否在內(nèi)存中時,使用的是系統(tǒng)內(nèi)存的 40%。不知道這樣從結(jié)果推原因,是不是準(zhǔn)確。
rocket mq 底層存儲源碼分析(7)-業(yè)務(wù)消息查詢本章節(jié)是《rocket mq 底層存儲源碼分析》系列的最后一章,我們結(jié)合【邏輯位移索引】以及【key查詢索引】,從低層接口分析如何利用這兩類索引,為上層業(yè)務(wù)接口提供查詢業(yè)務(wù)消...