关于CONSUME_FROM_TIMESTAMP逻辑的问题

使用CONSUME_FROM_TIMESTAMP的时候遇到了相关问题,

感谢大佬回复,根据大佬给的链接,我仔细研究了一下。我理解CONSUM_FROM_TIMESTAMP的逻辑是:

1.先找当前consumergroup在这个queue上的最新offset

2.如果没找到就去找这个queue当前的最早offset(这个offset就是consumerqueue文件组中最早的那个文件的第一个offset,也就是在磁盘上这个queue中最早的那个offset)

3.要是以上都没有再去按照timestamp去定位到哪个consumequeue文件,再在这个文件中通过折半查找去定位到匹配的timestamp的offset。

但是这个逻辑似乎是不是永远都走不到3?因为2的consumequeue文件应该永远都会有的吧?另外,要是没consumequeue文件的话,3也没有意义呀?请问什么情况才能走到3呢?

另外,我看链接中的解决方案也是通过cloneoffset方法,让新的consumergroup从其他consumergroup中把offset拷贝过来。让它最终能走1. 请问什么时候才能真正走到根据timestamp去查找offset的第3步呢?

谢谢!

原提问者GitHub用户yidaimi

展开
收起
芬奇福贵 2023-05-26 12:20:02 91 分享 版权
1 条回答
写回答
取消 提交回答
  • 在我的文章中,我们应该删除步骤2来修复它吗?

    新的步骤应该是这样的:

    1、尝试获取consumerqueue组中的偏移量。

    2、.如果没有,请尝试获取消费队列中的第一个偏移量。(删除此步骤)

    3、如果没有,只需通过二进制搜索来搜索偏移时间戳。 所以我认为它会正确工作。

    原回答者GitHub用户yidaimi

    2023-05-26 17:31:09
    赞同 展开评论
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理