Kafka的相关知识点有哪些

发布时间:2021-10-26 15:15:35 作者:iii
来源:亿速云 阅读:124

这篇文章主要介绍“Kafka的相关知识点有哪些”,在日常操作中,相信很多人在Kafka的相关知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Kafka的相关知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

讲一讲分布式消息中间件

面试问题:

Kafka的相关知识点有哪些

消息队列

分布式消息是一种通信机制,和 RPC、HTTP、RMI 等不一样,消息中间件采用分布式中间代理的方式进行通信。

如图所示,采用了消息中间件之后,上游业务系统发送消息,先存储在消息中间件,然后由消息中间件将消息分发到对应的业务模块应用(分布式生产者 -  消费者模式)。

这种异步的方式,减少了服务之间的耦合程度。

Kafka的相关知识点有哪些

架构

定义消息中间件:

在系统架构中引用额外的组件,必然提高系统的架构复杂度和运维的难度,那么在系统中使用分布式消息中间件有什么优势呢?

消息中间件在系统中起的作用又是什么呢?

面试时,面试官经常会关心面试者对开源组件的选型能力,这既可以考验面试者知识的广度,也可以考验面试者对某类系统的知识的认识深度,而且也可以看出面试者对系统整体把握和系统架构设计的能力。

开源分布式消息系统有很多,不同的消息系统的特性也不一样,选择怎样的消息系统,不仅需要对各消息系统有一定的了解,也需要对自身系统需求有清晰的认识。

下面是常见的几种分布式消息系统的对比:

Kafka的相关知识点有哪些

消息队列选择

答案关键字:

Kafka 基本概念和架构

面试问题:

Kafka的相关知识点有哪些

架构图

Kafka 架构中的一般概念:

同一消费组中的消费者不会重复消费消息,同样的,不同消费组中的消费者消息消息时互不影响。Kafka 就是通过消费组的方式来实现消息 P2P  模式和广播模式。

同一个主题下不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(Offset)。

Kafka Topic Partitions Layout,如下图:

Kafka的相关知识点有哪些

主题

Kafka 将 Topic 进行分区,分区可以并发读写。

Kafka Consumer Offset,如下图:

Kafka的相关知识点有哪些

Consumer Offset

Kafka的相关知识点有哪些

Zookeeper 架构如下图:

答案关键字:

Kafka 使用

面试问题:

命令行工具

Kafka 的命令行工具在 Kafka 包的 /bin 目录下,主要包括服务和集群管理脚本,配置脚本,信息查看脚本,Topic  脚本,客户端脚本等。

我们通常可以使用kafka-console-consumer.sh和kafka-console-producer.sh脚本来测试 Kafka  生产和消费。

kafka-consumer-groups.sh 可以查看和管理集群中的 Topic,kafka-topics.sh 通常用于查看 Kafka  的消费组情况。

Kafka Producer

Kafka producer 的正常生产逻辑包含以下几个步骤:

Producer 发送消息的过程如下图所示,需要经过拦截器,序列化器和分区器,最终由累加器批量发送至 Broker。

Kafka的相关知识点有哪些

Producer

Kafka Producer 需要以下必要参数:

常见参数:

只对 async 模式起作用,这个参数的调整是数据不丢失和发送效率的 tradeoff,如果对数据丢失不敏感而在乎效率的场景可以考虑设置为  0,这样可以大大提高 producer 发送数据的效率。

有时候我们需要相同类型的消息必须顺序处理,这样我们就必须自定义分配策略,从而将相同类型的数据分配到同一个分区中。

当分区丢失,leader 不可用时 producer 也会主动获取元数据,如果为  0,则每次发送完消息就获取元数据,不推荐。如果为负值,则只有在失败的情况下获取元数据。

Kafka Consumer

Kafka  有消费组的概念,每个消费者只能消费所分配到的分区的消息,每一个分区只能被一个消费组中的一个消费者所消费,所以同一个消费组中消费者的数量如果超过了分区的数量,将会出现有些消费者分配不到消费的分区。

消费组与消费者关系如下图所示:

Kafka的相关知识点有哪些

Consumer Group

Kafka Consumer Client 消费消息通常包含以下步骤:

Kafka的相关知识点有哪些

过程

因为 Kafka 的 Consumer 客户端是线程不安全的,为了保证线程安全,并提升消费性能,可以在 Consumer 端采用类似 Reactor  的线程模型来消费数据。

Kafka的相关知识点有哪些

消费模型

Kafka Consumer 参数:

Kafka Rebalance

Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 Consumer 如何达成一致来分配订阅 Topic  的每个分区。

比如某个 Group 下有 20 个 Consumer,它订阅了一个具有 100 个分区的 Topic。

