面试题答案
一键面试- 副本机制:
- Kafka通过多副本机制来保障数据一致性。每个分区都有多个副本,其中一个是领导者(Leader)副本,其余是追随者(Follower)副本。在动态扩展增加新Broker节点时,Kafka会根据副本分配策略,将部分副本分配到新的Broker上。
- 生产者发送数据到Leader副本,Follower副本会从Leader副本同步数据。当增加新Broker节点后,新加入的副本会从Leader副本开始追赶同步数据,从而保证所有副本数据的一致性。
- ISR(In - Sync Replicas)机制:
- ISR是指与Leader副本保持同步的Follower副本集合。只有ISR中的副本才被认为是“同步”的,当Leader副本发生故障时,Kafka会从ISR中选举新的Leader。
- 在动态扩展过程中,新加入的Broker节点上的副本如果要进入ISR,需要快速追赶并与Leader副本同步数据。只有成功同步并满足一定条件(如消息滞后不超过一定时间或偏移量差距不超过一定阈值),才能进入ISR。这确保了即使在动态扩展引入新副本的情况下,数据的一致性仍然由ISR机制来保障,新副本只有达到“同步”状态才能参与后续的Leader选举等重要操作。
- 副本分配策略:
- Kafka有合理的副本分配策略,在动态扩展增加新Broker节点时,Kafka会尽量均匀地将副本分配到各个Broker上。这有助于避免数据热点问题,使得每个Broker上的负载相对均衡,进而保障数据的一致性。例如,在Kafka 2.0之后引入的改进的副本分配算法,它会综合考虑节点的负载、机架感知等因素,在增加新节点时重新平衡副本分布,确保每个副本的同步过程能够平稳进行,不会因为某个节点负载过重而影响数据一致性。
- Controller机制:
- Kafka的Controller负责管理集群的元数据,包括分区和副本的状态等。当增加新Broker节点时,Controller会协调副本的重新分配等操作。
- Controller会向相关Broker发送指令,告知它们新的副本分配情况,确保各个Broker能够按照正确的配置进行副本同步和数据管理。例如,Controller会通知新加入的Broker拉取数据以同步副本,同时通知其他Broker将新副本纳入相关的管理流程(如ISR管理),从而保障整个动态扩展过程中数据一致性的维护。