首页 - 新闻 - 【第308期】面试官:kafka为什么这么高效?

【第308期】面试官:kafka为什么这么高效?

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