欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1394840       资源大小:109.01KB        全文页数:15页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1.前言为了尽量减少自然和人为灾难(如停电、灾难性软件故障和网络中断)对业务的影响,以及随着我行基于Kafka的实时业务不断增长,Kafka的更要性日益增长,在我行逐步优化跨IDC的Kafka连续性建设已经成为我们目前亟待解决的问题.本文就目前已有的灾备方案在元数据同步、数据宜制、消费位移同步、灾备模式等方面进行调研对比。2.现有灾备方案方案描述使用方MirrorMakerl(简称MMD摩理是启动消费者从源泉群进行消费然后发送到目标集群,功能较简单MirrorMaker2(筒称MM2)或基于MM2的改进基于KafkaConnect框架实现,由1.inkedIn工程师贡献,修复MMl的局限性,ToPic和分区可自动感知,acl和配汉可白动同步,支持双活,提供OffSet转换功能360Conf1UentReplicatorCOnfIUent收费版,与MV2相比,双活模式更优雅,可支持单条消息的修改Confluent基于FoIlower的同步机制利用Kafka的副本同步机制!创建FetCher或程同步数据,需要在原生Kafka上进行二次开发字节、滴滴uRep1icator改进MMl,利用分布式的任务管理框架ApacheHelix控制Partition的分配,不需要全部rebalanceUberbrooklin改进MM1,实现思路和MM2类似,与URePHCator一样.为了减少rebalance.采用StickyAssignment控制Partition的分配,除了支持Kafka要群间的史制,还能作为AZUreEventHubs,SKineSiS流式服务之间的通道,另外还能作为CDC连接器Unkedln3.各方案的主要设计点对比分析3.1 元数据同步元数据同步主要是指Topic、Partition.Configuration,AC1.的同步,我们需要评估各方案在新塔Topic,分区扩容后、修改Configuration和AC1.后能否自动感知,以及评估方案中选择复制的TOPiC是否灵活(比如是否支持白名单、黑名单机制,是否支持正则),目标集群中Topic名称是否发生改变(决定是否支持双向兔制,是否会发生循环复制),MMl方案中,选择复制的Topic只支持白名单机制(-whitelist或者-include参数指定),且白名单支持正则写法,但是当源集群新增Topic后,目标集群的auto.Create.toics.enable设置为true时,才能自动在目标集群创建相同名称的ToPiC何以扩展messagehandler改名),否则必须圭启MirrorMaker才能发现新增的Topic,关于目标集群上的Topic的分区数,MMl是按默认值num.partitionsiS行配置(其他方案均无该问题),无法和源集群上保持一致,AC1.也无法同步.相比MMl,MM2弥补了上述不足,主要是依赖MirrorsourceConnector里的多个定时任务实现该功能,更新Topic/Partition.Configuration,AC1.的间隔时长分别由三个参数指定,非常灵活.在MM2中,目前截至3.0.0的版本,支持两种豆制策略,默认的DefaultReplicationPoIicy中目标集群中复制后Topic名称发生变化,前面会加一个源集群的前缀,为了兼容MMl,3.0.0中新增的IdentityRePIiCationPOliCy中目标集群中巨制后Topic名称不会发生变化。ConfluentReplicator,根据官网描述,也同样具备上述功能,原理和MM2类似只是检测更新只由一个参数确定.Replicator可以定义夏制后T。PiC的名称,由参数topic.rename.format指定,默认值是保持Topic名称不变。基于Follower的同步机制的方案,由于网上资料不足,具体实现无法得知,但是原理估计和MM2类似,豆制后在目标集群中Topic名称保持不变.URepIicator的实现略有不同,豆制哪些Topic,由参数enableAUtoWhiteliSt和PatternTOEXdUdeTopics一起决定,当enableAUtoWhiteIiSt设置为true时,若源集群和目标集群中存在相同ToPiC,那么不需要其他设笆即可实现数据算制,若设冒为false,需要将复制的Topic名称等信息提交给URepIicatorController,由该Controller来控制分区的分配,另外黑名单参数PatternToExcIudeTopics控制哪些Topic不用复制;分区扩容是否自动感知,是由参数enableAUtoToPiCEXPanSion控制的;关于COnfigUration和AC1.无法实现同步。brooklin选择复制的Topic只支持白名单机制,可支持正则,新增Topic和分区扩容后可自动感知,检测更新由参数PartitionFetchIntervaIMs确定,豆制后Topic名称前可加前缀,由参数DEsTlNATioNjrOPIC-PFEFIX确定.总结如下:方案MMlMM2ConfluentReplicator基于Follower的同步机制URePIiCatorbrook1in复制后ToPiC名称变化不变,也可自定义可保持不变,也可以增加固定前例可保持不变,也可以自定义不变不变可保持不变,也可定义前煲方案MMlMM2CQn门UOntReplicaIor基于Follower的同步机制uReplicatorbrookIin自动检测和复制新Topic部分支持(取决于目标集群的自动创建Iopic是否开启)支持支持取决于二次开发的功能不支持支持自动检测和史制新分区不支持支持支持取决于二次开发的功能支持支持源集群和目标集箱总ToPiC配置-Sl不支持支持支持支持支持支持配四和AC1.更新是否同步不支持支持支持取决于二次开发的功能不支持不支持选择更制Topic的灵活度:是否具有白名单、黑名单和正则表达式的主题部分支持支持支持取决于二次开发的功能部分支持部分支持3.2数据复制数据复制是灾备方案的最核心点之一,我们需要评估各方案中复制后消息offset能否对齐,复制期间数据的一致性能否保证即是否会丢失数据或者会出现里且数据.首先说明一下,由于复制会有延迟,因此所有这些灾备方案里RPO都不等于0.基于Foil。Wer的同步机制的方案可以保持OffSet对齐,由于副本同步存在延迟,当主机房异常时,备机房上仍有丢失部分数据的可能性,offset可保持一致,不会出现重系数据的可能性.其他方案均不能保证offset对齐(除非是兔制时源Topic的offset从0开始),关于每个方案中消巡者从源集群消费,再写入到目标集群的逻辑,我们一一详细解释下:先从MMl开始,这是他的设计架构:HCAMMOiqo<M<n9fWf.mmmaUr一bo110VWU¾r*dmMg*MShuMown(MMbehvov)ec<Mtfthe9forandmoveonifbt8snd3setIoMe在KIP-3MirrorMakerEnhancement里,设计了上述架构,从以下几处保证不丢数:1 .关掉消费者的自动提交位移,提交位移之前会调用ProdUCer.flush。刷出缓存里数据2 .在producer端,通过设营这几个参数max.in.Hightiequests.per.ConneCtiOn=I侈个ConSUmer共享一个producer,这个PrOdUCer每次只给broker发一ZZbrequest),retries=Int.MaxValue(返回是可重试异常,无限次重试直到缓冲区满),ack=-l(发给所有副本)3 .设皆abortOnSendFail,当producer端收到不可点试异常后(比如消息过大之类的异甫),停止MirrorMaker进程,否则会丢失发送失败的部分数据另外为了避免在consumer发生rebalance的是时候出现更豆数据(rebalance时候有些数据位移没提交),定义了一个新的ConsumerRebaIance监听器,在发生PartitiOnReVOke的时候,先刷出ProdUCer缓存里数据,再提交位移.从上面设计来看,MMI是不丢数,但是还是存在数据重复的可能性,这是Kafka的非带等Producer决定的,另外MMl的设计还有很多缺陷,比如只有一个Producer,发送效率低,另外这个ProdUCer是轮询发送,消息发送到目的Topic上的分区和源Topic的分区不一定一致,由于是轮询,这个Producer和集群里每个broker会建立连接.对比URePlicator,同样也是在flush之后再提交位移去避免丢数,在MMl的缺陷都得到了改迸,每个Workerinstance里有多个FetcherThread和多个ProducerThread,从源集群fetch数据后会放到一个队列里,ProducerThread从队列里取走数据井发到目标集群的Topic.每条消息发送到目的Topic上分区和源分区保持一致,可以保持语义上一致。也可保持语义上一致,比URePliCatOr更有优势的一处就是提供了flushless的生产者(也可提供flush的Producer),哪些消息发送成功,才会提交这些位移,因为调用ProdUCer.flush()可以将缓冲区的数据强制发送,但是代价较商,在清空缓冲前会堵塞发送线程.在MirrorMaker2中,采用KafkaConneCt框架进行复制数据,从源端消费数据后,存到一个类型为IdentityHaShMaP的内存结构OUtStandingMeSSageS中,PrOdUCer发送到目的端成功后,会从该内存结构中删除该消息,另外会定时将从源端消费的进度保存到KafkaTopic中.这种实现机制不会丢失数据,但是Producer发送成功后,未将进度持久化前进程异常挂掉,那么会产生电豆消息.目前在KIP-656:MirrorMaker2Exactly-onceSemantics提出了一种可实现ExactlyOnlyOnce的方案思路是将提交消费位移和发送消息放在一个事务里,但是相关PatchKAFKA-10339仍然没被合进主分支,最后更新停留在20年8月份。根据ConfluentRePliCator官网描述,复制不会丢数,但是可能会重且,因此和上述MM2、URepIicatorsbrooklin一样,提供的都是AtleastOnceDelivery消息传递语义。方案MMlMM2ConfluentReplicator矩于Follower的同步机制UReplicatorbrooklin制前后分区语义一致不支持支持支持支持支持支持offset对齐不能不支持不支持支持不支持不支持消息假递语义不丢数,可能重复AtleastOnce不丢数可能重竟AtleastOnce.未来会提供EoSie义不丢数,可能堂复AtleastOnce取决于二次开发的功能.从Kafka副本同步的原理看,在参数设置合理的情况下,在副本之间同步过程中数据可保持一致不丢数,可能山复lleastOnco不丢数,可能肃夏t

    注意事项

    本文(Kafka 多种跨 IDC 灾备方案调研对比.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开