当前位置: 首页 > 知识库问答 >
问题:

Kafka镜子制造商:同步_ _消费者_抵消主题重复

韦星文
2023-03-14

按照此处提到的解决方案,kafka-mire-maker-fasting-to-复制-消费者-偏移-主题。我能够跨DC1(Live Kafka集群)和DC2(Backup Kafka集群)集群启动镜像制作器而没有任何错误。

看起来它还能够从DC1集群跨DC2集群同步__consumer_offsets主题。

问题

如果我关闭 DC1 的使用者并将同一使用者(同一group_id)指向 DC2,即使镜像制造商能够同步本主题和分区的偏移量,它也会再次读取相同的消息

我可以看到对数结束偏移显示正确,但当前偏移仍然指向旧的造成滞后。

>

  • Mirror Maker仍在DC2中运行。
  • DC1中的耗电元件关闭前

    //DC1  __consumer_offsets topic
    +-----------------------------------------------------------------+
    | TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG  |
    +-----------------------------------------------------------------+
    | gs.suraj.test.1 0          10626           10626           0    |
    | gs.suraj.test.1 2          10619           10619           0    |
    | gs.suraj.test.1 1          10598           10598           0    |
    +-----------------------------------------------------------------+
    

    停止DC1中的耗电元件

    在DC2中消费者启动之前

    //DC2  __consumer_offsets topic
    +-----------------------------------------------------------------+
    | TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG  |
    +-----------------------------------------------------------------+
    | gs.suraj.test.1 0          9098            10614           1516 |
    | gs.suraj.test.1 2          9098            10614           1516 |
    | gs.suraj.test.1 1          9098            10615           1517 |
    +-----------------------------------------------------------------+
    

    由于这种延迟,当我在DC2中启动同一个消费者时,再次读取4549消息,这应该不会发生,因为它已经在DC1中被读取并提交,并且镜像生成器具有从DC1到DC2的sync < code > _ _ consumer _ offsets 主题

    请让我知道我是否在这里遗漏了什么。

  • 共有1个答案

    杨雪松
    2023-03-14

    如果您使用的是Mirror Maker 2.0,他们会明确表示不支持一次性:

    https://cwiki.apache.org/confluence/display/KAFKA/KIP-382: 镜子制造者 2.0#KIP-382:镜子制造者2.0-动机

    但他们打算在未来这样做。

     类似资料:
    • 我们已经设置了MirrorMaker来跨两个Kafka集群复制消息。我们还在镜像制造商消费者属性中设置了来复制内部主题。我假设这也将复制,这将反过来同步辅助集群中的消费者组偏移量。 但是,当我们在二级集群中启动消费者组时,它从一开始就开始使用消息,因此看起来消费者组偏移量在二级群集中没有得到复制。 有人能提供一些建议吗?我们如何使用MirrorMaker或任何其他解决方案在辅助集群中同步消费者组偏

    • 是否有一种方法以编程方式访问和打印使用者滞后偏移,或者说使用者读取的最后一条记录的偏移与某个生产者写入该使用者分区的最后一条记录的偏移之间的位置差。 要知道我的最终目标是将这个值发送到prometheus进行监视,我应该在上面添加哪些语句来得到滞后偏移值?

    • 我们有一个服务器,负责处理消息的生成和消费。我们有4台笔记本电脑,所有带有confluent的Mac都运行相同的命令行。。。 /kafka avro控制台使用者--从一开始--引导服务器0.0.0.0:9092,0.0.0.0:9092--主题主题名称--属性schema.registry.url=http://0.0.0.0:8081 4台笔记本电脑中有3台没有问题使用这些消息,但是第四台不会。

    • 然而,当在我的环境中测试此示例时,我得到了一个异常。

    • 我目前正在探索Kafka,作为一个简单问题的初学者。 将有一个生产者向一个主题推送消息,但将有n个spark应用程序的消费者从kafka发送消息并插入到数据库中(每个消费者插入到不同的表中)。 是否有可能消费者会不同步(例如消费者的某些部分会停机很长一段时间),然后一个或多个消费者不会处理消息并插入到表中? 假设代码总是正确的,在按摩数据时不会出现异常。重要的是每条消息只处理一次。 我的问题是,K

    • 我们有一个非常简单的Kafka Consumer(v 2.6.2)。它是使用者组中唯一的使用者,并且该组是唯一一个阅读主题的组(有6个分区,其中有大约300万个事件)。Broker也是2.6.x版本 由于我们需要实现一个“只有一次”的场景,我们深入研究了一下,如果我们真的只使用一次写入主题的每个事件。不幸的是,我们发现:消费者有时会跳过一个偏移量,有时甚至会跳过一组分区的偏移量。 消费者除了记录之