kafka为什么那个快?-成都快上网建站

kafka为什么那个快?

kafka是一个高吞吐速度的消息中间件,可以部署在廉价的主机上。

创新互联公司专注于寒亭企业网站建设,自适应网站建设,成都商城网站开发。寒亭网站建设公司,为寒亭等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

速度快的原因有两个:

1.从写数据方面:写入的数据按顺序写入到磁盘;memory mapped files

磁盘读写的快慢取决于你怎么使用它,写入的时候可以选择顺序写入和随机写入,kafka选择的时顺序写入机制,该机制的读写速度和内存的速度基本持平

使用顺序写入的好处:

1.磁盘顺序写入的速度比内存随机速度快

2.在内存中操作时,jvm的堆中数据量大,GC时的效率低,使用磁盘可以避免这个问题

3.顺序写入系统冷启动后,磁盘缓存依然可以使用。

memory mapped  files

kafka写入数据时不是实时写入磁盘的,它利用了现代操作系统分页存储来利用内存提高I/O效率,先写在内存中,在一定的时间flush到磁盘中。

Kafka提供了一个参数——producer.type来控制是不是主动flush,如果Kafka写入到mmap之后就立即flush然后再返回Producer叫 同步 (sync);写入mmap之后立即返回Producer不调用flush叫异步 (async)

memory mapped files(mmap)即内存映射文件,在64位系统中一般可以表示20G的数据文件,它的工作原理使用操作系统的page来实现文件到物理内存的直接映射。映射之后

对物理内存的操作也可以同步到硬盘上。这种方式可以获取很大的I/O提升,省去了用户空间到内核空间的开销(read会把数据先放在内核空间,然后复制到用户空间的内存中)

2.从读数据方面

基于sendfile实现zero copy

传统read/write方式进行网络文件传输的方式,在这个过程当中,文件数据经过四个copy过程

硬盘---内核buf--用户buf----socket相关缓冲区---协议引擎

sendfile系统调用可以提供一种减少以上多次copy,提升文件传输性能的方法。

硬盘---内核buf----socket相关缓存----协议引擎

在内核版本2.4之后,文件描述符结果被改变,sendfile实现了更简单的方式,再次减少了一次copy操作。


网页题目:kafka为什么那个快?
本文网址:http://kswjz.com/article/ihihci.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流