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

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

文章目录

  • 前言
  • 一、kafka高性能的原因
    • Page Cache
    • ZeroCopy(零拷贝)


前言

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)

Kafka速度之谜:高性能的幕后秘密大揭秘_第1张图片

ZeroCopy(零拷贝)

Kafka速度之谜:高性能的幕后秘密大揭秘_第2张图片
零拷贝其实就是将磁盘文件主机copy到内存中传输给socket而省去中间在磁盘内存中来回拷贝复制的过程,降低了上下文切换的过程,大大提高了应用程序的性能

你可能感兴趣的:(MQ,kafka,分布式)