当前位置: 首页 > news >正文

Why is Kafka fast?(Kafka性能基石)

Kafka概述

在这里插入图片描述


Why is kafka fast?

思考一下,当我们在讨论Kafka快的时候我们是在谈论什么呢?What does it even mean that Kafka is fast?

我们是在谈论kafka的低延迟(low latency)还是在讨论吞吐量(throughput)呢?

It is fast compared to what?

在这里插入图片描述


kafka is optimized for high throughput. lt is designed to move a large number of records in a short amount of time.

Kafka针对高吞吐量进行了优化。它的设计目的是在短时间内移动大量的记录。

Think of it as a very large pipe moving liquid.把Kafka想象成一个非常大的管道移动液体。

在这里插入图片描述

The bigger the diameter of the pipe, the largerthe volume of liquid that can move through it.

管道的直径越大,流经管道的液体体积就越大。

在这里插入图片描述

So when someone says Kafka is fast, they usually refer to Kafka’s ability to move a lot of data.

所以人们谈论Kafka很快的时候,他们通常指的是Kafka移动大量数据的能力。
在这里插入图片描述

What are some of the design decisions that help Kafka move a lot of data quickly?

那么Kafka哪些设计决策与设计细节可以实现快速移动大量数据呢?

There are many design decisions that contributed to Kafka’s performance.这里我们只关注两种最重要的设计。在这里插入图片描述

1.Sequential I/O

The first one is Kafka’s reliance on sequential l/0.首先是Kafka对顺序l/0的依赖。

在这里插入图片描述

什么是sequential I/O呢?

这里我们有一个常见的误区,我们常常认为磁盘访问比内存访问慢,但是其实这在很大程度上取决于数据访问模式(access pattern)。

There are two types of disk access patterns —random and sequential.

在这里插入图片描述

For hard drives it takes time to physically move the arm to different locations on the magnetic disks.This is what makes random access slow.

对于硬盘驱动器,它需要时间来物理移动磁头臂到磁盘上的不同位置。这就是随机访问缓慢的原因。

For sequential access, though, since your arm doesn’t need to jump around, it is much faster to read and write blocks of data oneafter the other.

对于顺序访问,由于磁头臂不需要跳转,因此依次读取和写入数据块的速度要快得多。
在这里插入图片描述

Kafka takes advantage of this by using an append-only log as its primary data structure.

Kafka使用仅追加日志作为其主要数据结构,即实现了顺序I/O模式。

An append-only log adds new data to the end of the file.This access pattern is sequential.

仅追加日志将新数据添加到文件的末尾,这种访问模式是顺序的。
在这里插入图片描述

On modern hardware with an array of these hard disks, sequential writes reach hundreds of megabytes per second, while random writes aremeasured in hundreds of kilobyte per second.

在拥有这些硬盘阵列的现代硬件上,顺序写入达到每秒数百Mb字节,而随机写入只能达到每秒数百Kb字节。
在这里插入图片描述

Sequential access is several order of magnitude faster. 顺序访问速度快几个数量级。


Using hard disks has its cost advantage, too. 使用硬盘也有其成本优势。

在这里插入图片描述
与SSD相比,硬盘的价格只有它的三分之一,但容量却是它的三倍。

Giving Kafka a large pool of cheap disk space without any performance penalty means that Kafka can cost effectively retain messages for a long period of time,a feature that was uncommon to messaging systems before Kafka.

为Kafka提供大量廉价的磁盘空间而没有任何性能损失,这意味着Kafka可以有效地长时间保留消息。

而这一点在Kafka之前的消息系统中,并不常见。

在这里插入图片描述


2.Zero copy principle

The second design choice that gives Kafka its performance advantage is its focus on efficiency.

Kafka moves a lot of data from network to disk, and from disk to network.

Kafka将大量数据从网络移动到磁盘,再从磁盘移动到网络。

It is critically important to eliminate excess copy when moving pages and pages of data between the disk and the network.

在磁盘和网络之间移动一页又一页的数据时,消除多余的拷贝是非常重要的。

在这里插入图片描述

这就是零复制原理发挥作用的地方。This is where zero copy principle comes into the picture.

