Kafka多种跨IDC灾备方案调研对比.docxVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

?

?

Kafka多种跨IDC灾备方案调研对比

?

?

【摘要】某行Kafka的重要性日益增长,逐步优化跨IDC的Kafka连续性建设已经成为目前亟待解决的问题。本文就目前已有的灾备方案在元数据同步、数据复制、消费位移同步、灾备模式等方面进行调研对比。

1.前言

为了尽量减少自然和人为灾难(如停电、灾难性软件故障和网络中断)对业务的影响,以及随着我行基于Kafka的实时业务不断增长,Kafka的重要性日益增长,在我行逐步优化跨IDC的Kafka连续性建设已经成为我们目前亟待解决的问题。

本文就目前已有的灾备方案在元数据同步、数据复制、消费位移同步、灾备模式等方面进行调研对比。

2.现有灾备方案

方案

描述

使用方

MirrorMaker1(简称MM1)

原理是启动消费者从源集群进行消费,然后发送到目标集群,功能较简单

MirrorMaker2(简称MM2)或

基于MM2的改进

基于KafkaConnect框架实现,由LinkedIn工程师贡献,修复MM1的局限性,Topic和分区可自动感知,acl和配置可自动同步,支持双活,提供offset转换功能

360

ConfluentReplicator

Confluent收费版,与MM2相比,双活模式更优雅,可支持单条消息的修改

Confluent

基于Follower的同步机制

利用Kafka的副本同步机制创建Fetcher线程同步数据,需要在原生Kafka上进行二次开发

字节、滴滴

uReplicator

改进MM1,利用分布式的任务管理框架ApacheHelix控制Partition的分配,不需要全部rebalance

Uber

brooklin

改进MM1,实现思路和MM2类似,与uReplicator一样,为了减少rebalance,采用StickyAssignment控制Partition的分配,除了支持Kafka集群间的复制,还能作为AzureEventHubs,AWSKinesis流式服务之间的通道,另外还能作为CDC连接器

LinkedIn

3.各方案的主要设计点对比分析

3.1元数据同步

元数据同步主要是指Topic、Partition、Configuration、ACL的同步,我们需要评估各方案在新增Topic,分区扩容后、修改Configuration和ACL后能否自动感知,以及评估方案中选择复制的Topic是否灵活(比如是否支持白名单、黑名单机制,是否支持正则),目标集群中Topic名称是否发生改变(决定是否支持双向复制,是否会发生循环复制)。

MM1方案中,选择复制的Topic只支持白名单机制(--whitelist或者--include参数指定),且白名单支持正则写法,但是当源集群新增Topic后,目标集群的auto.create.topics.enable设置为true时,才能自动在目标集群创建相同名称的Topic(可以扩展messagehandler改名),否则必须重启MirrorMaker才能发现新增的Topic,关于目标集群上的Topic的分区数,MM1是按默认值num.partitions进行配置(其他方案均无该问题),无法和源集群上保持一致,ACL也无法同步。

相比MM1,MM2弥补了上述不足,主要是依赖MirrorSourceConnector里的多个定时任务实现该功能,更新Topic/Partition、Configuration、ACL的间隔时长分别由三个参数指定,非常灵活。在MM2中,目前截至3.0.0的版本,支持两种复制策略,默认的DefaultReplicationPolicy中目标集群中复制后Topic名称发生变化,前面会加一个源集群的前缀,为了兼容MM1,3.0.0中新增的IdentityReplicationPolicy中目标集群中复制后Topic名称不会发生变化。

ConfluentReplicator,根据官网描述,也同样具备上述功能,原理和MM2类似,只是检测更新只由一个参数确定。Replicator可以定义复制后Topic的名称,由参数topic.rename.format指定,默认值是保持Topic名称不变。

基于Follower的同步机制的方案,由于网上资料不足,具体实现无法得知,但是原理估计和MM2类似,复制后在目标集群中Topic名称保持不变。

uReplicator的实现略有不同,复制哪些Topic,由参数enableAutoWhitelist和patternToExcludeTopics一起决定,当enableAutoWhitelist设置为true时,若源集群和目标集群中存在相同Topic,那么不需要其他设置即可实现数据复制,若设置为false,需要将复制的Topic名称

文档评论(0)

139****2545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档