首页 > 其他分享 >面试题百日百刷-kafka篇(四)

面试题百日百刷-kafka篇(四)

时间:2023-04-17 22:33:14浏览次数:53  
标签:文件 面试题 百刷 发送 消息 kafka Kafka

锁屏面试题百日百刷,每个工作日坚持更新面试题。****请看到最后就能获取你想要的, 接下来的是今日的面试题:

1.为什么kafka可以实现高吞吐?单节点kafka的吞吐量也比其他消息队列大,为什么?

Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失。kafka主要使用了以下几个方式实现了超高的吞吐率

顺序读写

kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写

零拷贝

先简单了解下文件系统的操作流程,例如一个程序要把文件内容发送到网络,这个程序是工作在用户空间,文件和网络socket属于硬件资源,两者之间有一个内核空间在操作系统内部,整个过程为:

在Linux kernel2.2 之后出现了一种叫做”零拷贝(zero-copy)”系统调用机制,就是跳过“用户缓冲区”的拷贝,建立一个磁盘空间和内存的直接映射,数据不再复制到“用户态缓冲区”系统上下文切换减少为2次,可以提升一倍的性能

文件分段

kafka的队列topic被分为了多个区partition,每个partition又分为多个段segment,所以一个队列中的消息实际上是保存在N多个片段文件中通过分段的方式,每次文件操作都是对一个小文件的操作,非常轻便,同时也增加了并行处理能力

批量发送

Kafka允许进行批量发送消息,先将消息缓存在内存中,然后一次请求批量发送出去比如可以指定缓存的消息达到某个量的时候就发出去,或者缓存了固定的时间后就发送出去如100条消息就发送,或者每5秒发送一次这种策略将大大减少服务端的I/O次数

数据压缩

Kafka还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩压缩的好处就是减少传输的数据量,减轻对网络传输的压力Producer压缩之后,在Consumer需进行解压,虽然增加了CPU的工作,但在对大数据处理上,瓶颈在网络上而不是CPU,所以这个成本很值得

2.Kafka的ISR

ISR代表In-Sync Replicas,在Kafka里表示目前处于同步状态的那些副本(replica)。

Kafka规定一条消息只有当ISR中所有的副本都复制成功时,才能被消费。

全部内容在git上,了解更多请点我头像或到我的主页去获得,谢谢

标签:文件,面试题,百刷,发送,消息,kafka,Kafka
From: https://www.cnblogs.com/demosoftware/p/17327795.html

相关文章

  • 面试题
    可变类型和不可变类型可变类型:列表字典集合不可变类型:整型浮点型字符串数组常用的魔法方法魔法方法就是在某种情况下会自动触发__init__类()---->对象进行实例化__new__类()---->产生一个空对象---->触发__init__完成对象实例化并且有返回值返回......
  • 面试题4-17
    操作系统的中断和异常有什么区别?中断是外部事件触发的,硬件设备发出的异步信号,用于向操作系统请求服务。中断事件发生时,会停止当前程序的运行,而转向中断处理程序的执行。在中断处理程序执行完成之后再回到原来的进程执行。异常是cpu执行指令的时候遇到的错误和意外情况,是cpu内......
  • #yyds干货盘点# LeetCode面试题:单词搜索
    1.简述:给定一个 mxn二维字符网格 board和一个字符串单词 word。如果 word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示......
  • 安装Zookeeper和Kafka集群
    安装Zookeeper和Kafka集群本文介绍如何安装Zookeeper和Kafka集群。为了方便,介绍的是在一台服务器上的安装,实际应该安装在多台服务器上,但步骤是一样的。安装Zookeeper集群下载安装包从官网上下载安装包:curlhttps://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookee......
  • 从一道面试题来学习前台进程和后台进程、孤儿进程和僵尸进程
    1、面试题介绍以前面试,面试官问了一个问题,大意是:我们在终端中,通过执行pythonmain.py命令,会启动一台前台进程直到程序结束。现在我还是想通过执行pythonmain.py,启动一个后台进程,让后台进程运行我们的业务逻辑。这个时候应该怎么做呢?回答上面这道题,需要先了解什么是前台......
  • uniapp面试题
    1.uniapp进行条件编译的两种方法?小程序端和H5的代表值是什么?通过#ifdef、#ifndef的方式H5:H5MP-WEIXIN:微信小程序2.uniapp的配置文件、入口文件、主组件、页面管理部分pages.json配置文件main.js入口文件App.vue主组件pages页面管理部分3.uniapp上传文件时用到a......
  • Kafka
    Kafkahttps://www.cnblogs.com/zhh567/p/17301143.html磁盘顺序顺序读写速度超过了内存随机读写速度https://spring.io/projects/spring-kafkakafka组件:Broker    一个节点就是一个BrokerTopic      处理消息的不同分类,是一个逻辑概念Partition是Topic的......
  • ???热乎的前端面试题(昨天)
    前言系列首发于公众号『前端进阶圈』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。热乎的前端面试题(昨天)1.Vue响应式原理?vue2:在Vue2中注意使用Object.defineProperty()方法来实现响应式,它为对象中的每一个属性都定义了一个getter和setter,当数据发生变化......
  • #yyds干货盘点# LeetCode面试题:最小覆盖子串
    1.简述:给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。 注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。如果s中存在这样的子串,我们保证它是唯一的答案。......
  • ajax面试题总结
    转载请注明出处:1.ajax异步和同步的区别Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新。同步和异步是指客户端发送请求时,主线程是否会阻塞等待服务器的响应返回。同步请求在发送请......