现代unix操作系统经过高度优化,可以将数据从磁盘传输到网络,而不会过度复制数据。
Modern unix operating systems are highly optimized to transfer data from disk to network without copying data excessively.

首先,我们看一下Kafka是如何在零拷贝根本不使用的情况下将磁盘上的一页数据发送给消费者的。

在这里插入图片描述

  • 1.数据从磁盘加载到操作系统缓存。
    First the data is loaded from disk to the OS cache.

  • 2.数据从操作系统缓存复制到Kafka应用程序。
    Second the data is copied from the OS cache into the Kafka application.

在这里插入图片描述

  • 3.数据从Kafka复制到套接字缓冲区。Third the data is copied from Kafka to the socket buffer.

  • 4 将数据从套接字缓冲区复制到网络接口卡缓冲区。
    And fourth the data is copied from the socket buffer to the network interface card buffer.

  • 5.最后数据通过网络发送给消费者。And finally, the data is sent over the network to the consumer.

Now this is clearly inefficient. There are four copies and two system calls. 这显然是低效的。有四个副本和两个系统调用。


现在我们再来看一下使用零拷贝的Kafka。

在这里插入图片描述

第一步是一样的。数据页面从磁盘加载到操作系统缓存。

零拷贝时,Kafka应用程序使用一个名为sendfile()的系统调用来告诉操作系统直接将数据从操作系统缓存复制到网络接口卡缓冲区。
With zero copy, the Kafka application uses a system call called sendfile() to tell the operating system to directly copy the data from the OS cache to the network interface card buffer.

在这个优化的路径中,唯一的拷贝是从操作系统缓存到网卡缓冲区的。

With a modern network card, this copying is done with DMA.对于现代网卡,这种复制是通过DMA完成的。

在这里插入图片描述
DMA stands for direct memory access. When DMA is used the cpu is not involved, making it even more efficient.
DMA表示直接内存访问。当使用DMA时,不涉及cpu,使其更加高效。


To recap, sequential I/O and zero copy principle are the cornerstone to Kafka’s high performance.

顺序I/O和零拷贝原则是Kafka高性能的基石。

Kafka uses other techniques to squeeze every ounce of performance out of modern hardware, but
these two are the most important in our view.

Kafka使用其他技术从现代硬件中挤出每一丝性能,而在我们看来,顺序I/O、零拷贝原则这两个是最重要的。


Learned it from youtuber:ByteByteGo.

相关文章:

Why is Kafka fast?(Kafka性能基石)

