Kafka面试宝典
1 Kafka基础面试篇
Kafka的那些设计让它有如此高的性能?
- 1.partition,producer和consumer端的批处理:提高并行度;
- 2.页缓存:大量使用页缓存,内存操作比磁盘操作快很多,数据写入直接写道页缓存,由操作系统负责刷盘,数据读取也是直接命中页缓存,从内存中直接拿到数据;
- 3.零拷贝:如果数据读取命中了页缓存,数据会从页缓存直接发送到网卡进行数据传输,省略了用户态和内核态的切换以及多次的数据拷贝;
- 4.顺序读写:Kafka的数据是顺序追加的,避免了低效率的随机读写;
- 5.优秀的文件存储机制:分区规则设置合理的话,所有消息都可以均匀的分不到不同分区,分区日志还可以分段,相当于举行文件被平均分配为多个相对较小的文件,便于文件维护和清理;
- 索引文件:Kafka含有.index和.timeindex索引,以稀疏索引的方式进行构造,查找时可以根据二分法在索引文件中快速定位到目标数据附近位置,然后再.log文件中顺序读取到目标数据;
Kafka的那些设计让它有如此高的性能:分区,顺序写磁盘,0-copy,稀疏索引利用二分查找找到对应数据,批量文件压缩
-
Kafka的用途有哪些?使用场景如何?
- 异步处理,发送短信
- 应用解耦
- 流量削锋
- 日志处理
- 消息通讯
-
Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么
- ISR :In-Sync Replicas 副本同步队列
- AR :Assigned Replicas 所有副本
- ISR是由leader维护,follower从leader同步数据有一些延迟(包括 延迟时间replica.lag.time.max.ms 和 延迟条数replica.lag.max.message 两个维度,当前最新的版本0.10.x中只支持 replica.lag.time.max.ms 这个维度),任意一个超过阈值都会把follower剔除出ISR,存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。
注:AR = ISR + OSR
-
Kafka中的HW、LEO、LSO、LW等分别代表什么?
- 在Kafka中,HW(High Watermark)表示消费者可见的最高偏移量,
- LEO(Log End Offset)表示当前分区的最高偏移量,
- LSO(Log Start Offset)表示当前分区的最低偏移量,
- LW(Log Write Offset)表示当前分区的写入偏移量。
- HW是消费者的偏移量上限,消费者只能消费到HW之前的消息。LEO是分区中消息的最高偏移量,LSO是分区中消息的最低偏移量,LW是分区的写入偏移量。
-
Kafka中是怎么体现消息顺序性的?
- 只能保证分区内消息顺序有序,无法保证全局有序
- 生产者:通过分区的leader副本负责数据顺序写入,来保证消息顺序性
- 消费者:同一个分区内的消息只能被一个group里的一个消费者消费,保证分区内消费有序
- 为什么做不到全局有序:因为消息会发送到不一样的分区,分区之间发送的顺序是无法保证的
- 如何做到并发且全局有序?
- topic设置一个分区,发送端和消费端开启多线程生产和消费
- 用kafka采集用户访问轨迹,重写分区器把用户id作为分区键,这样每个用户访问的埋点记录就能按顺序到一个分区,然后有序消费
-
Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?
- 生产者拦截器和消费者拦截器,拦截器可以用来在消息发送前做一些准备工作
- 生产者需要用序列化器(Serializer)将key和value序列化成字节数组才可以将消息传入Kafka。消费者需要用反序列化器
相关文章:
Kafka面试宝典
1 Kafka基础面试篇 Kafka的那些设计让它有如此高的性能? 1.partition,producer和consumer端的批处理:提高并行度;2.页缓存:大量使用页缓存,内存操作比磁盘操作快很多,数据写入直接写道页缓存,由操作系统负责刷盘,数据读取也是直接命中页缓存,从内存中直接拿到数据;…...
Redis性能管理
目录 1、内存碎片如何产生的? 2、跟踪内存碎片率对理解Redis实例的资源性能是非常重要的 3、解决碎片率大的问题 二、内存使用率 1、避免内存交换发生的方法 2、内回收key 三、缓存的穿透、击穿、雪崩 #查看Redis内存使用方法 info memory #进入数据库查看 re…...
计算机网络:局域网的数据链路层
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
Linux常见命令简介
Linux运行级别 六种运行级别: 0、关机 1、单用户(可用来找回密码) 2、多用户无网络 3、多用户有网络(多用于工作环境) 4、预留 5、图形界面(多用于学习环境) 6、重…...
34-SDK设计(下):IAM项目GoSDK设计和实现
比如 Kubernetes的 client-go SDK设计方式。IAM项目参考client-go,也实现了client-go风格的SDK:marmotedu-sdk-go。 ,client-go风格的SDK具有以下优点: 大量使用了Go interface特性,将接口的定义和实现解耦࿰…...
基于Matlab的血管图像增强算法,Matlab实现
博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…...
LeetCode每日一题之专题一:双指针 ——复写零
复写零OJ链接:1089. 复写零 - 力扣(LeetCode) 题目: 解法(原地复写-双指针): 算法思路: 如果「从前向后」进⾏原地复写操作的话,由于 0 的出现会复写两次,导致…...
Golang基础-9
Go语言基础 介绍 基础 结构体 自定义类型 结构体定义 结构体声明 结构体初始化 字段访问与修改 匿名结构体 结构体嵌套 初始化函数定义 介绍 本文介绍Go语言中自定义类型、结构体定义、结构体声明、结构体初始化、字段访问与修改、匿名结构体、结构体嵌套、初始化…...
Vue基础知识:路由的封装抽离,路由模块的封装抽离的好处是什么?,如何快速的引入组件,基于@指代src目录,从src目录出发找组件
如果将所有的路由配置都存放在main.js中,是非常有问题的,杂且乱。所以我们要将路由模块进行抽离,这样有利于:拆分模块,利于维护。大致的做法就是将路由相关的东西放到router这个文件夹的index.js中,而将来只…...
插入排序---算法
1、算法概念 插入排序:它的工作原理是通过构建有序排序,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置插入。 2、算法步骤 将第一待排序序列第一个元素看作一个有序序列,把第二个元素到最后一个元素当成是…...
Vue3 Vite 整合组件脚手架笔记
序号更新时间备注12024.04.03初始化整理笔记 目录 一、安装运行命令二、相关依赖内容 1、http客户端 - alova2、国际化 - I18n3、时间管理 - moment4、pdf预览 - pdfjs-dist5、doc预览 - docx-preview6、请求参数处理 - qs7、全局状态管理 - Pinia8、路由管理 - vue-router9、…...
续二叉搜索树递归玩法
文章目录 一、插入递归二、寻找递归(非常简单,走流程就行)三、插入递归(理解起来比较麻烦) 先赞后看,养成习惯!!!^ _ ^<3 ❤️ ❤️ ❤️ 码字不易,大家的…...
DDD 的四层领域模型是怎样的?包含哪些基础概念?
DDD的四层领域模型如下所示: 展现层:这一层负责向用户显示信息和解释用户命令,完成前端界面逻辑。并将用户请求传递给应用层。应用层:这一层是很薄的一层,负责协调领域层中的领域对象,组成具体应用场景。应…...
AI 在医疗保健领域的应用:技术、趋势和前景
人工智能(AI)在医疗保健领域的应用已经成为引人瞩目的发展方向,其在医学影像分析、疾病诊断和个性化治疗等方面展现出了巨大潜力。本文将深入探讨这些技术应用和未来的发展趋势。 医学影像分析 医学影像分析是AI在医疗领域中应用最广泛的领…...
SVG XML 格式定义图形入门介绍
SVG SVG means Scalable Vector Graphics. SVG 使用 XML 格式定义图形SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失SVG 是万维网联盟的标准 Hello World Use SVG in html and you can see: Link to the SVG file You can use <a> tag to link to the svg…...
MYSQL数据库的故障排除与优化
目录 一.MySQL单实例故障排查 故障现象1 故障现象 2 故障现象 3 故障现象 4 故障现象 5 故障现象 6 故障现象 7 故障现象 8 二.主从环境常见故障 1.故障一 2. 故障二 3. 故障三 三. 优化 1.SQL优化 2. 架构优化 3.硬件方面 1.1 关于CPU 1.2 关于内存 1.3 关…...
C++从入门到精通——入门知识
1. C关键字(C98) C总计63个关键字,C语言32个关键字 2. 命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称都将存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的就是对标识符的名…...
一些题目学习
1.打开文件添加helloworld public class Saier {public static void main(String[] args){String path"C:\\Users\\sjg\\Desktop\\abc.txt";String text"hello world";try {File file new File(path);FileWriter fileWriter new FileWriter(file,true);…...
Linux上管理文件系统
Linux上管理文件系统 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转。每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小。在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据。 所有的盘片…...
【Linux】寿司线程池{单例模式之懒汉模式下的线程池}
文章目录 回顾单例模式0.多线程下的单例模式的意义1.什么是单例模式1.0设计模式1.1C单例模式的介绍及原理1.2拷贝构造和赋值重载的处理1.3if (nullptr ptr),nullptr放在比较运算符的前面?1.4实现单例模式的方式 2.实现懒汉方式的单例模式2.1单线程的单例模式2.2多…...
Docker资源管理和分配指南
什么是cgroup? cgroups其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组(如CPU、内存、磁盘输入输出等)。 什么是Docker资源限制?…...
为什么索引的底层结构是B+树
B树 1.数据库与数据交互的单位是page,而B树的每个节点都是一个page,访问一个节点,就相当于进行了一次I/O操作。所以访问的节点越少,查找效率越大。而B树是矮胖的,查找深度也不会太大。 2.B树中的节点是有序存储的,对于范围查询、排…...
NLP学习路线指南总结
当然可以,以下是一份较为详细的NLP学习路线指南,帮助你逐步掌握自然语言处理的核心技术和应用。 一、基础知识与技能 语言学基础: 语言学基本概念:语音、语法、语义等。语言的层次与分类:语音学、音系学、句法学、语…...
试过了,ChatGPT确实不用注册就可以使用了!
看到官网说不用登录也可以直接使用ChatGPT 我们来试一下 直接打开官网 默认是直接进入了chatgpt3.5的聊天界面 之前是默认进的登录页面 聊一下试试 直接回复了,目前属于未登录状态,挺好! 来试下ChatGPT4 跳转到了登录页面 目前来看gpt4还…...
CANoe自带的TCP/IP协议栈中TCP的keep alive机制是如何工作的
TCP keep alive机制我们已经讲过太多次,车内很多控制器的TCP keep alive机制相信很多开发和测试的人也配置或者测试过。我们今天想知道CANoe软件自带的TCP/IP协议栈中TCP keep alive机制是如何工作的。 首先大家需要知道TCP keep alive的参数有哪些?其实就三个参数:CP_KEEP…...
【C++练级之路】【Lv.18】哈希表(哈希映射,光速查找的魔法)
快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、哈希1.1 哈希概念1.2 哈希函数1.3 哈希冲突 二、闭散列2.1 数据类型2.2 成员变量2.3 默认成员函数2.…...
「PHP系列」If...Else语句/switch语句
文章目录 一、If...Else语句1. 基本语法2. 带有 elseif 的语法3. 示例示例 1:基本 if...else 结构示例 2:使用 elseif示例 3:嵌套 if...else 结构 4. 注意事项 二、switch语句1. 基本语法2. 示例示例 1:基本 switch 结构示例 2&am…...
Ubuntu部署BOA服务器
BOA服务器概述 BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合用在嵌入式系统中。 BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通用网络对嵌入式设备进行监控,并将反馈信…...
安卓Glide加载失败时点击按钮重新加载图片
需求 假设此时已经用load指定一个url: String,又用into指定了一个img: ImageView开始加载,但是网络突然中断,导致图片加载失败。在这种情况下,想要通过点击一个Button重新加载。 Glide.with(context).load(url).placeholder(loa…...
linux下python服务定时(自)启动
AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...
东莞网站建设服务/营销新闻
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。举个例子,我们来计算阶乘n! 1 * 2 * 3 * ... * n,用函数fact(n)表示,可以看出:fact(n) n! 1 x 2 x 3 x ... x (n-…...
深圳网站建设公司 概况/平面设计主要做什么
说的 捱三顶四 地方转载于:https://blog.51cto.com/1369879/284697...
wordpress 动态背景/模板之家
给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词。 单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻。每个单元中的字母最多只能使用一次。 样例 给出board [ “ABCE”, “SFCS”, “ADEE” ]…...
个体工商户做网站/seo专员是什么意思
按照先后顺序:1,静态先于非静态代码库执行(静态代码块随着类的加载而加载,初始化只执行一次)2,父类先于子类3,非静态代码块优于构造函数执行所以执行顺序如下:父类B静态代…...
怎么样下载app软件/移动网站推广如何优化
https://www.imgtec.com/blog/a-look-at-the-powervr-graphics-architecture-tile-based-rendering/ 一种硬件结构 color target 分成tile 减小带宽 提前(fs)用depth做隐藏面消除 earlyz一个意思 减小cache missing 一行短了。。 所以early失效的都不可以…...
上海市政府网站建设与对策分析/比较好的网络优化公司
前言 从刚接触前端开发起,跨域这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了,16年时也整理过一篇相关文章,但是感觉还是差了点什么,于是现在重新梳理了一下。 个人见识…...