目前还没去读源码.其实看了一会,但还没看完.~
开源的metaq我设计思路应该是这样的:
1.生产者(producer)发送消息给broker.
这个过程有集群.这里还是画图吧.
1.圆柱体就是broker的分区,相同的颜色代表着同一个broker.一个broker可以分为多个分区(partation).
2.黑色的圈圈代表着message,传送带代表的是topic是Producer.生产者对同一个topic可以集群.
3.message保存在分区中.
producer产生的同一个topic下的多个message保存在不同的partation实现broker的集群,
broker的存储策略.
1.broker接受到的message是以文件方式存储的broker本地中.对于message的data部分,metaq不会进行任何转换,只负责保存与索引.
2. 同一个topic下有不同分区,每个分区下面会划分为多个文件,只有一个当前文件在写,其他文件只读。
具体的存储原理在metaq的详细文档中.
consumer与broker的关系及集群,
集群下consumer拉取消息示意图:
1.当集群的consumer大于小于分区数目时,消费者会承担额外的分区拉取.
2.当集群的消费者大于分区数目时,则多余的消费者处于空闲状态.
3.一个分区下,对于同一个group的消费者,只能有一个进行消费.