Kafka概述 Why is kafka fast? 思考一下,当我们在讨论Kafka快的时候我们是在谈论什么呢?What does it even mean that Kafka is fast? 我们是在谈论kafka的低延迟(low latency)还是在讨论吞吐量(through…...

Linux下的SSH详解及Ubuntu教程

前言 SSH(Secure Shell)是一种用于计算机之间安全通信的协议,广泛应用于远程登录、系统管理和文件传输等场景。本文将详细介绍SSH在Linux系统(特别是Ubuntu)下的使用,包括安装、配置、密钥管理和常见应用&…...

MobPush HarmonyOS NEXT 版本集成指南

开发工具:DevEco Studio 集成方式:在线集成 HarmonyOS API支持:> 11 集成前准备 注册账号 使用MobSDK之前,需要先在MobTech官网注册开发者账号,并获取MobTech提供的AppKey和AppSecret,详情可以点击查…...

什么是封装?为什么要封装?

什么是封装? 封装是计算机科学中的一个重要概念,尤其在面向对象编程(OOP)中占据核心地位。封装主要指的是将数据(属性)和对这些数据的操作(方法)组合在一个单元中(我们称…...

远程桌面无法复制粘贴文件到本地怎么办?

远程桌面不能复制粘贴问题 Windows远程桌面为我们提供了随时随地访问文件和数据的便捷途径,大大提升了工作和生活的效率。然而,在使用过程中,我们也可能遇到一些问题。例如,在通过远程桌面传输文件时,常常会出现无法复…...

LeetCode 207. 课程表

思路:这是一道拓扑排序问题,拓扑排序听起来可能有点复杂,但实际上它是个相当直观的概念。想象一下,你有很多事情要做,但有些事情必须在另一些事情完成之后才能开始,就像你得先穿上袜子再穿鞋子 拓扑排序就…...

数据结构历年考研真题对应知识点(树的基本概念)

目录 5.1树的基本概念 5.1.2基本术语 【森林中树的数量、边数和结点数的关系(2016)】 5.1.3树的性质 【树中结点数和度数的关系的应用(2010、2016)】 【指定结点数的三叉树的最小高度分析(2022)】 5.1…...

Pytorch和Tensorflow安装【Win和Linux】

Ubuntu/win安装Pytorch和Tensorflow 说明: 这两种框架的搭建,均基于Anaconda进行搭建。先在系统中安装Anaconda软件。 一、Pytorch的搭建 windows安装 (1)搭建参考官网给的命令,pytorch官网 (2)下载地址:https://download.pytorch.org/whl/torch_stable.html 从上述…...

筑算网基石 创数智未来|锐捷网络闪耀2024 MWC上海

2024年6月26日至28日,全球科技界瞩目的GSMA世界移动大会(MWC 上海)在上海新国际博览中心(SNIEC)盛大召开。作为行业领先的网络解决方案提供商,锐捷网络以“筑算网基石 创数智未来”为主题,带来了…...

T4打卡 学习笔记

所用环境 ● 语言环境:Python3.11 ● 编译器:jupyter notebook ● 深度学习框架:TensorFlow2.16.1 ● 显卡(GPU):NVIDIA GeForce RTX 2070 设置GPU from tensorflow import keras from tensorflow.keras…...

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2(全开源版)

>>>系统简述: 抖音阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询,混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多…...

zabbix报警机制

zabbix思路流程...

【Matlab】-- 飞蛾扑火优化算法

文章目录 文章目录 01 飞蛾扑火算法介绍02 飞蛾扑火算法伪代码03 基于Matlab的部分飞蛾扑火MFO算法04 参考文献 01 飞蛾扑火算法介绍 飞蛾扑火算法(Moth-Flame Optimization,MFO)是一种基于自然界飞蛾行为的群体智能优化算法。该算法由 Sey…...

全面体验ONLYOFFICE 8.1版本桌面编辑器

ONLYOFFICE官网 在当今的数字化办公环境中,选择合适的文档处理工具对于提升工作效率和团队协作至关重要。ONLYOFFICE 8.1版本桌面编辑器,作为一款集成了多项先进功能的办公软件,为用户提供了全新的办公体验。今天,我们将深入探索…...

建议csdn赶紧将未经作者同意擅自锁住收费的文章全部解锁,别逼我用极端手段让你们就范

前两天我偶然发现csdn竟然将我以前发表的很多文章锁住向读者收费才让看。 csdn这种无耻行径往小了说是侵犯了作者的版权著作权,往大了说这是在打击我国IT领域未来的发展,因为每一个做过编程工作的人都知道,任何一个程序员的学习成长过程都少不…...

Pycharm一些问题解决办法

研究生期间遇到关于Pycharm一些问题报错以及解决办法的汇总 ModuleNotFoundError: No module named sklearn’ 安装机器学习库,需要注意报错的sklearn是scikit-learn缩写。 pip install scikit-learnPyCharm 导包提示 unresolved reference 描述:模块…...

ONLYOFFICE 桌面编辑器 8.1 发布:全新 PDF 编辑器、幻灯片版式、增强 RTL 支持及更多本地化选项

目录 什么是ONLYOFFICE? ONLYOFFICE 主要特点包括: 官网信息: 1. 功能齐全的 PDF 编辑器 1.1 编辑 PDF 文本 1.2 插入和修改对象 1.3 创建和填写表单 2. 幻灯片版式功能 2.1 快速应用幻灯片版式 2.2 动画窗格的改进 3. 文档编辑、…...

Linux高并发服务器开发(六)线程

文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性(了解)8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…...

Google发布Gemma 2轻量级开放模型 以极小的成本提供强大的性能

除了 Gemini 系列人工智能模型外,Google还提供 Gemma 系列轻量级开放模型。今天,他们发布了 Gemma 2,这是基于全新架构设计的下一代产品,具有突破性的性能和效率。 Gemma 2 有两种规格:90 亿 (9B) 和 270 亿 (27B) 个参…...

精品UI知识付费系统源码网站EyouCMS模版源码

这是一款知识付费平台模板,后台可上传本地视频,批量上传视频连接, 视频后台可设计权限观看,免费试看时间时长,会员等级观看,付费观看等功能, 也带软件app权限下载,帮助知识教育和软件…...

深入解析PyTorch中.pth文件的保存与加载机制

1. 揭开.pth文件的神秘面纱 第一次接触PyTorch时,看到那些以.pth结尾的文件,你是不是也和我当初一样充满疑惑?这些看似普通的文件,实际上是PyTorch模型持久化的关键。简单来说,.pth文件就像是给AI模型拍的一张"照…...

Ansys与Adams刚柔耦合仿真实战:从模态分析到MNF文件生成全流程解析

1. 为什么需要刚柔耦合仿真? 刚接触机械系统仿真的朋友可能会有疑问:为什么不能直接用刚性体模型做动力学分析?这个问题我刚开始做项目时也纠结过。简单来说,现实世界中没有绝对的刚性体,所有物体在受力时都会发生形变…...

Ostrakon-VL-8B智能代理(Agent)实践:自动化巡检餐厅后厨

Ostrakon-VL-8B智能代理实践:自动化巡检餐厅后厨 你有没有想过,如果餐厅后厨能有一个不知疲倦、眼力超群的“数字监工”,每天自动检查安全隐患和操作规范,那会是什么场景?过去,这可能需要一个经验丰富的厨…...

SUPER COLORIZER 构建智能Agent:自动识别图像内容并匹配历史色彩方案

SUPER COLORIZER 构建智能Agent:自动识别图像内容并匹配历史色彩方案 你有没有想过,给一张黑白老照片上色,如果能像专业设计师一样,看一眼就知道该用什么色调?比如一张森林的照片,系统能自动联想到“秋日暖…...

Qwen2.5-VL-3B视频识别实战:从环境搭建到显存优化的踩坑记录

Qwen2.5-VL-3B视频识别实战:从环境搭建到显存优化的全流程指南 当开发者第一次尝试用Qwen2.5-VL-3B处理视频内容时,往往会遇到各种预料之外的挑战。从依赖包缺失到显存爆炸,从环境配置到参数调试,每一步都可能成为阻碍项目推进的绊…...

Qwen3-4B Instruct-2507实际作品:用户说‘我要创业’→商业计划书框架生成

Qwen3-4B Instruct-2507实际作品:用户说‘我要创业’→商业计划书框架生成 1. 引言:当创业想法遇到AI助手 “我要创业!” 这句话背后,往往是一个激动人心的想法,但随之而来的是一连串的现实问题:我的商业…...

不止于复现:用Fluent UDF模拟化学反应放热的3个高级技巧与收敛性优化

不止于复现:用Fluent UDF模拟化学反应放热的3个高级技巧与收敛性优化 在储氢反应器仿真领域,许多工程师能够完成基础的能量源项UDF加载,却常常陷入残差震荡、计算结果失真的困境。本文将从三个实战维度,分享如何让化学反应放热模拟…...

《计算机网络》再学习

1.TCP/IP与OSI模型1)TCP/IP模型应用层:为程序提供网络服务。协议:HTTP,DNS与FTP等传输层:提供端到端的通信服务,确保数据的可靠传输。协议:TCP与UDP网络层:负责数据包的路由与转发。…...

TIG电弧熔池一体化与MIG电弧熔滴蒸汽一体化

TIG电弧熔池一体化MIG电弧熔滴蒸汽一体化最近在搞焊接数值模拟的朋友估计都被TIG和MIG的热力耦合模型折腾过。这俩工艺看着都是电弧焊,实际在建模时完全不是一个次元的难度。今天咱们就扒一扒TIG熔池和MIG熔滴这对冤家的建模套路。先说TIG电弧熔池一体化建模。核心难…...

逆向工程必备:用aardio和Sunny中间件抓取手机App封包的3种实战姿势

逆向工程实战:aardio与Sunny中间件的移动端封包拦截艺术 在移动应用安全研究领域,封包拦截与分析是理解应用通信逻辑的关键入口。不同于传统的PC端抓包,移动环境面临着证书绑定、代理检测等更复杂的防御机制。aardio配合Sunny中间件构建的轻量…...