美文网首页程序员
Kafka副本机制

Kafka副本机制

作者: 我可能是个假开发 | 来源:发表于2023-01-27 20:31 被阅读0次

一、副本基本信息

1.定义

Kafka 是有主题概念的,而每个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的,每个分区配置有若干个副本。
副本本质就是一个只能追加写消息的提交日志。
根据 Kafka 副本机制的定义,同一个分区下的所有副本保存有相同的消息序列,这些副本分散保存在不同的 Broker 上,从而能够对抗部分 Broker 宕机带来的数据不可用。

  • Kafka 默认副本 1 个,生产环境一般配置为 2 个,保证数据可靠性;太多副本会增加磁盘存储空间,增加网络上数据传输,降低效率。
  • Kafka 中副本分为: Leader 和 Follower。 Kafka 生产者只会把数据发往 Leader,然后 Follower 找 Leader 进行同步数据

AR:Kafka 分区中的所有副本统称为 AR(Assigned Repllicas)

ISR:表示和 Leader 保持同步的 Follower 集合。 如果 Follower 长时间未向 Leader 发送通信请求或同步数据,则该 Follower 将被踢出 ISR。
该时间阈值由 replica.lag.time.max.ms参数设定,默认 30s。 Leader 发生故障之后,就会从 ISR 中选举新的 Leader。

OSR:表示 Follower 与 Leader 副本同步时,延迟过多的副本

AR = ISR + OSR

2.作用

提高数据可靠性

3 台 Broker 的 Kafka 集群上的副本分布情况:


副本.png

主题 1 分区 0 的 3 个副本分散在 3 台 Broker 上,其他主题分区的副本也都散落在不同的 Broker 上,从而实现数据冗余。

二、Leader 选举流程

Kafka 集群中有一个 broker 的 Controller 会被选举为 Controller Leader,负责管理集群broker 的上下线,所有 topic 的分区副本分配和 Leader 选举等工作。
Controller 的信息同步工作是依赖于 Zookeeper 的。

Kafka工作流程.png

1.选举流程

  • 1.Broker启动后在ZK中注册
  • 2.每个broker中的controller,谁现在zk中注册成功,谁就成为决定leader选举的controller
  • 3.成功在zk中注册的controller监听brokers节点的变化
  • 4.controller选举leader,每个分区的leader都不同
  • 5.controller将节点的信息上传到zk
  • 6.其他controller从zk同步相关信息(如果某一个controller宕机,随时成为leader)
  • 7.如果broker1的leader宕机,controller监听到了节点的变化,从zk中重新获取获取isr,重新选举出新的leader
  • 8.更新zk中的Leader及isr

2.选举规则

在isr中存活为前提,按照AR中排在前面的优先。例如ar[1,0,2], isr [2,0,1],那么leader就会按照1, 0, 2的顺序轮询

3.示例

hadoop102:brokerId=0
hadoop103:brokerId=1
hadoop104:brokerId=2
hadoop105:brokerId=3

(1) 创建一个新的 topic, 4 个分区, 4 个副本

