当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-如何保证消息的高效读写?

金三银四精选java面试题-如何保证消息的高效读写?

来源:图灵教育
时间:2023-12-27 10:05:48
 

如何保证消息的高效读写?

零拷贝: kafka和RocketMQ都是通过零拷贝技术来优化文件读写。

传统文件复制方式: 需要对文件在内存中进行四次拷贝。

零拷贝: 有两种方式, mmap和transfile,Java当中对零拷贝进行了封装, Mmap方式通过MappedByteBuffer对象进行操作,而transfile通过FileChannel来进行操作。Mmap 适合比较小的文件,通常文件大小不要超过1.5G ~2G 之间。Transfile没有文件大小限制。RocketMQ当中使用Mmap方式来对他的文件进行读写。

在kafka当中,他的index日志文件也是通过mmap的方式来读写的。在其他日志文件当中,并没有使用零拷贝的方式。Kafka使用transfile方式将硬盘数据加载到网卡。