Java高频面试题- 每日三连问?【Day34】 — Kafka篇(二)

2022-04-12 14:22:49 浏览数 (1)

问题导读

一、Kafka 的多副本机制了解吗?

二、Kafka 的多分区(Partition)以及多副本(Replica)机制有什么好处呢?

三、Zookeeper 在 Kafka 中的作用知道吗?

01

Kafka 的多副本机制了解吗?

正经回答:

Kafka 为分区(Partition)引入了多副本(Replica)机制。

分区(Partition)中的多个副本之间会有一个叫做 leader 的家伙,其他副本称为 follower。

我们发送的消息会被发送到leader 副本,然后 follower 副本才能从 leader 副本中拉取消息进行同步。

生产者和消费者只与 leader 副本交互。

你可以理解为其他副本只是 leader 副本的拷贝,它们的存在只是为了保证消息存储的安全性。

当 leader 副本发生故障时会从 follower 中选举出一个 leader,但是 follower 中如果有和 leader 同步程度达不到要求的参加不了 leader 的竞选。

分享朋友圈,记录学习每一天~

02

Kafka 的多分区(Partition)

以及多副本(Replica)机制有什么好处呢?

正经回答:

 Kafka 通过给特定 Topic 指定多个 Partition, 而各个 Partition 可以分布在不同的 Broker上, 这样便能提供比较好的并发能力(负载均衡)。

 Partition 可以指定对应的 Replica 数, 这也极大地提高了消息存储的安全性, 提高了容灾能力,不过也相应的增加了所需要的存储空间。

03

Zookeeper 在 Kafka 中的作用知道吗?

正经回答:

 Broker 注册 :

在 Zookeeper 上会有一个专门用来进行 Broker 服务器列表记录的节点。

每个 Broker 在启动时,都会到 Zookeeper 上进行注册,即到 /brokers/ids 下创建属于自己的节点。

每个 Broker 就会将自己的 IP 地址和端口等信息记录到该节点中去。

 Topic 注册 :

在 Kafka 中,同一个 Topic 的消息会被分成多个分区并将其分布在多个Broker 上,这些分区信息及与 Broker 的对应关系也都是由 Zookeeper 在维护。

比如我创建了一个名字为 my-topic 的主题并且它有两个分区,对应到 zookeeper 中会创建这些文件夹:

/brokers/topics/my-topic/Partitions/0、

/brokers/topics/my-topic/Partitions/1

 负载均衡 :

上面也说过了 Kafka 通过给特定 Topic 指定多个 Partition, 而各个 Partition可以分布在不同的 Broker 上, 这样便能提供比较好的并发能力。

对于同一个 Topic 的不同 Partition,Kafka 会尽力将这些 Partition 分布到不同的 Broker 服务器上。

当生产者产生消息后也会尽量投递到不同 Broker 的 Partition 里面。

当 Consumer 消费的时候,Zookeeper 可以根据当前的 Partition 数量以及 Consumer 数量来实现动态负载均衡。

- End -

0 人点赞