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

发布于:2024-06-26 ⋅ 阅读:(43) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到