赞
踩
我们在之前的文章中,聊到了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副本的过程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。