【Kafka 面试题】分布式通讯之Kafka面试题汇总(基础+进阶+高阶)-01

1. Kafka 的用途有哪些?使用场景如何?

1.1 用途

首先Kafka是一个分布式的基于发布/订阅模式的消息队列。而经过不断地迭代升级,Kafka将自己打造成了一个开源的分布式事件流平台

Kafka的应用包括消息队列、日志收集、实时流数据处理、事件溯源、指标收集和监控等。①当用作消息队列时:Kafka 可以用作高吞吐量、低延迟的消息队列系统,支持发布/订阅消息模型,适合需要处理大量实时数据的应用程序。②当作为日志收集应用:Kafka 能够高效地收集、存储和处理日志数据,是分布式日志系统的理想选择。③当应用为实时流数据处理(Real-Time Stream Processing):与流处理框架(如 Apache Storm、Apache Spark、Flink)结合使用,Kafka 可以实时处理流数据,实现实时数据分析和决策。④当使用Kafka进行事件溯源时:Kafka 记录所有事件,支持事件溯源模式,帮助系统恢复状态和追踪历史操作。⑤当用作指标收集和监控时:Kafka 可以收集和传输各种指标数据,用于系统监控和报警。⑥当用做数据集成时:作为数据总线,Kafka 可以在多个数据源之间进行数据集成,帮助企业构建统一的数据平台。

1.2 使用场景

①日志和监控系统: 收集应用程序和系统的日志数据,并通过 Kafka 将其传输到集中式的日志处理和分析系统,如 ELK(Elasticsearch、Logstash、Kibana)栈。实时监控系统指标,通过 Kafka 将监控数据发送到监控平台,如 Prometheus 和 Grafana。

②金融交易系统: 在股票、期货等金融交易系统中,Kafka 用于实时处理交易数据,确保数据的高吞吐量和低延迟。

③电商和在线服务: 在电商平台中,Kafka 用于实时处理用户行为数据、订单数据和库存数据,支持推荐系统和个性化服务。在线服务(如社交媒体、内容推荐)中,Kafka 用于处理用户互动数据,支持实时分析和个性化推荐。

④物联网: 在物联网应用中,Kafka 可以收集和处理来自各种传感器和设备的海量数据,支持实时数据分析和决策。以及实现设备状态监控和故障预警,通过 Kafka 将设备数据传输到监控系统进行分析。

⑤大数据平台: Kafka 与大数据处理框架(如 Hadoop、Spark)集成,用于数据的实时传输和处理,帮助构建大数据分析平台。在数据湖中,Kafka 用于将实时数据流传输到数据湖,实现数据的集中存储和管理。

2. Kafka 中的 ISR、AR 又代表什么?ISR 的伸缩又指什么?

在Kafka中,ISR和AR是两个关键概念,它们与数据的复制和可用性密切相关。

2.1 ISR (In-Sync Replicas)

ISR代表同步副本集合(In-Sync Replicas),是一个分区(Partition)中所有与Leader副本保持同步的副本集合。ISR中的副本都是最新的,并且它们的数据与Leader副本一致。只有在ISR中的副本才能被选为新的Leader。

  • 同步:指的是副本从Leader中获取并确认最新的消息。
  • 可靠性:ISR的存在保证了即使Leader副本失效,也可以从ISR中选择一个副本作为新的Leader,确保数据的高可用性。

2.2 AR (Assigned Replicas)

AR代表分配副本集合(Assigned Replicas)是一个分区中所有被分配的副本集合,包括Leader和Follower副本。AR中的副本可能不完全是同步的。

成员:AR包括所有被分配给该分区的副本,不论它们是否与Leader同步。

2.3 ISR的伸缩

ISR的伸缩是指在运行时ISR集合的动态变化。当Follower副本变得落后于Leader副本(未能在规定的时间内从Leader获取最新的数据)时,它将被从ISR中移除。一旦该副本赶上了Leader,它会重新加入ISR。

