Kafka Mirror Maker:同步__consumer_offsets主题重复项

时间:2019-01-30 20:51:10

标签: apache-kafka kafka-consumer-api disaster-recovery

遵循此处kafka-mirror-maker-failing-to-replicate-consumer-offset-topic所述的解决方案。我能够跨DC1(Live Kafka群集)和DC2(Backup Kafka群集)群集启动镜像制作器,而不会出现任何错误。

看起来它还能够在DC2集群和DC1集群之间同步__consumer_offsets主题。

问题

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

我可以看到LOG-END-OFFSET正确显示,但是CURRENT-OFFSET仍然指向导致LAG的旧数据。

示例

  • 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中的提交,并且镜像制造商已将__consumer_offsets主题从DC1同步到DC2 < / p>

请让我知道我是否在这里丢失任何东西。

1 个答案:

答案 0 :(得分:1)

如果您使用的是Mirror Maker 2.0,他们会明确地说不支持一次创建:

https://cwiki.apache.org/confluence/display/KAFKA/KIP-382%3A+MirrorMaker+2.0#KIP-382:MirrorMaker2.0-Motivation

但是他们打算将来做。