当前位置: 首页 - 智能 - 简单总结下kafka高吞吐的原因

简单总结下kafka高吞吐的原因

2024-12-21 智能 0

简单总结下kafka高吞吐的原因

Kafka是分散式讯息系统,需要处理海量的讯息,Kafka的设计是把所有的讯息都写入速度低容量大的硬盘,以此来换取更强的储存能力,但实际上,使用硬盘并没有带来过多的效能损失。

kafka主要使用了以下几个方式实现了超高的吞吐率

顺序读写

kafka的讯息是不断追加到档案中的,这个特性使kafka可以充分利用磁盘的顺序读写效能。

顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写。

Kafka官方给出了测试资料(Raid-5,7200rpm):

> 顺序 I/O: 600MB/s

> 随机 I/O: 100KB/s

零拷贝

先简单了解下档案系统的操作流程,例如一个程式要把档案内容传送到网络,这个程式是工作在使用者空间,档案和网络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,所以这个成本很值得。

好了,今天就简单分享下kafka讯息伫列实现高吞吐的原因,尽请关注,后续有更精彩内容分享,谢谢。

标签: 生活中的人工智能产品智能化产品设计巨轮智能股吧ai人工智能制造业智能化转型

上一篇:百度云花颜策txt探秘解锁数据海洋的秘密

下一篇:国际合作与竞争中国科技在全球舞台上的位置

相关推荐
推荐资讯
热门文章