伸缩的场景:

  1. 加入ISR:
    当一个Follower副本从Leader副本拉取并确认了最新的消息,且延迟在可接受范围内时,它会被加入ISR。
  2. 移出ISR:
    当一个Follower副本长时间未能从Leader副本拉取最新的消息,或者出现故障导致与Leader失去联系,它会被移出ISR。

ISR的动态变化有助于维持Kafka集群的高可用性和数据一致性。通过维护一个实时同步的副本集合,即使Leader副本失效,也能快速从ISR中选择新的Leader,减少服务中断的时间。

总结

  • ISR(In-Sync Replicas) 是一个分区中与Leader副本保持同步的副本集合,保证数据的一致性和可用性。
  • AR(Assigned Replicas) 是一个分区中所有被分配的副本集合,不论它们是否与Leader同步。
  • ISR的伸缩指的是ISR集合的动态变化,包括副本因未能及时同步而被移出ISR,或者副本同步后重新加入ISR的过程。

3.如何设置kafka的分区和副本数量

3.1 分区数量

  1. 吞吐量需求:分区数越多,Kafka的吞吐量越高,因为每个分区都可以在不同的Broker上独立地进行读写操作。一般建议每个Broker至少有几个分区来充分利用资源。
  2. 并行处理:分区数决定了消费者的并行度。如果有多个消费者组同时消费一个Topic的数据,那么分区数应该大于或等于消费者组的总数。
  3. 负载均衡:分区数应该是Broker数量的倍数,以便于均衡地分配负载。例如,如果有3个Broker,可以考虑设置6、9或12个分区。

3.2 副本数

  1. 数据持久性:副本数越多,数据的持久性和可用性越高。一般建议至少设置3个副本,这样即使一个Broker宕机,数据也不会丢失。
  2. 硬件资源:副本数增加会占用更多的磁盘空间和网络带宽。如果资源有限,可以根据实际情况调整,但不建议少于2个副本。

3.3 综合考虑

  • 吞吐量需求高,且资源充足:分区数可以设置为Broker数量的2到3倍,副本数设置为3。
  • 吞吐量需求中等:分区数设置为Broker数量的1到2倍,副本数设置为2到3。
  • 吞吐量需求低:分区数可以和Broker数量相等,副本数设置为2。

4. .Kafka 中的 HW、LEO、LSO、LW 等分别代表什么?

// TODO

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当面试官问到大数据Kafka面试题,可能会涉及以下几个方面的内容: 1. Kafka的基本概念和特点: - Kafka是一个分布式流处理平台,用于高吞吐量的实时数据传输。 - Kafka采用发布-订阅模式,消息以topic为单位进行发布和订阅。 - Kafka具有高可靠性、可扩展性和持久性等特点。 2. Kafka的架构和组件: - Kafka集群由多个broker组成,每个broker负责存储和处理消息。 - 每个topic可以分为多个分区,每个分区可以在不同的broker上进行复制。 - 生产者将消息发布到指定的topic,消费者从指定的topic订阅消息。 3. Kafka的消息传输和存储: - Kafka使用消息日志的方式存储消息,每个分区都有一个对应的日志文件。 - 生产者将消息追加到分区的日志文件末尾,消费者按照偏移量顺序读取消息。 - Kafka支持消息的持久化存储,并且可以根据配置进行数据的保留和清理。 4. Kafka的高可用和容机制: - Kafka通过副本机制实现高可用性,每个分区可以有多个副本。 - 副本之间通过ISR(In-Sync Replicas)机制保持同步,确保数据的一致性。 - 当某个broker宕机时,Kafka会自动将其上的分区副本迁移到其他可用的broker上。 5. Kafka的性能调优和监控: - 可以通过调整Kafka的参数来提高性能,如调整分区数、批量发送消息等。 - 监控Kafka集群的健康状态,包括吞吐量、延迟、存储空间等指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boy快快长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值