之前在项目中,有用Kafka来做日志处理,只知道Kafka很适合用来处理日志,它高性能、高吞吐量。那么它是如何做到高性能、高吞吐量的呢?
(1)使用了页缓存技术
Kafka 每次接收到数据都会往磁盘上去写,它是基于操作系统的页缓存来实现文件写入的
操作系统本身有一层缓存,叫做 Page Cache,是在内存里的缓存,我们也可以称之为 OS Cache,意思就是操作系统自己管理的缓存。
在写入磁盘文件的时候,可以直接写入这个 OS Cache 里,也就是仅仅写入内存中,接下来由操作系统自己决定什么时候把 OS Cache 里的数据真的刷入磁盘文件中
(2)以磁盘顺序写的方式来写
将数据追加到文件的末尾,不是在文件的随机位置来修改数据
(3)零拷贝技术
零拷贝就是不需要把 OS Cache 里的数据拷贝到应用缓存,再从应用缓存拷贝到 Socket 缓存了,两次拷贝都省略了
Kafka就是直接让操作系统的 Cache 中的数据发送到网卡后传输给下游的消费者,中间跳过了两次拷贝数据的步骤
【中间件】为什么用Kafka,它是怎么做到高吞吐量高性能的
最新推荐文章于 2024-01-25 00:47:47 发布