首页 > 其他分享 >kafka面试题(二)

kafka面试题(二)

时间:2024-11-11 19:19:57浏览次数:3  
标签:面试题 消费者 分区 Kafka kafka 分配 策略

1、kafka是如何做到高效读写

1)Kafka 本身是分布式集群,可以采用分区技术,并行度高 

2)读数据采用稀疏索引,可以快速定位要消费的数据。(mysql中索引多了之后,写入速度就慢了) 

3)顺序写磁盘

4)页缓存 + 零拷贝技术

2、Kafka集群中数据的存储是按照什么方式存储的?

缓存存储;日志存储

3、kafka中是如何快速定位到一个offset的。

从特定的offset读取消息:客户端会创建一个从该offset开始的消费者,并使用seek(TopicPartition partition, long offset)方法来定位

4、简述kafka中的数据清理策略。

Kafka中的数据清理策略主要有两种:日志保留策略和删除策略

1)日志保留策略:

按照时间保留:通过log.retention.hours或log.retention.minutes配置,Kafka会保留消息在一定的时间内(默认为7天)。

按照大小保留:通过log.retention.bytes配置,Kafka会保留消息直到日志大小超过这个值(默认为-1,即不限制大小)。

2)删除策略:

日志段文件的删除:当一个日志段文件的所有数据都被消费完成后,它会被标记为删除,并在后台进行清理。

清理操作的触发:通过log.cleaner.enable配置,开启清理器可以进行删除操作。

删除策略配置:通过cleanup.policy配置,可以设置为delete或compact,分别代表直接删除或者压缩后删除数据。

5、消费者组和分区数之间的关系是怎样的?

当消费者数量小于分区数量时‌:每个消费者会分配到相应的分区,确保每个分区都被消费。如果消费者数量少于分区数量,未被分配到分区的消费者将处于闲置状态‌。

‌当消费者数量大于分区数量时‌:多余的消费者将不会被分配到任何分区,处于闲置状态。因此,为了充分利用资源,需要确保分区数量与消费者数量相匹配。‌

 6、kafka如何知道哪个消费者消费哪个分区? 

‌Kafka通过分区分配策略来决定哪个消费者消费哪个分区

Kafka的分区分配策略:

‌RangeAssignor(范围分配)‌:这是Kafka的默认分配策略。它根据消费者的数量和主题的分区数量,将分区均匀地分配给每个消费者。例如,如果有10个分区和3个消费者,每个消费者将获得大约3.33个分区‌。

‌RoundRobinAssignor(轮询分配)‌:这种策略将分区顺序分配给消费者,每个消费者依次消费一个分区。这种策略适用于所有消费者消费速率大致相同的情况‌。

‌StickyAssignor(粘性分配)‌:这种策略尽量保持消费者的分区分配不变,除非必要。它试图减少因消费者增减而引起的频繁重新分配‌。

‌CooperativeStickyAssignor(协作粘性分配)‌:这是StickyAssignor的改进版本,它通过协作方式减少重新分配的发生,适用于消费者数量经常变化的情况‌‌

7、kafka消费者的消费分区策略有哪些,默认是哪个?

‌RangeAssignor;‌RoundRobinAssignor;‌StickyAssignor

‌Kafka消费者的默认消费分区策略是RangeAssignor

标签:面试题,消费者,分区,Kafka,kafka,分配,策略
From: https://blog.csdn.net/qq_70299193/article/details/143693201

相关文章

  • kafka监控
    kafka监控部署kafka使用Prometheus、Grafana和kafka_exporter来构建kafka指标监控问题背景在实时场景下,对于数据积压是很常见的,我们更希望如何去快速知道有没有数据积压,目前消费了多少,速度怎么样,趋势如何。可以使用原生命令kafka-consumer-groups.sh--bootstrap-servernode01......
  • 20万字208道Java经典面试题总结(附答案)
    1、JDK和JRE有什么区别?JDK(JavaDevelopmentKit),Java开发工具包JRE(JavaRuntime Environment),Java运行环境JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。2、==和 equals 的区别是什么?对于基本类型,==比较的......
  • 2024年最全java面试题(八股文)
    1.Java基础1.1为什么Java代码可以实现一次编写、到处运行?在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JVM负责将字节码翻译成特定平台下的机器码并运行,也就是说,只要在不同的平台上安装对应的JVM,就可以运行字节码文件。1.2一个Java文件里......
  • LeetCode 面试题16.07[最大数值]
    题目链接LeetCode面试题16.07[最大数值]详情实例题解思路不能用ifelse就用三目表达式三目表达式:条件表达式?符合:不符合 此处条件表达式为a>b符合输出a不符合输出b即a>b?a:b代码classSolution{public:intmaximum(inta,intb){......
  • 一些面试题总结(一)
    1、string为什么是不可变的,有什么好处原因:1、因为String类下的value数组是用final修饰的,final保证了value一旦被初始化,就不可改变其引用。2、此外,value数组的访问权限为private,同时没有提供方法去修改这个数组。3、而且String类是用final修饰的,不可以被继承,进而避免了......
  • Java设计模式面试题及参考答案
    目录什么是单例模式?它的应用场景是什么?如何保证单例模式线程安全?什么是工厂方法模式?如何与简单工厂模式进行比较?抽象工厂模式和工厂方法模式有什么区别?请给出实际应用场景。什么是建造者模式?它和工厂模式有什么不同?解释原型模式及其应用。如何通过克隆实现对象的复制?在......
  • Kafka 之自定义消息拦截器【Kafka 拦截器】
    前言:拦截器这个概念相信大部分朋友都不会陌生,SpringMVC拦截器相信大家都用过,拦截器的核心思想就是运行应用程序在不修改业务逻辑的前提下,动态的实现一组可插拔的事件处理器链,它可以在业务链路中的前后各个点进行对应的拦截,做一些统一的处理,SpingMVC的拦截器大家都了解,......
  • Java坑人面试题系列 线程线程池(高级难度)
    ExecutorService接口及相关API细节详解。。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。而“中级(intermediate)”和“......
  • java工作一年面试题_一年java工作经验的面试题总结(持续更新中)
    第一次面试①说下java类的加载②说一下zookeeper的原理③说一下你对dubbo的理解④说一下nio和io的区别⑤说一下并发锁第二次面试①网络的七层协议从底层往上说一下②什么是sql注入③你平时怎么预防的sql注入(答使用PreparedStatement,预编译之后,使用占位符,而不是直......
  • 2024牛客网最新版Java面试题大全带答案 1400多题(限时分享)
    都知道IT行业是高薪人员的聚集地,但想要成为高薪程序员却并不容易。月薪20k是Java程序员的一个门槛,想要突破就必须掌握更多的技能。因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的......