什么让 Apache Kafka 如此快速?

Kafka 支持高吞吐量、高度分布式、容错性强的平台,能够以低延迟传递消息。

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

1.低延迟消息传递。2.批量数据和压缩。3.水平扩展。

低延迟消息传递:

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

优点: 这种方法使它们变得非常快速。

缺点: RAM的成本远高于磁盘,特别是当系统中有数百GBPS的数据流时。

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

顺序I/O:

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

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

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

来源:https://kafka.apache.org/intro.html

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

零拷贝原理:

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

?从内存中提取数据,它会将数据从内核上下文复制到应用程序上下文。?将这些数据发送到互联网,它会将数据从应用程序上下文复制到内核上下文。

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

正如您所看到的,将数据在内核上下文和应用程序上下文之间进行复制是多余的,这会消耗CPU周期和内存带宽,尤其是在数据量很大时会导致性能下降。这正是零拷贝原则要解决的问题。

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

批量数据和压缩:

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

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

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

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

Kafka 支持 GZIP 和 Snappy 压缩协议。

水平扩展:

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

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

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

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

原创文章,作者:小技术君,如若转载,请注明出处:https://www.sudun.com/ask/33842.html

(0)
小技术君's avatar小技术君
上一篇 2024年4月16日 上午8:11
下一篇 2024年4月16日 上午8:13

相关推荐

  • CDN延迟高问题怎么解决的

    解决CDN延迟高的问题 CDN(内容分发网络)在网站加速中发挥着重要作用,但有时候用户可能会遇到CDN延迟高的问题,导致网站访问速度变慢。在本文中,我们将探讨解决CDN延迟高问题的…

    2024年3月14日
    0
  • CDN加速的优缺点

    随着互联网技术的飞速发展,CDN(Content Delivery Network,内容分发网络)加速技术已成为提高网站和应用性能的重要手段。CDN通过在全球范围内部署多个服务器节…

    2024年5月4日
    0
  • cdn加速,cdn加速服务器收费标准

    CDN加速:解锁网站速度的新颖法宝 在当今数字时代,网站速度不仅是用户体验的关键因素,更是影响搜索引擎排名和转化率的重要指标之一。无论是电商网站、新闻门户还是企业官网,都希望能够以…

    2024年5月11日
    0
  • 怎样建构DNS解析服务器防护体系?

    域名系统是互联网的一项核心基础服务,它使用分层的分布式数据库来处理互联网上的域名和IP地址之间的映射。DNS是构建安全,灵捷,高可用网络架构的最基础,且最关键的组成部分。那么怎样建…

    2024年5月11日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注