想请教下PullLog和ActionLog的存储模型的理解
cytnju opened this issue · comments
cytnju commented
在存储模型中,文档中说明qmq有三种log,messageLog、ConsumeLog、PullLog。在我的理解,messageLog类似RocketMQ的commitLog,ConsumeLog类似于partition的概念,或者说是rocketmq中的逻辑队列的索引文件,那ActionLog是什么概念呢?是存储消费进度的log吗?PullLog怎么理解呢?可以理解为是动态队列吗?那这种情况下的消息分配是类似于“推模式”吗?我比较好奇可伸缩partition的这种情况下顺序消费如何实现呢?谢谢!
Keli commented
- ActionLog是统一保存所有pull、ack之类操作的日志,通过回放ActionLog可以获得各个PullLog和消费进度信息。
- PullLog可以看做动态队列,所有consumer共同消费一个主题,用PullLog保存每条消息具体分配给了哪个consumer。
- 消息分配还是拉取,consumer拉取的时候从consumerlog里分配一些给consumer,然后将分配情况写入ActionLog,通过回放得到PullLog。
- 顺序消费要走特殊的逻辑,目前还没有合并到master,可以参考:
https://mp.weixin.qq.com/s?__biz=MzU3MTQ4MzEwMw==&mid=2247483717&idx=1&sn=cf4590a409c14c5c0fd0020145eda932
https://mp.weixin.qq.com/s?__biz=MzU3MTQ4MzEwMw==&mid=2247483732&idx=1&sn=1a8f3220f202d19ba6d256c5335563be