您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

什么让 Apache Kafka 如此快速?

时间:2023-09-12 14:43:50  来源:微信公众号  作者:小技术君

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

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

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

低延迟消息传递

大多数传统的数据系统使用随机存取内存(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 可以处理大量负载。



Tags:Kafka   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  Search: Kafka  点击:(84)  评论:(0)  加入收藏
如何使用Python、Apache Kafka和云平台构建健壮的实时数据管道
译者 | 李睿审校 | 重楼在当今竞争激烈的市场环境中,为了生存和发展,企业必须能够实时收集、处理和响应数据。无论是检测欺诈、个性化用户体验还是监控系统,现在都需要接近即时...【详细内容】
2024-01-26  Search: Kafka  点击:(46)  评论:(0)  加入收藏
深入浅出Kafka:高可用、顺序消费及幂等性
在我们旅行于数据海洋的途中,如果把 Kafka 比作是一艘承载无数信息航行的快船,前文《Kafka实战漫谈:大数据领域的不败王者》已经讲述了如何搭建起这艘快船,让它在起风的早晨开始...【详细内容】
2023-12-18  Search: Kafka  点击:(173)  评论:(0)  加入收藏
7k Star,一款开源的 Kafka 管理平台,功能齐全、页面美观!
Apache Kafka UI 是一个免费的开源 Web UI,用于监控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控...【详细内容】
2023-12-15  Search: Kafka  点击:(129)  评论:(0)  加入收藏
利用Apache Kafka、Flink和Druid构建实时数据架构
译者 | 陈峻审校 | 重楼如今,对于使用批处理工作流程的数据团队而言,要满足业务的实时要求并非易事。从数据的交付、处理到分析,整个批处理工作流往往需要大量的等待,其中包括:等...【详细内容】
2023-12-11  Search: Kafka  点击:(227)  评论:(0)  加入收藏
运维兄弟!Kafka怎么又"超时"了?
现象凌晨,当运维刚躺下,就被业务研发的电话叫醒,"哥们!kafka服务又异常了?影响到业务了,快看看",业务研发给出的异常日志如下:基本分析 集群检查:立即确认kafka集群以及涉及到topic健...【详细内容】
2023-12-07  Search: Kafka  点击:(137)  评论:(0)  加入收藏
图解Kafka适用场景,全网最全!
消息系统消息系统被用于各种场景,如解耦数据生产者,缓存未处理的消息。Kafka 可作为传统的消息系统的替代者,与传统消息系统相比,kafka有更好的吞吐量、更好的可用性,这有利于处...【详细内容】
2023-11-29  Search: Kafka  点击:(183)  评论:(0)  加入收藏
Kafka有哪些应用场景?你能说上来几个?
下面我们来总结一下Kafka的一些应用场景:1、日志处理与分析(最常用的场景)下图显示了典型的 ELK(Elastic-Logstash-Kibana)堆栈。Kafka 有效地从每个实例收集日志流。ElasticSe...【详细内容】
2023-11-28  Search: Kafka  点击:(163)  评论:(0)  加入收藏
Kafka:解锁大数据时代的搜索与分析
在当今大数据时代,数据湖作为一种新兴的数据存储和分析解决方案,正受到越来越多企业的青睐。而作为一种高性能、可扩展的事件流平台,Kafka在数据湖领域发挥着重要的作用。本文...【详细内容】
2023-11-24  Search: Kafka  点击:(287)  评论:(0)  加入收藏
解密Kafka主题的分区策略:提升实时数据处理的关键
Kafka几乎是当今时代背景下数据管道的首选,无论你是做后端开发、还是大数据开发,对它可能都不陌生。开源软件Kafka的应用越来越广泛。面对Kafka的普及和学习热潮,哪吒想分享一...【详细内容】
2023-11-21  Search: Kafka  点击:(180)  评论:(0)  加入收藏
▌简易百科推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  小白debug  微信公众号  Tags:Docker   点击:(12)  评论:(0)  加入收藏
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22    51CTO  Tags:Docker   点击:(10)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  云原生运维圈  微信公众号  Tags:容器   点击:(13)  评论:(0)  加入收藏
如何基于Docker镜像逆向生成Dockerfile
引言你是否曾经遇到过一个想要使用的 Docker 镜像,但却无法修改以适应你的特定需求?或者你可能发现了一个喜欢的 Docker 镜像,但想要了解它是如何构建的?在这两种情况下,将 Docke...【详细内容】
2024-03-07  云原生运维圈  微信公众号  Tags:Docker   点击:(22)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01    简易百科  Tags:Kubernetes   点击:(153)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  匠心独运维妙维效  微信公众号  Tags:容器   点击:(47)  评论:(0)  加入收藏
Docker与Docker Compose入门:释放你应用部署的威力
今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨...【详细内容】
2024-01-17  waynblog  微信公众号  Tags:Docker   点击:(65)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  编程技术汇  今日头条  Tags:Docker   点击:(76)  评论:(0)  加入收藏
如何在 Ubuntu 上安装 Docker
使用 Docker 意味着开启一个新的计算领域,但如果你刚刚开始使用 Docker,安装可能看起来是一项艰巨的任务。在 Ubuntu 上安装 Docker 有两种推荐的方法: 从 Ubuntu 的仓库安装 D...【详细内容】
2024-01-04    Linux中国  Tags:Docker   点击:(124)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  云云众生s  微信公众号  Tags:Kubernetes   点击:(114)  评论:(0)  加入收藏
站内最新
站内热门
站内头条