-
Kafka中的HW、LEO、LSO、LW等分别代表什么
参考答案 1. HW 是High Watermak的缩写,俗称高水位。 它表示了一个特定消息的偏移量(offset),消费之只能拉取到这个offset之前的消息。 2. LEO 是Log End Offset的缩写。 它表示了当前日志文件中下一条待写入消息的offset。 3. LSO 特指LastStableOffset。 它具体与kafka的事物有关。 消费端参数——isolation.…...- 382
-
Kafka 高效文件存储设计特点
参考答案 Kafka 把 topic 中一个 parition 大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。 通过索引信息,可以快速定位 message ,确定 response 的最大大小。 通过 index 元数据,全部映射到 memory,可以避免 segment file 的 IO 磁盘操作。 通过索引文件稀疏存储,可以大幅降低 index …...- 200
-
Kafka的分区数是不是越多越好
参考答案 1. 分区多的优点 Kafka使用分区将topic的消息打算到多个分区分布保存在不同的broker上,实现了producer和consumer消息处理的高吞吐量。 Kafka的producer和consumer都可以多线程地并行操作,而每个线程处理的是一个分区的数据。因此,分区实际上是调优Kafka并行度的最小单元。 对于producer,它实际上是用多个线程并发地向不同分区所在的br…...- 187
-
Kafka 消息是采用 Pull 模式,还是 Push 模式
参考答案 Kafka 遵循了一种大部分消息系统共同的传统的设计:producer 将消息推送到 broker,consumer 从 broker 拉取消息。 有一些消息系统,例如Scribe 和 Apache Flume 采用了 push 模式,将消息推送到下游的consumer。 这样操作有利有弊: 由 broker 决定消息推送的速率,对不同消费速率的consumer 不太好处理。 消息系统都…...- 175
-
Kafka中的分区器、序列化器、拦截器的处理顺序是什么
参考答案 处理顺序:拦截器 -> 序列化器 -> 分区器。 Producer拦截器(interceptor)是在 Kafka 0.10 版本被引入的,主要用于实现 clients 端的定制化控制逻辑。Producer 允许用户指定多个interceptor按序作用于同一条消息,从而形成一个拦截链(interceptor chain)。 Intercetpor的实现接口是org.apac…...- 121
-
数据传输的事物定义有哪三种
参考答案 数据传输的事务定义,通常有以下三种级别: 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输。 最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输。 精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被一次,而且仅仅被传输一次。 以上,是 Kafka 面试题【数据传输的事物定义有哪三种】的参考答案。 输出,是最好的学习方法…...- 116
-
Kafka producer如何优化打入速度
参考答案 增加线程 提高 batch.size 增加更多 producer 实例 增加 partition 数 设置 acks=-1 时,如果延迟增大:可以增大 num.replica.fetchers(follower 同步数据的线程数)来调解 跨数据中心的传输:增加 socket 缓冲区设置以及 OS tcp 缓冲区设置 以上,是 Kafka 面试题【Kafka producer如何优化打入速…...- 111
-
Kafka中 consumer group 是什么
参考答案 Kafka中 consumer group 同样是逻辑上的概念,是 Kafka 实现单播和广播两种消息模型的手段。 同一个topic的数据,会广播给不同的group;同一个group中的worker,只有一个worker能拿到这个数据。即: 对于同一个topic,每个group都可以拿到同样的所有数据。 但是,数据进入group后,只能被其中的一个worker消费。 group 内的 w…...- 111
-
Kafka与传统MQ消息系统的主要区别
参考答案 Kafka 持久化日志,这些日志可以被重复读取和无限期保留。 Kafka 是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过复制数据提升容错能力和高可用性。 Kafka 支持实时的流式处理。 以上,是 Kafka 面试题【Kafka与传统MQ消息系统的主要区别】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---...- 102
-
Consumer消费Parition的分配策略
参考答案 Kafka 提供的两种分配策略: range 和 roundrobin ,由参数 partition.assignment.strategy 指定,默认是 range 策略。 当以下事件发生时,Kafka 将会进行一次分区分配: 同一个 Consumer Group 内新增消费者。 消费者离开当前所属的Consumer Group,包括shuts down 或 crashes。 订阅的主…...- 102
-
Kafka 面试路线最全整理(附面试题精选及答案)
Kafka 面试路线最全整理,附 Kafka 高频必考面试题及答案。 搞定 Kafka 面试题,看这一篇就够了,不用四处找资料,节约大量时间。 1 Kafka 面试题及答案 基础 什么是Kafka 为什么要使用 Kafka Kafka 为什么那么快 Kafka 高效文件存储设计特点 Kafka与传统MQ消息系统的主要区别 Kafka的分区数是不是越多越好 创建topic时,如何选择合适的分区…...- 101
-
Kafka 的分区策略有哪些
参考答案 Kafka的分区策略: 给定了分区号,直接将数据发送到指定的分区里面去。 没有给定分区号,给定数据的key值,通过key取上hashCode进行分区。 既没有给定分区号,也没有给定key值,直接轮循进行分区。 自定义分区。 以上,是MQ面试题【Kafka的分区策略有哪些】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---...- 100
-
Kafka unclean配置代表啥,对spark streaming消费有什么影响
参考答案 如果unclean.leader.election.enable 为 true ,意味着非ISR集合的 broker 也可以参与选举,这样有可能发生数据丢失和数据不一致的情况,Kafka 的可靠性就会降低。spark streaming 在消费过程中拿到的 end offset 会突然变小,导致 spark streaming job挂掉。 如果unclean.leader.electi…...- 97
-
Kafka的message格式是什么样的
参考答案 一个 Kafka 的 Message ,是由一个固定长度的 header 和 一个变长的消息体 body 组成的。 header: 由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。 当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic…...- 97
-
Kafka 判断一个节点是否还活着,需要具备哪些条件
参考答案 需要具备以下条件: 节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每个节点的连接。 如果节点是个 follower ,它必须能及时的同步 leader 的写操作,延时不能太久。 以上,是 Kafka 面试题【Kafka 判断一个节点是否还活着,需要具备哪两个条件】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ -…...- 93
-
Kafka 有几种数据保留的策略
参考答案 kafka 有两种数据保存策略: 按照过期时间保留。 按照存储的消息大小保留。 以上,是MQ面试题【Kafka有几种数据保留的策略】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---...- 89
-
Kafka中的消息是否会丢失和重复消费
参考答案 首先,要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费。 1. 消息发送 1.1 Kafka 消息发送有两种方式: 同步(sync) 异步(async) 默认是同步方式,可以通过producer.type属性进行配置。 1.2 Kafka 通过配置 request.required.acks 属性,来确认消息的生产: 0 --- 表示不进行消息接收是否…...- 89
-
Kafka中的 Broker 的作用是什么
参考答案 Broker 是消息的代理。 Producers往 Brokers 里面的指定 Topic 中写消息,Consumers 从 Brokers 里面拉取指定 Topic 的消息,然后进行业务处理。 Broker在中间起到一个代理保存消息的中转站的作用。 以上,是 Kafka 面试题【Kafka中的 Broker 的作用是什么】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题…...- 85
-
Kafka follower 如何与 leader 同步数据
参考答案 Kafka 的复制机制,既不是完全的同步复制,也不是单纯的异步复制。 完全同步复制,要求 All Alive Follower 都复制完,这条消息才会被认为 commit,这种复制方式极大的影响了吞吐率。 异步复制方式,Follower 异步的从Leader复制数据,数据只要被 Leader 写入 log ,就被认为已经 commit ,这种情况下,如果leader挂掉,会丢失数据。 K…...- 78
-
Kafka中是怎么体现消息顺序性的
参考答案 Kafka 每个 partition 中的消息在写入时都是有序的。 消费时,每个partition只能被每一个group中的一个消费者消费,保证了消费时也是有序的。 整个topic不保证有序。 要保证topic整个有序,那么将partition调整为1。 以上,是 Kafka 面试题【Kafka中是怎么体现消息顺序性的】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔…...- 69
-
Kafka 为什么那么快
参考答案 Kafka 快的原因: Cache Filesystem Cache PageCache 缓存。 顺序写:由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。 Zero-copy 零拷技术:减少拷贝次数。 Batching of Messages 批量量处理:合并小的请求,然后以流的方式进行交互,直顶网络上限。 Pull 拉模式:使用拉模式进行消息的获取消费…...- 67
-
Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别
参考答案 Kafka、ActiveMQ、RabbitMQ、RocketMQ 的区别: 1. kafka 开发语言: Scala开发。 性能、吞吐量: 吞吐量所有MQ里最优秀,QPS十万级、性能毫秒级、支持集群部署。 功能: 功能单一。 缺点: 丢数据, 因为数据先写入磁盘缓冲区,未直接落盘。机器故障会造成数据丢失。 应用场景: 适当丢失数据没有关系、吞吐量要求高、不需要太多的高级功能的场景,比如…...- 65
-
Kafka事务的原理
参考答案 Kafka为了支持事务特性,引入一个新的组件:Transaction Coordinator。 Transaction Coordinator 主要负责分配pid,记录事务状态等操作。 下面是Kafka开启一个事务,到提交一个事务的运行流程图: 主要步骤如下: 1. 查找Tranaction Corordinator Producer 向任意一个 brokers 发送 …...- 58
-
Kafka不支持读写分离的原因是什么
参考答案 Kafka不支持读写分离的原因: 在 Kafka 中,生产者写入消息、消费者读取消息的操作,都是与 leader 副本进行交互的,实现的是一种主写主读的生产消费模型。 Kafka 不支持主写从读,主写从读有两个缺点: 1. 数据一致性问题 数据从主节点转到从节点必然会有一个延时的时间窗口,这个时间窗口会导致主从节点之间的数据不一致。 某一时刻,在主节点和从节点中 A 数据的值都为 …...- 57