MST

星途 面试题库

面试题:消息队列Kafka如何通过副本机制实现高可用性?

在Kafka架构中,介绍副本机制的工作原理,以及它是怎样保障高可用性的,例如分区副本是如何分布和选举的?
29.2万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

副本机制工作原理

  1. 副本分类
    • 领导者副本(Leader Replica):每个分区都有一个领导者副本,它负责处理这个分区的所有读写请求。生产者发送的消息和消费者读取的消息,都直接与领导者副本交互。
    • 追随者副本(Follower Replica):追随者副本不直接处理客户端请求,它们的主要任务是从领导者副本同步数据,保持与领导者副本的数据一致性。
  2. 数据同步
    • 追随者副本通过向领导者副本发送Fetch请求来获取最新的数据。领导者副本会在本地日志中记录消息后,将消息返回给追随者副本。追随者副本接收到消息后,将其追加到自己的日志中。

保障高可用性方式

  1. 分区副本分布
    • Kafka通过副本分配策略来分布分区副本。在创建主题时,可以指定副本因子(即每个分区的副本数量)。Kafka的副本分配策略会尽量将同一个分区的不同副本分布在不同的Broker上。例如,在一个有3个Broker的集群中,如果副本因子为3,那么每个分区的3个副本会分别分布在这3个不同的Broker上。这样做的目的是避免因单个Broker故障而导致整个分区数据丢失,从而提高系统的可用性。
  2. 副本选举
    • 领导者选举:当领导者副本所在的Broker发生故障时,需要从追随者副本中选举出新的领导者。Kafka使用ISR(In - Sync Replicas)机制来进行选举。ISR是一个与领导者副本保持同步的追随者副本集合。只有ISR中的副本才有资格被选举为新的领导者。选举过程由Kafka控制器(Controller)负责协调,它会通知所有Broker进行选举,Broker们会根据ISR中的副本情况投票选出新的领导者。如果ISR中所有副本都不可用,Kafka可以配置选择第一个非同步副本(不在ISR中但存活的副本)作为新的领导者,但这可能会导致数据丢失,因为该副本可能落后于领导者副本很多。通过这种选举机制,Kafka能够在部分Broker故障的情况下,快速恢复分区的读写功能,保障系统的高可用性。