2023年最新kafka常见面试题

这篇具有很好参考价值的文章主要介绍了2023年最新kafka常见面试题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023年最新kafka常见面试题

Kafka的设计时什么样的呢?

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

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

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

  • Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.

  • producers通过网络将消息发送到Kafka集群,集群向消费者提供消息

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

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

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

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

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

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

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

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

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

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

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

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

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阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发

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

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

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

  • 版本号: 1 byte

  • CRC校验码: 4 bytes

  • 具体的消息: n bytes

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

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

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

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

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

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

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

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

  • Kafka 支持实时的流式处理

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

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

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

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

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

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

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

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

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

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

partition的数据如何保存到硬盘

  • topic中的多个partition以文件夹的形式保存到broker,每个分区序号从0递增,且消息有序

  • Partition文件下有多个segment(xxx.index,xxx.log)

  • segment 文件里的 大小和配置文件大小一致可以根据要求修改 默认为1g

  • 如果大小大于1g时,会滚动一个新的segment并且以上一个segment最后一条消息的偏移量命名

kafka的ack机制

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

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

  • 1:服务端会等待ack值 leader副本确认接收到消息后发送ack但是如果leader挂掉后他不确保是否复制完成新leader也会导致数据丢失

  • -1:同样在1的基础上 服务端会等所有的follower的副本受到数据后才会受到leader发出的ack,这样数据不会丢失

Kafka的消费者如何消费数据

  • 消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置

  • 等到下次消费时,他会接着上次位置继续消费

消费者负载均衡策略

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

数据有序

  • 一个消费者组里它的内部是有序的

  • 消费者组与消费者组之间是无序的

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

  • 生产者决定数据产生到集群的哪个partition中

  • 每一条消息都是以(key,value)格式

  • Key是由生产者发送数据传入

  • 所以生产者(key)决定了数据产生到集群的哪个partition文章来源地址https://www.toymoban.com/news/detail-616512.html

到了这里,关于2023年最新kafka常见面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java面试:技巧与实践

    Java面试:技巧与实践 在当今的IT行业中,Java已经成为了一种非常流行的编程语言。它以其跨平台、面向对象、安全性高等特点,吸引了无数的开发人员。然而,掌握Java并不是一件容易的事情,尤其是在面试过程中。本文将为您提供一些关于Java面试的技巧和实践经验,帮助您

    2024年02月15日
    浏览(39)
  • Spring常见面试题55道(附答案2023最新版)

    Spring框架是一个开源的Java平台,它最初由Rod Johnson创建,并在2003年首次公布。它的主要功能是简化Java开发,特别是企业级应用程序的开发。Spring框架的设计哲学是通过提供一系列模块化的组件,帮助开发者创建高性能、易测试、可重用的代码。现在,让我们更深入地了解S

    2023年04月22日
    浏览(80)
  • Java程序员必备的面试技巧与高频面试题,内有面经

    作为一名Java程序员,面对职业生涯中不可避免的面试环节时,准备全面且具有针对性的面试技巧是非常关键的。 以下是根据我的面试百场总结的一些建议和技巧,我将从“面试经历”和“面试技巧”两个方面来帮助你更好地准备Java技术面试。 文章目录 Q1 - 能否自我介绍一下

    2024年02月02日
    浏览(66)
  • java工程师面试技巧和方法,这份Github标星50K,相关资料参考

    Dubbo 为什么要用 Dubbo? Dubbo 的整体架构设计有哪些分层? 默认使用的是什么通信框架,还有别的选择吗? 服务调用是阻塞的吗? 一般使用什么注册中心?还有别的选择吗? 默认使用什么序列化框架,你知道的还有哪些? 服务提供者能实现失效提出是什么原理? 服务上线怎么

    2024年04月16日
    浏览(53)
  • java面试常问,zookeeper常见面试题

    什么是 Spring Boot? 为什么要用 Spring Boot? Spring Boot 的核心配置文件有哪几个?它们的区别是什么? Spring Boot 的配置文件有哪几种格式?它们有什么区别? Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 开启 Spring Boot 特性有哪几种方式? Spring Boot 需要独立的容器

    2024年03月15日
    浏览(63)
  • 程序员必备的面试技巧

    “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!” 提醒:在发布作品前,请

    2024年01月21日
    浏览(51)
  • Python面试:技巧与实践

    Python面试:技巧与实践 在当今的IT行业中,Python已经成为了一种非常流行的编程语言。它以其简洁明了的语法、强大的库支持和广泛的应用领域,吸引了无数的开发人员。然而,掌握Python并不是一件容易的事情,尤其是在面试过程中。本文将为您提供一些关于Python面试的技巧

    2024年02月15日
    浏览(41)
  • 面试求职-简历编写技巧

    试问一下:如果一个非常牛逼的软件工程的硕士,投递市场营销岗位,结果会是什么样呢? 这位同学大概率没办法通过简历。 不是因为他不够优秀,而是因为简历和岗位不够匹配。 在公司的招聘系统中,不仅仅是考察专业水平(即技能),还要考察一个人的价值观、性格、

    2024年02月09日
    浏览(38)
  • 春招秋招,求职应聘的面试技巧

    每年的春秋两季,都是热的招聘季,很多人都参加了多场招聘会。在招聘会中,我们会了解到很多事情,我们会将所有的问题解决出来,知道自己应该做什么,不应该做什么。其实,想要从面试中脱颖而出也没有那么困难,只需要掌握以下几种技巧即可。   1、主动向面试官

    2024年01月24日
    浏览(34)
  • C++程序员必备的面试技巧

      “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!” 在准备C++程序员面试时

    2024年02月01日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包