0

我从原来的 Kafka MirrorMaker 迁移到MirrorMaker 2.0,以便将主题从一个集群复制到另一个集群。我正在运行文档中描述的专用 MirrorMaker 集群。

假设我正在复制一个名为test-topic.

Cluster A       Cluster B
----------      ----------
test-topic ---> A.test-topic

A.test-topic我怎样才能确定落后多远test-topic

最初的 MirrorMaker 创建了消费者组,所以我提到了该消费者组的滞后。MirrorMaker 2.0 不会创建消费者组,因此我无法使用它来确定延迟。

4

3 回答 3

2

我也有同样的用例。在 MM2 中,他们使用 consumer.assign() 而不是 consumer.subscribe() 来消费源集群

由于 assign 不需要任何 groupId,我们无法使用消费者组获得延迟。

作为一种解决方法,我做了以下事情:

  1. 调度程序将每隔 15 分钟定期运行一次。
  2. 它将获取源集群主题和目标集群主题的日志结束偏移量。
  3. 我们可以比较这两者,并根据滞后,我们可以配置警报。

为了找到日志结束偏移,我们可以为主题创建一个消费者,并可以使用 consumer.seekToEnd 并获取该位置。此外,您需要确保在此流程中必须跳过内部主题。

于 2020-09-04T14:34:10.063 回答
2

从 KIP-382 开始,有一个指标可以找到复制的记录数。但不是计算滞后的直接方法。 https://cwiki.apache.org/confluence/display/KAFKA/KIP-382%3A+MirrorMaker+2.0#KIP382:MirrorMaker2.0-PublicInterfaces

于 2020-09-03T14:58:25.407 回答
0

您不能直接获得滞后。MM2 在目标集群 {mm2-offets} 中创建内部主题。source-cluster-name.internal .MM2 在此处提交偏移量。消息键是 {topic}-{partition} ,值是 offset 。一种方法是检查源主题的日志结束偏移量,并将其与内部主题中为该分区提交的偏移量进行比较。

于 2020-10-13T14:11:14.677 回答