Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

35 | 跨集群备份解决方案MirrorMaker

Confluent公司研发的Replicator工具
LinkedIn开发的Brooklin Mirror Maker工具
Uber的uReplicator工具
MirrorMaker配置实例
参数含义解释
MirrorMaker命令行工具
多套MirrorMaker部署
镜像流程
消费者+生产者的程序
其他跨集群镜像方案
运行MirrorMaker
什么是MirrorMaker?
开放讨论
小结
MirrorMaker
Kafka的跨集群数据拷贝该如何实现?

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我要和你分享的主题是:Kafka 的跨集群数据镜像工具 MirrorMaker。
一般情况下,我们会使用一套 Kafka 集群来完成业务,但有些场景确实会需要多套 Kafka 集群同时工作,比如为了便于实现灾难恢复,你可以在两个机房分别部署单独的 Kafka 集群。如果其中一个机房出现故障,你就能很容易地把流量打到另一个正常运转的机房下。再比如,你想为地理相近的客户提供低延时的消息服务,而你的主机房又离客户很远,这时你就可以在靠近客户的地方部署一套 Kafka 集群,让这套集群服务你的客户,从而提供低延时的服务。
如果要实现这些需求,除了部署多套 Kafka 集群之外,你还需要某种工具或框架,来帮助你实现数据在集群间的拷贝或镜像。
值得注意的是,通常我们把数据在单个集群下不同节点之间的拷贝称为备份,而把数据在集群间的拷贝称为镜像(Mirroring)。
今天,我来重点介绍一下 Apache Kafka 社区提供的 MirrorMaker 工具,它可以帮我们实现消息或数据从一个集群到另一个集群的拷贝。

什么是 MirrorMaker?

从本质上说,MirrorMaker 就是一个消费者 + 生产者的程序。消费者负责从源集群(Source Cluster)消费数据,生产者负责向目标集群(Target Cluster)发送消息。整个镜像流程如下图所示:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka的跨集群数据拷贝可以通过MirrorMaker工具实现。MirrorMaker是一个消费者+生产者的程序,用于实现消息或数据从一个Kafka集群到另一个集群的拷贝。它可以实时同步消息,并支持多套集群部署,用于不同目的。运行MirrorMaker需要指定消费者配置、生产者配置、线程数以及要执行数据镜像的主题正则表达式。在实际使用中,可以根据机器性能设置多个线程。MirrorMaker内部消费者将在未来版本中使用轮询策略来分配分区,以实现更均匀的分配效果。MirrorMaker的使用方法包括启动两套Kafka集群、准备配置文件、运行MirrorMaker工具。通过MirrorMaker工具,可以实现Kafka集群间的数据镜像,为读者提供了一种实用的解决方案。 MirrorMaker的主要功能简单易用,但运维成本较高,性能也有限。因此,业界出现了一些自行开发的跨集群镜像工具,如Uber的uReplicator、LinkedIn的Brooklin Mirror Maker和Confluent公司的Replicator工具。这些工具针对MirrorMaker的缺陷进行了改进,提供更灵活、高效的跨集群数据备份解决方案。其中,Replicator工具还提供了企业级的跨集群镜像方案,能够自动在目标集群上创建与源集群一模一样的主题,极大地方便了运维管理。 总的来说,MirrorMaker是Apache Kafka社区提供的跨集群镜像解决方案,适用于数据备份、主备集群等场景。读者可以根据自身业务需求,选择合适的工具来完成跨集群的数据备份。文章还提到了对MirrorMaker进行消息处理的方法,欢迎读者参与讨论。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • 无菇朋友
    老师您好,问一下怎么在本地搭建两个kafka集群

    作者回复: 设置zookeeper.connect时使用不同的chroot,比如一个是zk:2181/kafka1,另一个是zk:2181/kafka2

    2019-09-02
    10
  • 蒙开强
    老师,你好,你提的这几款工具,MirrorMaker是免费的,其它的也是免费可以用的么

    作者回复: LinkedIn的Brooklin MM好像没有开源,Confluent的Replicator要收费,Uber的uReplicator应该开源了

    2019-08-22
    2
    6
  • 咸淡一首诗
    胡老师,想问一下,MirrorMaker 工具能保证同步前后分区序号,以及分区位移是一样的吗?

    作者回复: 很难。我指的是实际环境中,至少代价极大。就拿位移来说你就很难保证严格一致。

    2020-03-15
    2
    4
  • wgcris
    老师,您好,请教个问题,如果使用mirrormaker做集群数据同步,是不是内部topic数据也一起进行同步?另外在主备场景下,如果主集群挂了,如何保证备集群能正常提供服务,客户端消费数据是正确的

    作者回复: 默认是不同步内部topic,如果要同步的话,需要两个条件:在consumer.config中设置exclude.internal.topics=false以及在producer.config中设置client.id=__admin_client。具体参见这个jira: https://issues.apache.org/jira/browse/KAFKA-6524 如果主挂了,client需要自行处理切换的问题,目前Kafka端尚未自动切换的解决方案

    2019-11-24
    3
  • 猪哥灰
    老师好,想请教一下mirrormaker是否支持两个分别支持不同认证方式的kafka集群,或者两个不同kerberos认证的集群

    作者回复: mirrormaker 1是不支持的,可以考虑使用MM2

    2020-05-26
    1
  • 大坏狐狸
    完了 我咋感觉 用不到这东西。我又怕以后用到了。

    作者回复: MM后面应用的场景还是很多的,加油

    2020-03-20
    1
  • wgcris
    老师,您好,再请教个问题最近我们生产环境发现,broker进程意外挂掉之后,重启broker时间会很长,当数据量很大的时候,浏览了一下社区,KIP-263提了一个解决方案,而且已经合入到2.3版本,但测试发现并没有什么效果,不知道您有了解这方面的优化吗?

    作者回复: 这个KIP还在讨论中啊,没有进2.3版本。基本上都是因为加载日志段时间过长导致的。目前社区针对这个问题的终极解决方案是KIP-500

    2019-11-26
    2
    1
  • 蓝色海洋
    老师,我想问问,低版本的集群消息可以同步到高版本集群吗,目前版本是0.8想同步到2.0集群

    作者回复: 个人觉得使用MirrorMaker似乎也是可以的,只是版本跨度有点大~ 0.8和2.0的消息格式都是不一样的,

    2019-10-30
    2
    1
  • RJZ
    用kafka connector实现可以不

    作者回复: Kafka Connect多是实现Kafka与其他外部系统之间的互连,不是用于Kafka多集群间的数据迁移,而且也没有对应的kafka connector....

    2019-08-27
    1
  • 夏末?秋初
    老师,如果用mirrormaker作为集群间数据迁移工具,迁移后能否保证消费位移一致,前提是源端目的端所有配置、主题、分区数这些都一致,mirrormaker能否达到这种场景下的迁移啊?

    作者回复: 可以保证,因为mirrormaker也可以迁移__consumer_offsets,只是我严重怀疑在实践中做到这点还是有点技术含量:)

    2020-12-04
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部