当前位置: 首页 > article >正文

kafka夺命三十问——16-22问

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

        1、kafka本身是分布式集群,且采用分区技术,并行度高

        2、读取数据使用的是稀疏索引,可以很快定位到需要的数据

        3、数据是顺序写入磁盘的,减少大量的寻址时间。

        4、页缓存和零拷贝技术

                页缓存:类似mysql的缓冲池,kafka是根据底层操作系统中PageCache,尽可能多的将空闲内存当作磁盘的缓冲区,当内存中找不到时,才会去磁盘寻找

                零拷贝技术:在传统的数据拷贝技术中,将数据发送到网络上的时,通常需要多次数据拷贝步骤。Kafka 使用零拷贝技术,通过操作系统支持的 sendfile 系统调用,将数据直接从磁盘读取并发送到网络,绕过了用户空间,降低了 CPU 使用率和内存开销。

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

        首先每个topic中的每一个分区会占用一个文件夹,用于存放数据,kafka中的数据是以segment为单位进行存储的,每个segment最大占用1G,其中segment又分为index(索引)和log(数据)文件。

        但是上面只是逻辑上的存储方式,实质上是没有segment相关的文件夹的,而是含有编号的index和log文件,当其存放的数据在1G左右时,会生成新的index和log文件。

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

        kafka会在index文件中存放一个相对的offset,用文件名来表示该文件从哪个offset开始,

因此,若想找到一个offset,先找到相对应的index文件,然后在该文件中找到相对的offset,其中也同样记录了数据的position值,去log文件中进行对比,即可定位到offset

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

1、删除

        kafka中的数据删除时,是以segment为单位的,当其过期时间达到,即会删除该segment

2、压缩

        并不是真正的压缩,若有两条数据的key值相等,但是value不同,只会保留一个版本。

        类似不同阶段的一条信息,只会保留最新的版本。

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

        每个消费者组中消费者的数量必须小于等于分区数,同一个消费者组中的不同消费者是不能消费同一个分区的。

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

每个broker中都会有一个coordonator,用于辅助消费者组中每一个消费者的分配。

首先,会根据group_id为每一个消费者组分配一个coordonator,然后在消费者组中会出现一个leader,将分配的计划发送给对应的coordonator,最后,coordonator根据该计划制作方案,然后发送给所有的消费者,消费者执行即可。

22、kafka消费者的消费分区策略有哪些,默认是什么?

1、range

2、RoundRobin(轮询)

3、Sticky(粘性)

4、CooperativeSticky(合作的粘性)

默认是range+CooperativeSticky


http://www.kler.cn/a/390575.html

相关文章:

  • NoSQL数据库与关系型数据库的主要区别
  • 深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
  • 同三维T610UDP-4K60 4K60 DP或HDMI或手机信号采集卡
  • 使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件
  • vxe-table 3.10+ 进阶高级用法(一),根据业务需求自定义实现筛选功能
  • const限定符-C语言中指针的“可变与不可变”法则
  • 网络安全:挑战、策略与未来趋势
  • TensorRT基础知识
  • 什么是Stream流?
  • 【模块一】kubernetes容器编排进阶实战之k8s基础概念
  • Java 后端开发框架总结笔记:
  • Python 爬虫运行状态监控:进度、错误与完成情况
  • 智能零售:AI赋能电商行业的全面升级与高效运营
  • Spring Boot实战:编程训练系统开发手册
  • ssm+vue710的线上招聘问答系统的设计与实现
  • 云计算答案
  • 使用ThorUi
  • @SpringBootApplication源码解析
  • 【ComfyUI +BrushNet+PowerPaint】图像修复(根据题词填充目标)——ComfyUI-BrushNet
  • shodan7(泷羽sec)
  • SystemVerilog学习笔记(一):数据类型
  • (C++)验证累加非原子操作以及vector和thread的结合使用(附fitten code插件安装方法,AI插件,帮忙填充代码)
  • Layui layui.treeTable 树表格组件 去除图标展示
  • rust模式和匹配
  • Redis经典面试题-深度剖析
  • Android dagger的使用