`
flylynne
  • 浏览: 373599 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

kafka技术题

 
阅读更多

1.Kafka 的设计时什么样的呢?

Kafka 将消息以 topic 为单位进行归纳

将向 Kafka topic 发布消息的程序成为 producers.

将预订 topics 并消费消息的程序成为 consumer.

Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker.producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息

2.数据传输的事物定义有哪三种?

数据传输的事务定义通常有以下三种级别:

(1)最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输

(2)最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输.

(3)精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被一次而且仅仅被传输一次,这是大家所期望的

3.Kafka 判断一个节点是否还活着有那两个条件?

(1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每个节点的连接

(2)如果节点是个 follower,他必须能及时的同步 leader 的写操作,延时不能太久

4.producer 是否直接将数据发送到 broker 的 leader(主节点)?

producer 直接将数据发送到 broker 的 leader(主节点),不需要在多个节点进行分发,为了帮助 producer 做到这点,所有的 Kafka 节点都可以及时的告知:哪些节点是活动的,目标topic 目标分区的 leader 在哪。这样 producer 就可以直接将消息发送到目的地了

5、Kafa consumer 是否可以消费指定分区消息?

Kafa consumer 消费消息时,向 broker 发出"fetch"请求去消费特定分区的消息,consumer指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer 拥有了 offset 的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的

6、Kafka 消息是采用 Pull 模式,还是 Push 模式?

Kafka 最初考虑的问题是,customer 应该从 brokes 拉取消息还是 brokers 将消息推送到consumer,也就是 pull 还 push。在这方面,Kafka 遵循了一种大部分消息系统共同的传统的设计:producer 将消息推送到 broker,consumer 从 broker 拉取消息一些消息系统比如 Scribe 和 Apache Flume 采用了 push 模式,将消息推送到下游的consumer。这样做有好处也有坏处:由 broker 决定消息推送的速率,对于不同消费速率的consumer 就不太好处理了。消息系统都致力于让 consumer 以最大的速率最快速的消费消息,但不幸的是,push 模式下,当 broker 推送的速率远大于 consumer 消费的速率时,consumer 恐怕就要崩溃了。最终 Kafka 还是选取了传统的 pull 模式

Pull 模式的另外一个好处是 consumer 可以自主决定是否批量的从 broker 拉取数据。Push模式必须在不知道下游 consumer 消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推送。如果为了避免 consumer 崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费。Pull 模式下,consumer 就可以根据自己的消费能力去决定这些策略

Pull 有个缺点是,如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,直到新消息到 t 达。为了避免这点,Kafka 有个参数可以让 consumer 阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发

7.Kafka 存储在硬盘上的消息格式是什么?

消息由一个固定长度的头部和可变长度的字节数组组成。头部包含了一个版本号和 CRC32校验码。

消息长度: 4 bytes (value: 1+4+n)

版本号: 1 byte

CRC 校验码: 4 bytes

具体的消息: n bytes

8.Kafka 高效文件存储设计特点:

(1).Kafka 把 topic 中一个 parition 大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。

(2).通过索引信息可以快速定位 message 和确定 response 的最大大小。

(3).通过 index 元数据全部映射到 memory,可以避免 segment file 的 IO 磁盘操作。

(4).通过索引文件稀疏存储,可以大幅降低 index 文件元数据占用空间大小。

9.Kafka 与传统消息系统之间有三个关键区别

(1).Kafka 持久化日志,这些日志可以被重复读取和无限期保留

(2).Kafka 是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过复制数据提升容错能力和高可用性

(3).Kafka 支持实时的流式处理

10.Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中

副本因子不能大于 Broker 的个数;

第一个分区(编号为 0)的第一个副本放置位置是随机从 brokerList 选择的;

其他分区的第一个副本放置位置相对于第 0 个分区依次往后移。也就是如果我们有 5 个Broker,5 个分区,假设第一个分区放在第四个 Broker 上,那么第二个分区将会放在第五个 Broker 上;第三个分区将会放在第一个 Broker 上;第四个分区将会放在第二个Broker 上,依次类推;

剩余的副本相对于第一个副本放置位置其实是由 nextReplicaShift 决定的,而这个数也是随机产生的

11.Kafka 新建的分区会在哪个目录下创建

在启动 Kafka 集群之前,我们需要配置好 log.dirs 参数,其值是 Kafka 数据的存放目录,这个参数可以配置多个目录,目录之间使用逗号分隔,通常这些目录是分布在不同的磁盘上用于提高读写性能。

当然我们也可以配置 log.dir 参数,含义一样。只需要设置其中一个即可。

如果 log.dirs 参数只配置了一个目录,那么分配到各个 Broker 上的分区肯定只能在这个目录下创建文件夹用于存放数据。

但是如果 log.dirs 参数配置了多个目录,那么 Kafka 会在哪个文件夹中创建分区目录呢?

答案是:Kafka 会在含有分区目录最少的文件夹中创建新的分区目录,分区目录名为 Topic名+分区 ID。注意,是分区文件夹总数最少的目录,而不是磁盘使用量最少的目录!也就是说,如果你给 log.dirs 参数新增了一个新的磁盘,新的分区目录肯定是先在这个新的磁盘上创建直到这个新的磁盘目录拥有的分区目录不是最少为止。

12.partition 的数据如何保存到硬盘

topic 中的多个 partition 以文件夹的形式保存到 broker,每个分区序号从 0 递增,且消息有序Partition 文件下有多个 segment(xxx.index,xxx.log)segment 文件里的 大小和配置文件大小一致可以根据要求修改 默认为 1g如果大小大于 1g 时,会滚动一个新的 segment 并且以上一个 segment 最后一条消息的偏移量命名

13.kafka 的 ack 机制

request.required.acks 有三个值 0 1 -1

0:生产者不会等待 broker 的 ack,这个延迟最低但是存储的保证最弱当 server 挂掉的时候就会丢数据

1:服务端会等待 ack 值 leader 副本确认接收到消息后发送 ack 但是如果 leader 挂掉后他不确保是否复制完成新 leader 也会导致数据丢失-1:同样在 1 的基础上 服务端会等所有的 follower 的副本受到数据后才会受到 leader 发出的 ack,这样数据不会丢失

14.Kafka 的消费者如何消费数据

消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置等到下次消费时,他会接着上次位置继续消费

15.消费者负载均衡策略

一个消费者组中的一个分片对应一个消费者成员,他能保证每个消费者成员都能访问,如果组中成员太多会有空闲的成员

16.数据有序

一个消费者组里它的内部是有序的消费者组与消费者组之间是无序的

17.kafaka 生产数据时数据的分组策略

生产者决定数据产生到集群的哪个 partition 中每一条消息都是以(key,value)格式Key 是由生产者发送数据传入所以生产者(key)决定了数据产生到集群的哪个 partition

分享到:
评论

相关推荐

    kafka常考面试题2024年.zip

    其他说明:本套面试题基于2024年的技术趋势和市场需求,涵盖了Kafka的核心知识点,旨在帮助求职者全面提升自己的技术实力。通过这套面试题的学习,求职者不仅可以更好地应对Kafka相关的面试,还能为未来的工作打下...

    kafka面试题.docx

    Apache Kafka 是一个高性能、分布式的消息中间件,常用于构建实时数据管道和流处理应用。它以其高吞吐量、低延迟、容错性、...它的灵活性、可扩展性和强大的消息处理能力使其成为现代大数据和实时分析场景的首选技术。

    Kafka详细课程讲义

    **第 6 章 Kafka 面试题** 常见面试问题可能包括: 1. Kafka的主要应用场景是什么? 2. Kafka如何保证消息的顺序性? 3. 解释Kafka的ISR(In-Sync Replicas)机制。 4. Kafka的消费模型是什么样的? 5. 如何处理...

    Kafka 面试题.pdf

    Kafka 面试题.pdf Kafka 是一种分布式流处理平台,可以实时地处理大量数据流。下面是对 Kafka 的架构、Producer、Broker、Consumer、Message 等组件的详细解释: Kafka 架构 Kafka 的架构主要由 Producer、Broker...

    Apache Kafka面试题

    ### Apache Kafka 面试题详解 #### 一、Kafka 架构概述 **1.1 生产者(Producer)** - **定义**: 生产者是向Kafka发送消息的客户端。 - **功能**: 发送消息到指定的主题(Topic)。消息会自动路由到相应的分区...

    09_尚硅谷大数据技术之Kafka.doc

    在学习Kafka的过程中,该教程提供丰富的代码示例、实战项目以及面试题解析,覆盖了从基础到高级的全面知识,包括Java新特性的应用、Eclipse和IDEA开发环境的使用,以及深入的技术讲解,如设计模式、JVM内存结构等,...

    Kafka面试题.zip

    Kafka通过批量发送消息、零拷贝技术、磁盘顺序写入以及高效的网络I/O模型等手段,实现了高吞吐量。 7. **Kafka的消费策略有哪些?** - **Earliest**:消费者可以从分区的最早offset开始消费,即使在消费者重新...

    【面试资料】-(机构内训资料)Kafka面试题.zip

    【标题】:“【面试资料】-(机构内训资料)Kafka面试题.zip”提示我们,这份压缩包包含了关于Kafka技术的面试题集,主要针对的是那些希望在IT行业中从事与Kafka相关的职位的求职者。Kafka是Apache软件基金会开发的...

    大数据技术之Kafka教程

    #### 第七章 Kafka面试题 本章将提供一系列与Kafka相关的面试题目,帮助读者准备相关面试,提升技术水平。 通过对以上章节的学习,读者不仅能够掌握Kafka的基本使用方法,还能够深入了解其内部机制,为进一步的...

    20223 Kafka精选面试题50道

    5. **Kafka 技术的重要特性**: - **高吞吐量**:Kafka 能在普通硬件上处理大量数据,支持每秒数千条消息。 - **低延迟**:Kafka 具有毫秒级延迟,适合实时应用需求。 - **容错**:通过副本机制,Kafka 可以抵御...

    Kafka高频面试题系列之二(30道)

    【Kafka面试题详解】 1. **Kafka的高性能特性** Kafka的高效读写得益于其分布式集群架构,允许高并行度。采用分区技术,数据可以分散在多个节点上,提高了读写性能。Kafka使用稀疏索引,允许快速定位到特定消息,...

    Kafka大厂常见面试题

    《Kafka大厂面试题解析》 Kafka作为一款分布式消息中间件,广泛应用于大数据处理、日志聚合、...了解这些核心概念和技术细节,对于理解和应对Kafka相关的面试题至关重要,同时也为实际项目中的应用提供了理论基础。

    5.kafka运维实战视频教程资料-详细课件笔记总结

    快速入门Kafka技术,包括:消息系统介绍、Kafka简介和安装、Kafka集群和常见的面试题总结 课程简介: kafka课程简介 1.消息队列系统简介和常见的消息队列 2.kafka简介和相关架构组成 3.kafka的单机安装和生产者、...

    【BAT必备】kafka面试题

    2020年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spring boot,spring cloud,netty,dubbo,activemq,Java web,jvm,kafka,MongoDB,...

    Kafka高频面试题系列之五(30道).docx

    【Kafka面试题详解】 1. **节点存活判断条件** Kafka通过两个条件来判断一个节点是否还活着: - 节点必须能够与ZooKeeper保持连接,Zookeeper通过心跳机制检测每个节点的连接状态。 - 如果节点是follower,它...

    Kafka 40道面试题和答案.docx

    零拷贝技术(Zero-copy)和批量处理(Batching of Messages)等机制进一步提高了 Kafka 的性能。 总的来说,Kafka 以其高性能、可扩展性和强大的消息处理能力,成为了大数据和实时流处理领域的关键组件。

    大数据基础面试题hadoop,zookeeper,hbase,hive,spark,kafka,flink,clickhouse

    在大数据领域,掌握各种工具和技术是至关重要的。以下是一些关于标题和描述中提及的关键技术的知识点详解: 1. **Hadoop**: Hadoop 是一个开源的分布式计算框架,核心由 HDFS(Hadoop Distributed File System)...

    Kafka 17道面试题和答案.docx

    以下是基于提供的面试题和答案解析的Kafka关键知识点: 1. **主题和分区**: - Kafka 将消息组织成主题(Topic),每个主题可以被划分为多个分区(Partition)。 - 分区有助于实现数据的水平扩展,因为每个分区...

Global site tag (gtag.js) - Google Analytics