qunarcorp / qmq

QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

想请教下PullLog和ActionLog的存储模型的理解

cytnju opened this issue · comments

在存储模型中,文档中说明qmq有三种log,messageLog、ConsumeLog、PullLog。在我的理解,messageLog类似RocketMQ的commitLog,ConsumeLog类似于partition的概念,或者说是rocketmq中的逻辑队列的索引文件,那ActionLog是什么概念呢?是存储消费进度的log吗?PullLog怎么理解呢?可以理解为是动态队列吗?那这种情况下的消息分配是类似于“推模式”吗?我比较好奇可伸缩partition的这种情况下顺序消费如何实现呢?谢谢!

commented
  1. ActionLog是统一保存所有pull、ack之类操作的日志,通过回放ActionLog可以获得各个PullLog和消费进度信息。
  2. PullLog可以看做动态队列,所有consumer共同消费一个主题,用PullLog保存每条消息具体分配给了哪个consumer。
  3. 消息分配还是拉取,consumer拉取的时候从consumerlog里分配一些给consumer,然后将分配情况写入ActionLog,通过回放得到PullLog。
  4. 顺序消费要走特殊的逻辑,目前还没有合并到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

@keliwang 太感谢了 点赞!去学习一下