卡夫卡到卡夫卡镜像采样

时间:2017-10-29 13:57:33

标签: apache-kafka

知道如何制作kafka-to-kafka镜像但是有一个采样(例如只有10%的消息)?

1 个答案:

答案 0 :(得分:2)

您可以使用MirrorMakerMessageHandler(由message.handler参数配置):

https://github.com/apache/kafka/blob/1.0/core/src/main/scala/kafka/tools/MirrorMaker.scala#L430

处理程序本身需要决定是否转发消息。一个简单的实现只是收到消息的计数器,如果是0 == counter % 10则转发。

但是,对于收到的每条消息都会调用此处理程序,因此这意味着您将收到所有消息&丢掉90%的人。

另一种方法是修改主循环,镜像制造商消费者接收消息,并将其转发给生产者(将消息发送到镜像集群)在这里

https://github.com/apache/kafka/blob/1.0/core/src/main/scala/kafka/tools/MirrorMaker.scala#L428

您需要将使用者部分修改为 - 或:

  • 仅转发第N(第10)条消息/偏移
  • 仅在日志中寻找第N条消息

我更喜欢前一个想法,因为在同一个消费者群体中有多个MM实例的情况下,您仍然可以获得合理的行为。第二种选择会要求你做更多的工作来处理重新分配。

另外,告诉哪个消息来自10%是非常重要的,我只是假设它是收到的每10条消息。