Kafka速度之谜:高性能的幕后秘密大揭秘

本文探讨了Kafka的高性能特点,包括消息分区实现的横向扩展、PageCache优化磁盘I/O、ZeroCopy技术降低数据拷贝开销,以及顺序写提升磁盘利用率。这些技术使得Kafka在高并发和实时性场景中表现出色。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Kafka的介绍

  • kafka是linkedIn开源的分布式消息系统,归给Apache的顶级项目
  • kafka主要特点是基于Pull的模式来处理消息的消费的,追求高吞吐量,一开始的目的就是来做日志传输的收集的
  • kafka不支持事务,对消息的丢失,错误没有太严格的要求
  • 高并发业务场景很好有用到事务的

kafka的特点

  • 跨平台
  • 分布式
  • 实时性
  • 伸缩性

一、kafka高性能的原因

  • 消息分区:不受单台服务器的限制,可以不受限的处理更多的数据
  • 顺序写:顺序写磁盘,可以提供磁盘的利用率
  • Page Cache:来提升吞吐量
  • zeroCopy
  • 后台的异步操作,主动Flush
  • 预读的策略,IO的调度
  • 消息压缩:减少磁盘IO和网络IO
  • 分批发送:将消息打包批量发送,减少网络开销

Page Cache

  • Page Cache是OS实现的一种主要的磁盘缓存机制,以此来减少对磁盘I/O的操作
  • 将磁盘文件缓存到内存中(MySQL->Redis)
  • 如果要从磁盘中读取1.txt,OS不是直接到磁盘而是到PageCache,如果PageCache里有就拿走了,如果没有就向磁盘发出请求,通过I/O获取数据,获取数据后先放入PageCache然后再给需要的请求(操作系统的页缓存是4kb)
  • 写入数据的时候先判单PageCache里有没有,没有先写入PageCache,然后OS将PageCache的数据刷到磁盘中(MySQL-Redis,先写MySQL后写Redis)

在这里插入图片描述

ZeroCopy(零拷贝)

在这里插入图片描述
零拷贝其实就是将磁盘文件主机copy到内存中传输给socket而省去中间在磁盘内存中来回拷贝复制的过程,降低了上下文切换的过程,大大提高了应用程序的性能

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值