《面试八股文》之 Kafka 21卷

本文详细探讨了Kafka作为消息中间件的角色,包括其架构、副本管理、负载均衡、可靠性保证以及消息消费方式。解释了Kafka如何通过分区和副本策略实现高吞吐、低延迟,并分析了可能导致消息丢失的场景。同时,文章介绍了Kafka在实现负载均衡、副本选举以及消费者与topic分区分配策略上的特点和挑战。
摘要由CSDN通过智能技术生成


  • 1.什么是消息中间件?

  • 2.kafka 是什么?有什么作用?

  • 3.kafka 的架构是怎么样的?

  • 4.Kafka Replicas是怎么管理的?

  • 5.如何确定当前能读到哪一条消息?

  • 6.生产者发送消息有哪些模式?

  • 7.发送消息的分区策略有哪些?

  • 8.Kafka 支持读写分离吗?为什么?

  • 9.那 Kafka 是怎么去实现负载均衡的?

  • 10.Kafka 的负责均衡会有什么问题呢?

  • 11.Kafka 的可靠性是怎么保证的?

  • 12.Kafka 的消息消费方式有哪些?

  • 13.分区再分配是做什么的?解决了什么问题?

  • 14.副本 leader 是怎么选举的?

  • 15.分区数越多越好吗?吞吐量就会越高吗?

  • 16.如何增强消费者的消费能力?

  • 17.消费者与 topic 的分区分配策略有哪些?

  • 18.kafka 控制器是什么?有什么作用

  • 19.kafka 控制器是怎么进行选举的?

  • 20.kafka 为什么这么快?

  • 21.什么情况下 kafka 会丢失消息?

1.什么是消息中间件?

消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

2.kafka 是什么?有什么作用?

Kafka 是一个分布式的流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用

主要功能体现于三点:

  • 消息系统:kafka与传统的消息中间件都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,kafka还提供了大多数消息系统难以实现的消息顺序性保障及回溯性消费的功能。

  • 存储系统:kafka把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效的降低了消息丢失的风险。这得益于其消息持久化和多副本机制。也可以将kafka作为长期的存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题日志压缩功能。

  • 流式处理平台:kafka为流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理框架,比如窗口、连接、变换和聚合等各类操作。

3.kafka 的架构是怎么样的?

一个典型的 kafka 体系架构包括若干 Producer、若干 Consumer、以及一个 Zookeeper 集群(在2.8.0版本中移,除了 Zookeeper,通过 KRaft 进行自己的集群管理)

Producer 将消息发送到 Broker,Broker 负责将受到的消息存储到磁盘中,而 Consumer 负责从 Broker 订阅并消费消息。

Kafka 基本概念:

  • Producer :生产者,负责将消息发送到 Broker

  • Consumer :消费者,从 Broker 接收消息

  • Consumer Group :消费者组,由多个 Consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

  • Broker :可以看做一个独立的 Kafka 服务节点或 Kafka 服务实例。如果一台服务器上只部署了一个 Kafka 实例,那么我们也可以将 Broker 看做一台 Kafka 服务器。

  • Topic :一个逻辑上的概念,包含很多 Partition,同一个 Topic 下的 Partiton 的消息内容是不相同的

  • Partition :为了实现扩展性,一个非常大的 topic 可以分布到多个 broker 上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。

  • Replica :副本,同一分区的不同副本保存的是相同的消息,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower。

  • Leader :每个分区的多个副本中的"主副本",生产者以及消费者只与 Leader 交互

  • Follower :每个分区的多个副本中的"从副本",负责实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,从 Follower 副本中重新选举新的 Leader 副本对外提供服务。

4.Kafka Replicas是怎么管理的?

  • AR:分区中的所有 Replica 统称为 AR

  • ISR:所有与 Leader 副本保持一定程度同步的Replica(包括 Leader 副本在内)组成 ISR

  • OSR:与 Leader 副本同步滞后过多的 Replica 组成了 OSR

Leader 负责维护和跟踪 ISR 集合中所有 Follower 副本的滞后状态,当 Follower 副本落后过多时,就会将其放入 OSR 集合,当 Follower 副本追上了 Leader 的进度时,就会将其放入 ISR 集合。

默认情况下,只有 ISR 中的副本才有资格晋升为 Leader

5.如何确定当前能读到哪一条消息?

分区相当于一个日志文件,我们先简单介绍几个概念

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值