目前還沒去讀源碼.其實看了一會,但還沒看完.~spa
開源的metaq我設計思路應該是這樣的:設計
1.生產者(producer)發送消息給broker.索引
這個過程有集羣.這裏仍是畫圖吧.文檔
1.圓柱體就是broker的分區,相同的顏色表明着同一個broker.一個broker能夠分爲多個分區(partation).源碼
2.黑色的圈圈表明着message,傳送帶表明的是topic是Producer.生產者對同一個topic能夠集羣.io
3.message保存在分區中.集羣
producer產生的同一個topic下的多個message保存在不一樣的partation實現broker的集羣,原理
broker的存儲策略.meta
1.broker接受到的message是以文件方式存儲的broker本地中.對於message的data部分,metaq不會進行任何轉換,只負責保存與索引.im
2. 同一個topic下有不一樣分區,每一個分區下面會劃分爲多個文件,只有一個當前文件在寫,其餘文件只讀。
具體的存儲原理在metaq的詳細文檔中.
consumer與broker的關係及集羣,
集羣下consumer拉取消息示意圖:
1.當集羣的consumer大於小於分區數目時,消費者會承擔額外的分區拉取.
2.當集羣的消費者大於分區數目時,則多餘的消費者處於空閒狀態.
3.一個分區下,對於同一個group的消費者,只能有一個進行消費.