消息队列三|Kafka 如何做到高可用?

我们在之前的文章中,聊到了redis的高可用机制。

本篇文章中我们聊聊Kafka如何做到高可用

副本?

说到Kafka的高可用保障,自然都会想到副本。

什么是副本呢?副本是分布式系统对数据和服务提供的一种冗余方式。

Kafka 从0.8版本开始为分区引入了多副本的机制,通过增加副本数量来提升数据容灾的能力。并且通过多副本机制实现故障的自动转移,在kafka 集群中某个broker节点失效的情况下仍然能保持服务可用。

副本相关的有AR,ISR,HW,LEO 几个概念,下面我们一一介绍一下。

什么是AR,ISR:

分区中的所有副本统称为AR,而ISR是指与leader保持同步的副本集合,leader副本也是这个集合的一员。

什么是HW,LEO?

LEO标识每个分区中最后一条消息的下一个位置,分区的每个副本都有自己的LEO,ISR中最小的LEO即为HW,LEO对消费这不可见,消费者只能拉取HW之前的消息。如下图,HW=min(5,2,3)=2。

从生产者发出的消息首先会被写入分区的leader副本,不过还需要等待ISR集合中的所有副本同步完之后才能被认为已经提交,之后才会重新更新分区的HW,进而消费者可以消费到这条消息。

副本如何同步数据?

说到数据同步,不管是哪一个中间件,redis也好,kafka也好,或者其他的中间件产品,都要去解决两个在同步数据过程中可能带来的两个问题。

1 数据丢失的问题

2 数据不一致的问题

我们用一张图来表示ISR集合中Follower副本同步leader副本的过程。

关于数据丢失的问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值