Kafka的备份机制

kafka的备份策略

Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进行拉数据进行同步,从而保证数据的冗余,防止数据丢失的目的。
如图:
这里写图片描述

follow副本是如何实现和leader副本进行数据同步的

首先我们了解下一些必要的专有名词:

  • ISR集合:ISR(In-Sync Replica)集合代表的是follow副本和leader副本消息相差不多的副本的集合。消息相差不到是一个比较模糊的概念。其实follow副本需要满足以下两个条件:
    1:follow副本必须和zookeeper保持连接。
    2:follow副本的最后的offset和leader中最新的数据之间的大小不能超过阈值。(也就是每个follow不能和leader副本消息相差太多)。
    Note:由于网络原因和宕机等原因免不了试follow副本会不能满足其中以上的条件(我理解的为任意一个条件),那么该follow副本将会被T出ISR集合中。举例:如果follow副本不满足上面条件2,此刻会被T出ISR集合,但是这个follow副本依然会进行数据的拉取,并且进行追赶,如果最新的offset和leader副本之间的数据量小于了阈值,那么该follow副本会从新加入到ISR集合中。
  • HW(HighWaterMark)顾名思义是一个标记。是用来标记当follow副本从leader副本中拉取消息并且同步到自身后,然后做在leader副本上做个HW来表明,此前的所有消息都在follow的副本上commit了。
  • LEO(Log End Offset)简单粗暴的理解就是记录leader副本中最新的offset的位置,然后记录在自己的log日志里。
    让我们通过图例来看下follow副本是如何进行复制数据的:
    这里写图片描述

    follow的同步和异步复制数据

    同步复制:就是所有的follow副本都进行进行同步数据后才进行HW。这样就导致如果其中的一个follow副本不管因为网络还是其他原因导致的迟迟不能同步数据成功的话。那么HW永远也不会进行,这样直接导致follow副本复制不可用。
    异步复制:异步复制避免了同步复制的缺点,但是不保证从leader副本拉取数据都同步到follow副本中。如图:
    这里写图片描述
    kafka采取同步和异步的共同优点,所以使用ISR的方法。把Follow中同步慢的数据进行T除,从而保证了复制数据的速度。一句话总结就是用同步的方法,如果其中有同步数据慢的follow的情况,直接把该follow给T除。如果leader副本宕机,那么从ISR中选举出来新的leader副本。因为follow副本中都有记录HW。这样也会减少数据的丢失。Follow副本能够从leader中批量的读取数据并批量写入,从而减少了I/0的开销。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值