锁屏面试题百日百刷,每个工作日保持更新面试题。请看到最初就能获取你想要的, 接下来的是今日的面试题:
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上,理解更多请点我头像或到我的主页去取得,谢谢**