Kafka为什么速度快

  • 如果设置消息发送的方式为异步,则多条消息会被整合进行批量发送。既可以每隔一定时间发送一次,也可以累积到固定条数发送一次。

  • 压缩,配合批量发送,从而减少网络损耗。固然压缩、解压缩会耗费CPU的资源,但相对于减轻的网络损耗,还是值得的。单条信息的压缩意义不大。

  • 顺序IO。相比较随机IO,减少了硬盘磁头寻道的时间,仅需很少的扇区旋转,速度得到很大的提升。消费者通过偏移量来读取数据。

  • MMF(Memory Mapped Files)。通过操作系统的Page,实现了文件到物理内存的映射,对物理内存的操作会直接同步到硬盘,省下了用户空间到内核空间的复制。其缺点就在于并不可靠,一旦服务器宕机,而数据又没有同步到硬盘上,就会造成数据丢失。可以设置主动刷新进行规避。

  • sendfile。从服务器读取静态文件的标准顺序是:硬盘文件——页缓存——用户空间缓存——Socket缓冲区——网卡。而使用sendfie方法则省去了与用户空间的交互,顺序是:硬盘文件——页缓存——Socket缓存——网卡。

  • MMF与sendfile,都使用了零拷贝技术,提高IO速度。

猜你喜欢

转载自blog.51cto.com/15067227/2603607