智畅行科技资讯网
首页 > 科技 > 简单总结下kafka高吞吐的原因

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

简单总结下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讯息伫列实现高吞吐的原因,尽请关注,后续有更精彩内容分享,谢谢。

标签:

上一篇 目录 下一章

猜你喜欢

发明家 雷军承诺硬件净...
雷军承诺硬件净利润率不超过5% 小米的目标不是苹果而是BAT 小米靠硬件也赚不到钱,这个承诺更像是顺水推舟。 4 月 25 日,小米公司创始人、董事长兼 ...
中国的高科技有哪些 难得用inte...
难得用intel系列 4000元装机体验分享 处理器是最大败笔?经常看我装机的朋友,或许有一个疑问,我大部分都是以AMD锐龙为主,最主要的原因就是性价比较...
国家科技部重点研发计划项目 陪伴式记录 和...
陪伴式记录 和孩子一起快乐成长 近日,一份调查报告显示,现代白领们每天陪伴孩子的时间不足1.05小时,近六成的人不同程度错过了孩子成长的关键时刻,75%的...
最新科技发明 除了谷歌之外别...
除了谷歌之外别无选择安卓免费的背后是国产手机的无路可退 大家都知道,目前整个市场上最流行的两大系统,一是苹果的ios,另外一个就是谷歌的安卓。虽然说前两年...

强力推荐