Kafka常见面试问题

1、Kafka分区设计及主副本如何同步

Apache Kafka是一种分布式流处理平台,它使用分布式复制协议来实现高可用性和容错性。在Kafka中,每个主题(topic)都有一个或多个分区(partition),每个分区都有一组副本(replica),其中一个是主副本(leader),其余的是从副本(follower)。主副本负责处理来自消费者的所有读写请求,而从副本则扮演备份的角色,并在主副本出现故障时接管其职责。

主副本同步:

  • Kafka的每个分区都有一个指定的副本,称为"初始副本"(initial replica)。这个初始副本是由Kafka在创建分区时指定的。
  • 当消费者向Kafka发送消息时,消息首先被写入到该分区的初始副本中。
  • 初始副本收到消息后,会将其复制到其他从副本中,实现副本的同步。
  • 当所有的从副本都成功接收并存储了消息后,初始副本会向Kafka发送一个"消息已提交"(message committed)的响应给消费者。

2、Kafka如何选主

  • Kafka使用一种称为"领导者选举"(leader election)的机制来选出每个分区的领导者(主副本)。
  • 在Kafka集群中,每个节点都有一个选举代理(election proxy),它负责参与领导者选举过程。
  • 当一个分区创建时,初始副本被选为该分区的领导者。
  • 如果初始副本失效,选举代理会发现并通知其他存活的副本参与领导者选举。
  • 存活的从副本会投票选举一个新的领导者。获得超过一半票数的副本会被选为新的领导者。
  • 如果所有的从副本都失效,选举代理会重新选出新的初始副本作为领导者。

3、如果有多个broken故障,是会选哪个

Kafka的生产者使用一个负载均衡机制来分配消息到不同的broker。这个负载均衡机制可以基于各种因素,例如每个broker的可用带宽、处理能力、存储容量等。

当生产者向Kafka发送消息时,它会与Kafka的代理服务器(broker)建立连接,并由代理服务器负责将消息路由到正确的分区。代理服务器会根据负载均衡机制选择一个存活的分区,并将消息发送到该分区。如果多个broker出现故障,存活的代理服务器会选择一个存活的分区来处理消息。

因此,生产者并不直接选择发送消息到哪个broker,而是通过Kafka的负载均衡机制来自动分配消息到存活的broker上。这样可以确保消息的可靠性和容错性,并且可以有效地利用Kafka集群的资源。

4、kafka如何保证一致性

Kafka保持一致性的方式有很多,其中包括:

  1. 采用分布式副本集(replica set)来保证数据的一致性。Kafka将消息复制到多个副本中,当一个副本失效时,另一个副本可以接管它的工作,从而保证数据的完整性。
  2. Kafka至少保证消息被传递给消费者一次。生产者写入消息到Kafka时,会等待消息被持久化并复制到ISR(in-sync replica)中的副本,并返回一个确认(ack)给生产者。只有当所有ISR中的副本都完成了消息的复制后,消息才被认为是提交成功的,生产者才会收到确认。这样可以确保消息的可靠性,但也可能出现消息重复传递的情况。
  3. 消费者的消费位置(consumer offset)由消费者在消费消息时记录,并提交到Kafka,以便在重启或故障恢复后继续消费。Kafka会将消息的偏移量持久化,保证在故障发生时可以对未消费的消息进行重播。
相关推荐
shinelord明2 分钟前
【大数据技术实战】Kafka 认证机制全解析
大数据·数据结构·分布式·架构·kafka
BUTCHER53 小时前
Kafka多网卡环境配置
分布式·kafka
怪兽20144 小时前
请例举 Android 中常用布局类型,并简述其用法以及排版效率
android·面试
鸿蒙小白龙4 小时前
openharmony之分布式蓝牙实现多功能场景设备协同实战
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
南一Nanyi5 小时前
才知道 DNS 还能基于 HTTPS 实现!
网络协议·安全·面试
xxxxxxllllllshi5 小时前
Java中Elasticsearch完全指南:从零基础到实战应用
java·开发语言·elasticsearch·面试·职场和发展·jenkins
鸿蒙小白龙6 小时前
openharmony之分布式购物车开发实战
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
小蜗牛编程实录6 小时前
一文搞懂分布式事务:从理论到实践方案
分布式·后端
鸿蒙小白龙6 小时前
openharmony之分布式相机开发:预览\拍照\编辑\同步\删除\分享教程
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
没有bug.的程序员6 小时前
电商系统分布式架构实战:从单体到微服务的演进之路
java·分布式·微服务·云原生·架构·监控体系·指标采集