1. 首页 > 快讯

Apache Kafka 的极速演绎

这篇文章给大家聊聊关于Apache Kafka 的极速演绎,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

有几种技术使 Apache Kafka 如此快速:

  • 低延迟消息传递
  • 批量数据和压缩
  • 水平扩展

低延迟消息传递

大多数传统的数据系统使用随机存取内存(RAM)进行数据存储,因为RAM提供了极低的延迟。让我们看看使用RAM的优缺点。

  • 优点: 这种方法使它们变得非常快速。
  • 缺点: RAM的成本远高于磁盘,特别是当系统中有数百GBPS的数据流时。

Kafka 避免了随机存取内存,它通过顺序I/O和零拷贝原理实现低延迟消息传递。

顺序I/O:

Kafka 在存储和缓存消息时大量依赖文件系统。有一种普遍的看法是“磁盘很慢”,这意味着高寻址时间。想象一下,如果我们可以避免寻址时间,我们可以实现与RAM一样低的延迟。Kafka 通过顺序I/O来实现这一点。

Kafka 的基本概念是日志(log);这是一种仅附加、完全有序的数据结构。

下面是一个演示日志流(队列)的图示,生产者以不可变和单调的方式在日志流的末尾追加,而订阅者/消费者可以维护自己的指针以指示当前消息的处理。

每当生产者发布一条消息时,它都会收到包含记录偏移量的确认。第一条发布到分区的记录的偏移量为0,第二条为1,以此类推,以递增的顺序。消费者从由偏移量指定的位置消费数据,然后定期将其位置保存在日志中以进行提交。保存偏移量的目的是让另一个消费者在消费者实例崩溃时可以从其位置恢复。

零拷贝原理:

当我们从内存中提取数据并将其发送到网络时会发生什么。

    图像概念来自:https://developer.ibm.com/articles/j-zerocopy/

    图像概念来自:https://developer.ibm.com/articles/j-zerocopy/

    批量数据和压缩

    高效的压缩需要将多个消息一起压缩,而不是分别压缩每个消息。

    Kafka 支持这一点,允许递归消息集。一批消息可以被聚合在一起压缩,并以这种形式发送到服务器。这批消息将以压缩形式写入,保持在日志中并只能由消费者解压缩。

    假设带宽为10MB/s,一次性发送10MB数据比逐个发送10000条消息要快得多(假设每条消息占用100字节)。

    压缩会提高消费者的吞吐量,但会增加一些解压缩成本。

    Kafka 支持 GZIP 和 Snappy 压缩协议。

    水平扩展

    首先让我们了解什么是垂直扩展。假设对于传统数据库服务器,当负载增加时,处理的一种方法是添加更多的资源,例如 CPU、RAM、SSD 等。这被称为垂直扩展。它有一些缺点,如下所示:

    • 每台硬件都有限制,无法无限制地向上扩展
    • 如果机器宕机怎么办?通常需要停机时间

    水平扩展通过添加更多的机器来解决相同的问题。

    Kafka 具有在数千台机器之间为单个主题拥有数千个分区的能力,这意味着 Kafka 可以处理大量负载。

    用户评论

    毒舌妖后

    这篇文章一定聊聊Kafka的那些性能黑魔法!

        有10位网友表示赞同!

    见朕骑妓的时刻

    我一直都知道Kafka速度很快,但想了解一下背后的原理。

        有12位网友表示赞同!

    ー半忧伤

    期待深入了解Kafka是如何实现高速处理的能力的。

        有11位网友表示赞同!

    陌離

    最近准备学习Kafka,这篇文章能给我一些启发吗?

        有8位网友表示赞同!

    不忘初心

    51CTO的文章质量一直都不错,相信这篇文章也很 enlightening!

        有14位网友表示赞同!

    逃避

    听说Kafka很适合大数据应用,这篇分析应该很有用。

        有14位网友表示赞同!

    一个人的荒凉

    看完以后我才知道原来Kafka是这么神奇!

        有17位网友表示赞同!

    迁心

    对消息队列比较感兴趣,也想了解一下Kafka的优势。

        有6位网友表示赞同!

    我就是这样一个人

    需要学习一下Kafka,这篇文章可以作为入门指南吧?

        有6位网友表示赞同!

    遗憾最汹涌

    看标题感觉很有技术含量,应该会有很多干货知识。

        有17位网友表示赞同!

    杰克

    现在很多公司都用Kafka做流数据处理,这篇文章能让我了解一下它的核心原理。

        有17位网友表示赞同!

    凉月流沐@

    一直想找个靠谱的地方学习Kafka,没想到这篇51CTO的文章挺适合的!

        有14位网友表示赞同!

    屌国女农

    文章分析Kafka快速的原因应该很有参考价值。

        有16位网友表示赞同!

    聽風

    准备在项目中用Kafka,这篇文章可以帮助我更好地理解它。

        有14位网友表示赞同!

    蝶恋花╮

    感觉这篇51CTO的文章写得比较透彻,值得一读!

        有9位网友表示赞同!

    花海

    对开源项目感兴趣,想了解一下Apache Kafka的具体性能特点。

        有15位网友表示赞同!

    断秋风

    这篇文章应该能让我更深入地理解Kafka的工作机制。

        有16位网友表示赞同!

    醉枫染墨

    文章分析应该能帮我明白为什么Kafka那么火!

        有8位网友表示赞同!

    面瘫脸

    感觉51CTO的文章一直都比较专业实用的,这次也不例外吧?

        有17位网友表示赞同!

    本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6163.html

    联系我们

    在线咨询:点击这里给我发消息

    微信号:666666