【问题标题】:Messages lost while setting up Kafka mirror for disaster recovery server为灾难恢复服务器设置 Kafka 镜像时消息丢失
【发布时间】:2019-11-26 06:23:32
【问题描述】:

Producer.config

key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
max.in.flight.requests.per.connection=1
retries=3
acks=-1

步骤

  1. 在 server1 上启动 Kafka 镜像并推送 100 条消息
  2. 验证了 server2 上的消息。
  3. 关闭 server1 上的 kafka 镜像并推送 100 条消息
  4. 几分钟后,在 server1 上启动 kafka 镜像。
  5. 很多消息没有被复制到 server2

如果有人可以帮助我了解配置细节,我将不胜感激

【问题讨论】:

    标签: apache-kafka kafka-producer-api apache-kafka-mirrormaker


    【解决方案1】:

    你需要确保consumer.config在重启后使用相同的group.id,如果你想在重启后得到所有消息,auto.offset.reset=earliest

    旁注:MirrorMaker (1.0) 并非用于灾难恢复,只是盲目复制主题。 MirrorMaker 2 为多个集群之间的容错提供了更多选项。

    【讨论】:

    • 谢谢板球。有没有一种方法可以让我们使用时间戳作为参数来决定需要复制的消息。我来自这样一个事实,即当我的 server1 出现故障时,整个流量将转移到 server2,一旦 server1 启动,就必须将数据从 server2 镜像到 server1,依此类推。使用 auto.offset.reset=earliest 我将一直获取所有消息,无论这些消息是由于镜像还是从微服务收到的实际消息。
    • 不,MirrorMaker 1 不提供此功能。 MirrorMaker 2 可以,因为它使用相关的时间戳信息翻译消费者偏移主题。偏移重置选项仅在消费者组不存在时适用,但如果它总是不同的,你总是只阅读主题的结尾
    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2012-03-16
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多