玩转Kafka—Kafka高性能原因分析

简介: 玩转Kafka—Kafka高性能原因分析

玩转Kafka—Kafka高性能原因分析

Kafka最大的特点:高吞吐,即使在普通的机械硬盘下也可以达到每秒几百万的处理量

对比RocketMQ:

那么Kafka为什么能实现如此高的吞吐量呢?

主要以下四个方面:

  • 磁盘的顺序读写
  • 页缓存
  • 零拷贝技术
  • 批量处理

下面我们来分别解释下

1 磁盘的顺序读写

图片来自《The Pathologies of Big Data》

由上到下三个橙色的进度条分别表示机械硬盘、固态硬盘和内容的随机访问速度

由上到下三个橙色的进度条分别表示机械硬盘、固态硬盘和内容的顺序访问速度

可见,在顺序读写下无论是固态硬盘还是机械硬盘都是和内存差不多的。

2 页缓存

操作系统本身的页缓存(Page Cache),存储紧凑的数据

想要了解页缓存,就必须先要了解什么是“页”,这个在操作系统课程中有比较多的涉及。

页是操作系统存储的一个基本单位,在分页式的存储中,分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,从0开始。把内存的物理空间分成若干个块,同样加以编号从0开始。为进程分配内存时,以块为单位,将进程的若干个页分别装入到多个可以不相邻接的物理块中。由于进程最后一页通常装不满一块,则剩余页面叫做“页内碎片”。

页面大小: 页面大小应选择适中,并且应该是2的N次幂,通常为1KB~8KB

页缓存是一个相对独立的概念,其根本目的是为了加速对后端设备的IO效率,比如文件的读写。

3 零拷贝技术

借鉴了Linux操作系统下的零拷贝技术,在页缓存和Socket缓冲区之间进行切换,而避免了用户态到内核态之前的切换。

那么,什么是用户态和内核态

  • 用户态:指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。
  • 内核态:操作系统内核所运行的模式,运行在该模式的代码,可以无限制地对系统存储、外部设备进行访问。

用户态与内核态之间的切换

  • 系统调用
  • 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
  • 外围设备的中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序

非零拷贝

零拷贝

零拷贝:避免用户态和内核态之间的拷贝

4 批量处理

高效利用网络带宽,批量压缩和处理

相关文章
|
21天前
|
消息中间件 存储 网络协议
【Kafka】Kafka 性能高的原因分析
【4月更文挑战第5天】【Kafka】Kafka 性能高的原因分析
|
15天前
|
消息中间件 存储 Kafka
【Kafka】Replica、Leader 和 Follower 三者的概念分析
【4月更文挑战第11天】【Kafka】Replica、Leader 和 Follower 三者的概念分析
|
19天前
|
消息中间件 存储 负载均衡
【Kafka】Kafka 的分区分配策略分析
【4月更文挑战第7天】【Kafka】Kafka 的分区分配策略分析
|
7月前
|
消息中间件 存储 缓存
Kafka为什么是高性能高并发高可用架构
Kafka为什么是高性能高并发高可用架构
244 0
|
2月前
|
消息中间件 Java Kafka
【Kafka】Kafka-Server-start.sh 启动脚本分析(Ver 2.7.2)
【Kafka】Kafka-Server-start.sh 启动脚本分析(Ver 2.7.2)
33 0
|
8月前
|
消息中间件 存储 Kafka
kafka是如何实现高性能高吞吐的?
以下是某网站上对该问题的总结,一共分为了以下六点,但这上面说的很浅显,我在后面加了一些自己的理解,做为解释,如有遗漏或者不对的地方欢迎大家指点,我会即时的修改,辛苦诸位老铁!
111 0
|
4月前
|
SQL 消息中间件 分布式数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(三)离线分析
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(三)离线分析
63 0
|
4月前
|
消息中间件 监控 负载均衡
Kafka 最佳实践:构建可靠、高性能的分布式消息系统
Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助大家更好地应用这一强大的消息系统。
|
4月前
|
分布式计算 BI 双11
StructredStreaming+Kafka+Mysql(Spark实时计算| 天猫双十一实时报表分析)
StructredStreaming+Kafka+Mysql(Spark实时计算| 天猫双十一实时报表分析)
39 0
|
4月前
|
消息中间件 Kafka Shell
Linux【脚本 02】shell脚本离线安装配置Zookeeper及Kafka并添加service服务和开机启动(脚本分析)
Linux【脚本 02】shell脚本离线安装配置Zookeeper及Kafka并添加service服务和开机启动(脚本分析)
47 0

热门文章

最新文章