主页 > 新闻资讯 > 大数据学习:Kafka副本机制详解

大数据学习:Kafka副本机制详解

作者:张老师 浏览次数: 2021-03-18 17:47
Kafka在实时消息流处理上,其高性能是得到肯定的,而高性能来自于Kafka在架构设计上的优势,对于消息的引入、存储、传送都有可靠的保障机制。今天的大数据学习分享,我们就来讲讲Kafka用以保证消息不丢失的副本机制。

为了保证高可用,kafka的分区是多副本的,如果一个副本丢失了,那么还可以从其他副本中获取分区数据。但是这要求对应副本的数据必须是完整的,这是Kafka数据一致性的基础,所以需要使用controller broker来进行专门的管理。

一、Kafka分区和副本

Kafka的主题被分为多个分区,分区是Kafka最基本的存储单位。每个分区可以有多个副本(可以在创建主题时使用replication-factor参数进行指定)。其中一个副本是Leader副本(Leader replica),所有的事件都直接发送给Leader副本;其他副本是跟随者副本(Follower replica),需要通过复制来保持与Leader副本数据一致,当Leader副本不可用时,其中一个跟随者副本将成为新Leader。

大数据学习:Kafka副本机制详解

二、ISR机制

每个分区都有一个ISR(in-sync Replica)列表,用于维护所有同步的、可用的副本。Leader副本必然是同步副本,而对于跟随者副本来说,它需要满足以下条件才能被认为是同步副本:

与Zookeeper之间有一个活跃的会话,即必须定时向Zookeeper发送心跳;

在规定的时间内从Leader副本那里低延迟地获取过消息。

如果副本不满足上面条件的话,就会被从ISR列表中移除,直到满足条件才会被再次加入。

这里给出一个主题创建的示例:

使用--replication-factor指定副本系数为3,创建成功后使用--describe命令可以看到分区0的有0,1,2三个副本,且三个副本都在ISR列表中,其中1为Leader副本。

三、不完全的Leader选举

对于副本机制,在broker级别有一个可选的配置参数unclean.leader.election.enable,默认值为fasle,代表禁止不完全的Leader选举。这是针对当Leader副本挂掉且ISR中没有其他可用副本时,是否允许某个不完全同步的副本成为Leader副本,这可能会导致数据丢失或者数据不一致,在某些对数据一致性要求较高的场景(如金融领域),这可能无法容忍的,所以其默认值为false,如果你能够允许部分数据不一致的话,可以配置为true。

四、最少同步副本

ISR机制的另外一个相关参数是min.insync.replicas,可以在broker或者主题级别进行配置,代表ISR列表中至少要有几个可用副本。这里假设设置为2,那么当可用副本数量小于该值时,就认为整个分区处于不可用状态。此时客户端再向分区写入数据时候就会抛出异常org.apache.kafka.common.errors.NotEnoughReplicasExceptoin:Messages are rejected since there are fewer in-sync replicas than required。

五、发送确认

Kafka在生产者上有一个可选的参数ack,该参数指定了必须要有多少个分区副本收到消息,生产者才会认为消息写入成功:

acks=0:消息发送出去就认为已经成功了,不会等待任何来自服务器的响应;

acks=1:只要集群的Leader节点收到消息,生产者就会收到一个来自服务器成功响应;

acks=all:只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。

关于大数据学习,Kafka副本机制详解,以上就为大家做了详细的介绍了。Kafka的副本机制,很大程度上来说,确保了消息传输的可靠性,面对各种突发故障场景能够很好地应对。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础就业班本月正在招生中,课程大纲及课程视频可联系客服获取!
热点排行
推荐文章
立即申请>>