当前位置:硬件测评 > 【第308期】面试官:kafka为何如此高效?

【第308期】面试官:kafka为何如此高效?

  • 发布:2023-10-05 20:13

2022年5月17日下午4:12 • 面试问题 • 阅读 10 kafka的IO效率这么高的原因: (1)第一个是写入数据时。第一个是因为kafka是顺序写入数据的,将普通的随机IO变成了顺序IO,这样写入数据的速度更快。 (2)第二个是,kafka读取数据时,基于sendfile实现零拷贝。 传统的数据读取流程是: 基于sendfile实现零拷贝调用read函数,将文件数据拷贝到内核缓冲区 read函数返回,文件数据从内核缓冲区复制到用户缓冲区。 调用 write 函数将文件数据从用户缓冲区复制到内核的套接字相关缓冲区。 数据从套接字缓冲区复制到相关协议引擎。 但kafka是这样读的: sendfile系统调用,将文件数据复制到内核缓冲区 然后从内核缓冲区复制到内核中socket相关的缓冲区 最后将socket相关的缓冲区复制到协议引擎中。 (3)第三个是kafka的数据压缩。 Kafka 使用批量压缩,这意味着将多个消息压缩在一起,而不是压缩单个消息。 下图是传统的数据读取: 这是kafka使用的零拷贝数据读取: (4)第二个是kafka生产者在生产消息时使用批量发送和双线程。事实上,他们使用双线程,主线程和Sender线程。 主线程负责将消息放入客户端缓存中,Sender线程负责从缓存中发送消息,而这个缓存将多条消息聚合成一个批次。有些消息中间件会将消息直接扔给代理。 感谢您的阅读,希望对您有所帮助:) 来源:www.sychzs.cn/qq_36520235/article/details/89841798 结尾 题外话推荐 推荐一个“钓鱼程序员”的聚集地 ●【第301期】面试官:dubbo为什么不使用jdk的spi机制? ●【第302期】面试官:如何设计幂等接口? ●【第303期】如何理解算法的时间复杂度? ●【第304期】堆排序算法(详细流程图解) ●【第305期】面试官:你用过Redis吧?那么能否介绍一下Redis有哪些监控指标呢? ●【第306期】面试官:集群环境下定时任务多次执行的解决方案是什么? ●【第307期】面试官:蔚来是什么?蔚来的原理是什么?而不是在网上搜索问题?还不赶快关注我们吧~ PS:因为公众号平台改变了推送规则,如果不想错过内容,看完后记得点击“阅读”并加个“星”,这样每次推送新文章,它将尽快出现在您的订阅中。在列表中。点击“关注”即可支持我们! 版权声明:本文内容由网友自愿贡献,本文所表达的观点仅代表作者自己的观点。本网站仅提供信息存储空间服务,不拥有任何所有权,也不承担相关法律责任。如果您发现本站有任何涉嫌侵权/非法内容,请发送邮件举报。一经核实,该网站将立即删除。 本文由斑马博客整理。本文链接为:https://www.sychzs.cn/index.php/post/8417.html

相关文章

最新资讯

热门推荐