正常情况下,Kafka 平均会为每个 Consumer 分配 5 个分区。这个分配的过程就叫 Rebalance。

①什么时候 Rebalance?这也是经常被提及的一个问题。

Rebalance 的触发条件有三种:

②如何进行组内分区分配?

Kafka 默认提供了两种分配策略:Range 和 Round-Robin。当然 Kafka  采用了可插拔式的分配策略,你可以创建自己的分配器以实现不同的分配策略。

答案关键字:

高可用和性能

面试问题:

分区与副本

Kafka的相关知识点有哪些

分区副本

在分布式数据系统中,通常使用分区来提高系统的处理能力,通过副本来保证数据的高可用性。

多分区意味着并发处理的能力,这多个副本中,只有一个是 Leader,而其他的都是 Follower 副本。

仅有 Leader 副本可以对外提供服务。多个 Follower 副本通常存放在和 Leader 副本不同的 Broker 中。

通过这样的机制实现了高可用,当某台机器挂掉后,其他 Follower 副本也能迅速“转正”,开始对外提供服务。

①为什么 Follower 副本不提供读服务?

这个问题本质上是对性能和一致性的取舍。试想一下,如果 Follower 副本也对外提供服务那会怎么样呢?

首先,性能是肯定会有所提升的。但同时,会出现一系列问题。类似数据库事务中的幻读,脏读。

比如你现在写入一条数据到 Kafka 主题 a,消费者 b 从主题 a 消费数据,却发现消费不到,因为消费者 b  去读取的那个分区副本中,最新消息还没写入。

而这个时候,另一个消费者 c 却可以消费到最新那条数据,因为它消费了 Leader 副本。

Kafka 通过 WH 和 Offset 的管理来决定 Consumer 可以消费哪些数据,已经当前写入的数据。

Kafka的相关知识点有哪些

Watermark

②只有 Leader 可以对外提供读服务,那如何选举 Leader

Kafka 会将与 Leader 副本保持同步的副本放到 ISR 副本集合中。当然,Leader 副本是一直存在于 ISR  副本集合中的,在某些特殊情况下,ISR 副本中甚至只有 Leader 一个副本。

当 Leader 挂掉时,Kakfa 通过 Zookeeper 感知到这一情况,在 ISR 副本中选取新的副本成为 Leader,对外提供服务。

但这样还有一个问题,前面提到过,有可能 ISR 副本集合中,只有 Leader,当 Leader 副本挂掉后,ISR 集合就为空,这时候怎么办呢?

这时候如果设置 unclean.leader.election.enable 参数为 true,那么 Kafka 会在非同步,也就是不在 ISR  副本集合中的副本中,选取出副本成为 Leader。

③副本的存在就会出现副本同步问题

Kafka 在所有分配的副本 (AR) 中维护一个可用的副本列表 (ISR),Producer 向 Broker 发送消息时会根据 ACK  配置来确定需要等待几个副本已经同步了消息才相应成功。

Broker 内部会 ReplicaManager 服务来管理 Flower 与 Leader 之间的数据同步。

Kafka的相关知识点有哪些

Sync

性能优化:

Partition 并发

一方面,由于不同 Partition 可位于不同机器,因此可以充分利用集群优势,实现机器间的并行处理。

另一方面,由于 Partition 在物理上对应一个文件夹,即使多个 Partition 位于同一个节点,也可通过配置让同一节点上的不同  Partition 置于不同的 disk drive 上,从而实现磁盘间的并行处理,充分发挥多磁盘的优势。

顺序读写

Kafka 每一个 Partition 目录下的文件被平均切割成大小相等(默认一个文件是 500 兆,可以手动去设置)的数据文件。

每一个数据文件都被称为一个段(segment file), 每个 segment 都采用 append 的方式追加数据。

Kafka的相关知识点有哪些

追加数据

答案关键字:

ISR:In-Sync Replicas。Kafka 中特别重要的概念,指代的是 AR 中那些与 Leader 保 持同步的副本集合。

在 AR 中的副本可能不在 ISR 中,但 Leader 副本天然就包含在 ISR 中。关于 ISR,还有一个常见的面试题目是如何判断副本是否应该属于  ISR。

目前的判断依据是:Follower 副本的 LEO 落后 Leader LEO 的时间,是否超过了 Broker 端参数  replica.lag.time.max.ms 值。如果超过了,副本就会被从 ISR 中移除。

一个普通消费者只能“看到”Leader 副本上介于 Log Start Offset 和 HW(不含)之间的  所有消息。水位以上的消息是对消费者不可见的。

到此,关于“Kafka的相关知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. kafka的知识点有哪些呢
  2. JVM相关的知识点有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kafka

上一篇:如何使用Open Suse打印机共享设置

下一篇:Python如何整理乱码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》