[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server
hadoop102:9092 --create --topic myTopic --partitions 4 --replication-factor 4
Created topic myTopic.

(2) 查看 Leader 分布情况

[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic myTopic
Topic: myTopic TopicId: awpgX_7WR-OX3Vl6HE8sVg PartitionCount: 4 ReplicationFactor: 4
Configs: segment.bytes=1073741824
Topic: myTopic Partition: 0 Leader: 3 Replicas: 3,0,2,1 Isr: 3,0,2,1
Topic: myTopic Partition: 1 Leader: 1 Replicas: 1,2,3,0 Isr: 1,2,3,0
Topic: myTopic Partition: 2 Leader: 0 Replicas: 0,3,1,2 Isr: 0,3,1,2
Topic: myTopic Partition: 3 Leader: 2 Replicas: 2,1,0,3 Isr: 2,1,0,3

(3) 停止掉 hadoop105 的 kafka 进程,并查看 Leader 分区情况

[hadoop105 kafka]$ bin/kafka-server-stop.sh
[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic myTopic
Topic: myTopic TopicId: awpgX_7WR-OX3Vl6HE8sVg PartitionCount: 4 ReplicationFactor: 4
Configs: segment.bytes=1073741824
Topic: myTopic Partition: 0 Leader: 0 Replicas: 3,0,2,1 Isr: 0,2,1
Topic: myTopic Partition: 1 Leader: 1 Replicas: 1,2,3,0 Isr: 1,2,0
Topic: myTopic Partition: 2 Leader: 0 Replicas: 0,3,1,2 Isr: 0,1,2
Topic: myTopic Partition: 3 Leader: 2 Replicas: 2,1,0,3 Isr: 2,1,0

(4) 停止掉 hadoop104 的 kafka 进程,并查看 Leader 分区情况

[hadoop104 kafka]$ bin/kafka-server-stop.sh
[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic myTopic
Topic: myTopic TopicId: awpgX_7WR-OX3Vl6HE8sVg PartitionCount: 4 ReplicationFactor: 4
Configs: segment.bytes=1073741824
Topic: myTopic Partition: 0 Leader: 0 Replicas: 3,0,2,1 Isr: 0,1
Topic: myTopic Partition: 1 Leader: 1 Replicas: 1,2,3,0 Isr: 1,0
Topic: myTopic Partition: 2 Leader: 0 Replicas: 0,3,1,2 Isr: 0,1
Topic: myTopic Partition: 3 Leader: 1 Replicas: 2,1,0,3 Isr: 1,0

(5) 启动 hadoop105 的 kafka 进程,并查看 Leader 分区情况

[hadoop105 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic myTopic
Topic: myTopic TopicId: awpgX_7WR-OX3Vl6HE8sVg PartitionCount: 4 ReplicationFactor: 4
Configs: segment.bytes=1073741824
Topic: myTopic Partition: 0 Leader: 0 Replicas: 3,0,2,1 Isr: 0,1,3
Topic: myTopic Partition: 1 Leader: 1 Replicas: 1,2,3,0 Isr: 1,0,3
Topic: myTopic Partition: 2 Leader: 0 Replicas: 0,3,1,2 Isr: 0,1,3
Topic: myTopic Partition: 3 Leader: 1 Replicas: 2,1,0,3 Isr: 1,0,3

(6) 启动 hadoop104 的 kafka 进程,并查看 Leader 分区情况

[hadoop104 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic myTopic
Topic: myTopic TopicId: awpgX_7WR-OX3Vl6HE8sVg PartitionCount: 4 ReplicationFactor: 4
Configs: segment.bytes=1073741824
Topic: myTopic Partition: 0 Leader: 0 Replicas: 3,0,2,1 Isr: 0,1,3,2
Topic: myTopic Partition: 1 Leader: 1 Replicas: 1,2,3,0 Isr: 1,0,3,2
Topic: myTopic Partition: 2 Leader: 0 Replicas: 0,3,1,2 Isr: 0,1,3,2
Topic: myTopic Partition: 3 Leader: 1 Replicas: 2,1,0,3 Isr: 1,0,3,2

(7) 停止掉 hadoop103 的 kafka 进程,并查看 Leader 分区情况

[hadoop103 kafka]$ bin/kafka-server-stop.sh
[hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic myTopic
Topic: myTopic TopicId: awpgX_7WR-OX3Vl6HE8sVg PartitionCount: 4 ReplicationFactor: 4
Configs: segment.bytes=1073741824
Topic: myTopic Partition: 0 Leader: 0 Replicas: 3,0,2,1 Isr: 0,3,2
Topic: myTopic Partition: 1 Leader: 2 Replicas: 1,2,3,0 Isr: 0,3,2
Topic: myTopic Partition: 2 Leader: 0 Replicas: 0,3,1,2 Isr: 0,3,2
Topic: myTopic Partition: 3 Leader: 2 Replicas: 2,1,0,3 Isr: 0,3,2

极客时间《Kafka 核心技术与实战》学习笔记Day13 - http://gk.link/a/11UOV

相关文章

  • Kafka

    参考 Kafka中文 图解 Kafka 水印备份机制 Kafka ISR 副本同步机制 关于 Kafka 的一些面...

  • Kafka可靠性保证

    多副本机制 Kafka为分区引入了多副本(Replica) 机制, 通过增加副本数量可以提升容灾能力。副本之间是“...

  • Kafka系列四-副本同步机制

    Kafka系列四-副本同步机制# Kafka副本 Kafka中主题的每个Partition有一个预写式日志文件,每...

  • kafka分区机制和多副本机制

    多副本机制 Kafka 为分区引入了多副本(Replica)机制,通过增加副本数量可以提升容灾能力。备份的思想,就...

  • 《Kafka》副本复制机制

    1. 实现原理 Kafka主题中的每个分区都有一个预写日志(write-ahead log),我们写入Kafka的...

  • kafka 副本机制

    定义(definition) 副本是在topic分区这个层级上定义的,它是只能追加写消息的日志 (AOF) 角...

  • Kafka副本机制

    一、副本基本信息 1.定义 Kafka 是有主题概念的,而每个主题又进一步划分成若干个分区。副本的概念实际上是在分...

  • Kafak原理

    Apache kafka原理 1 分片与副本机制 : 此处的分片指的是对topic中数据进行分片和建立副本, 一个...

  • kafka学习笔记-深入kafka内核

    参考:极客时间-Kafka核心技术与实战内容:kafka副本机制、消费者重平衡、kafka控制器、消息可见性(高水...

  • 深入浅出解读 Kafka 的可靠性机制

    1. 副本机制 在分布式系统中,为了提高可靠性,最常用、最有效的策略是“副本机制”,Kafka 也不例外。Kafk...

网友评论

    本文标题:Kafka副本机制

    本文链接:https://www.haomeiwen.com/subject/htorhdtx.html