目前还没去读源码.其实看了一会,但还没看完.~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的消费者,只能有一个进行消费.