如何确定Apache Kafka的大小和规模

调整或扩展Kafka以获得最佳成本和性能的第一步是了解数据流平台如何使用资源。这里给一些实用的建议。

实现Apache Kafka的团队,或者扩展他们对强大的开源分布式事件流平台的使用,通常需要帮助理解如何根据他们的需求正确地调整和扩展Kafka资源。这可能很棘手。

无论您是在考虑云资源还是预处理硬件资源,了解Kafka集群将如何利用CPU、RAM和存储(并了解应遵循的最佳实践),都将使您处于一个更好的位置,可以立即获得正确的规模。结果将是成本和性能之间的优化平衡。让我们来看看Kafka是如何使用资源的,浏览一个有指导意义的用例,以及优化Kafka部署的最佳实践。

1、Kafka如何利用CPU的?

一般来说,Apache Kafka在CPU利用率方面比较轻。在选择基础设施时,我倾向于拥有更多的核心而不是更快的核心,以提高并行化水平。影响CPU使用量的因素有很多,其中最主要的是SSL身份验证和日志压缩。其他考虑因素是每个代理拥有的分区数量、有多少数据将进入磁盘、Kafka消费者的数量(此处详细介绍),以及这些消费者离实时性有多近。如果您的数据消费者正在获取旧数据,那么从磁盘获取数据将花费CPU时间。我们将在下一节中对此进行深入探讨。

了解CPU使用背后的这些基本驱动因素对于帮助团队正确确定可用CPU功率至关重要。

2、Kafka如何使用RAM的?

RAM需求主要取决于需要在内存中保留多少“热”数据并可用于快速访问。一旦收到消息,Kafka就会将数据交给底层操作系统的页面缓存,后者负责将数据保存到磁盘。

从大小和可伸缩性的角度来看,RAM的正确数量取决于您的用例的数据访问模式。如果您的团队将Kafka部署为实时数据流(使用转换并公开消费者将在几秒钟内提取的数据),则RAM需求通常很低,因为只需要在内存中存储几秒钟的数据。或者,如果您的Kafka消费者需要提取几分钟或几小时的数据,那么您需要考虑RAM中需要多少数据。

CPU和RAM利用率之间的关系很重要。如果Kafka可以访问RAM中的数据,那么它就不必花费CPU资源从磁盘中获取数据。如果RAM中没有可用的数据,代理程序将从磁盘中提取数据,从而消耗CPU资源,并在数据传递中增加一些延迟。实现Kafka的团队在调整CPU和RAM资源时应该考虑到这种关系。

3、Kafka如何使用存储

有几个因素会影响Kafka存储需求,如保留时间、数据转换和适当的复制因素。考虑这个例子:每天有几TB的数据落在一个Kafka主题上,使用Kafka对该数据执行六次转换以保留中间数据,每个主题保留数据三天,复制因子设置为3。很容易看出,团队可以根据使用Kafka的方式,将存储的数据需求快速增加一倍、三倍或四倍。您需要充分了解这些因素才能正确确定存储大小。

4、Kafka预定大小示例

以下是我们工作中的一个真实例子,帮助媒体娱乐行业的服务提供商正确确定预先部署的Kafka的规模。该业务的峰值吞吐量入口为每秒10GB。组织需要存储10%的数据(每天总计9TB),并将这些数据保留30天。从复制的角度来看,该公司将存储该数据的三个拷贝,总存储需求为810TB。为了应对潜在的峰值,明智的做法是在预期需求的基础上增加30-40%的空间,这意味着组织应该有1.2PB的可用存储空间。它们不使用SSL,而且大多数消费者都需要实时数据,因此CPU和RAM需求不如存储重要。他们确实有一些批处理进程在运行,但延迟不是一个问题,所以数据来自磁盘是安全的。

虽然这个特定的用例仍在构建中,但该示例演示了使用基本数据计算给定Kafka实现的最小有效规模的过程,然后从中探索扩大场景的潜在需求。

5、Kafka容量规划最佳实践

了解给定用例的特定体系结构——主题设计、消息大小、消息量、数据访问模式、消费者数量等——可以提高预测大小的准确性。在考虑每个代理的适当存储密度时,请考虑在由于热点或代理丢失而重新分配分区期间重新流式传输数据所需的时间。如果你将100TB连接到Kafka代理,但它失败了,那么你正在重新传输大量数据。这可能会导致网络饱和,从而阻碍入口或出口流量,并导致生产商失败。有一些方法可以抑制回流,但你会发现平均恢复时间显著增加。         

6、常见的误解

现在,越来越多的供应商为Kafka提供专有的分层存储,并将Kafka作为数据库或数据湖。卡夫卡不是一个数据库。虽然您可以使用Kafka进行长期存储,但您必须了解其中的权衡。

从Kafka作为实时数据流引擎到充当数据库或数据湖的演变属于一种熟悉的模式。专门为特定用例设计的技术有时会成为某些用户的锤子,然后每个问题都像钉子一样。这些用户将尝试修改专门构建的工具以适应他们的用例,而不是查看已经解决问题的其他技术。

这让我想起了Apache Cassandra意识到来自关系世界的用户正在努力理解数据模型在扁平行中的重要性。用户在开始存储数据之前不习惯理解访问模式,他们只会在现有表上添加另一个索引。在Cassandra v3.0中,该项目公开了物化视图,类似于索引关系表,但实现方式不同。从那时起,这个功能就充满了问题,并被标记为实验性的。我觉得Kafka作为数据库或数据湖的想法注定会有类似的命运。

7、找到合适的尺寸以获得最佳成本和Kafka性能

在没有首先了解Kafka资源利用率的情况下匆忙进入Kafka实现的团队经常会遇到问题和障碍,这些问题和障碍教会了他们艰难的道路。通过花时间了解Kafka的资源需求,团队将实现更高效的成本和性能,他们将能够更有效地支持他们的应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow学习:使用官方模型和自己的训练数据进行图片分类

前言 教程来源:清华大佬重讲机器视觉!TensorFlowOpencv:深度学习机器视觉图像处理实战教程,物体检测/缺陷检测/图像识别 注: 这个教程与官网教程有些区别,教程里的api比较旧,核心思想是没有变…

分享一下怎么做多门店商城系统

随着互联网的快速发展,传统实体店面临着巨大的挑战。为了更好地适应市场变化,提高竞争力,多门店商城系统应运而生。这种新型的商业模式,旨在通过线上线下融合,实现门店之间的互联互通,提高运营效率&#xf…

PyQt5的一些问题(持续更新中)

以后会不定时更新 PyQt5警告 DeprecationWarning: sipPyTypeDict() is deprecated, the extension module should use sipPyTypeDictRef() instead https://stackoverflow.com/questions/77333277/deprecationwarning-sippytypedict-is-deprecated-pyqt5 要么升级Python版本…

【会议征稿通知】2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024)

2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024) 2024 4th International Conference on Neural Networks, Information and Communication Engineering 2024第四神经网络、信息与通信工程国际学术会议(NNICE 2024&#xff0…

物理世界的互动之旅:Matter.js入门指南

本文简介 戴尬猴,我是德育处主任 欢迎来到《物理世界的互动之旅:Matter.js入门指南》。 本文将带您探索 Matter.js,一个强大而易于使用的 JavaScript 物理引擎库。 我将介绍 Matter.js 的基本概念,包括引擎、世界、物体和约束等…

CSS笔记-狂神

1、什么是CSS 如何学习 CSS是什么CSS怎么用(快速入门)CSS选择器(重点难点)美化网页(文字,阴影,超链接,列表,渐变…)盒子模型浮动定位网页动画(特…

【IO面试题 二】、怎么用流打开一个大文件?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:怎么用流打开一个大文件…

手写效果流式响应(langchain+fastapi+js)

这是一个前后端完整可用的小项目 后端是 Python 的 FastAPI 框架,调用 langchain 进行 openai 的模型对话。前端是纯html css javascript,没调用任何第三方库,方便集成到 Vue React 等现有前端项目。 聊天界面: 效果就是提问之…

vue项目中定制化音频展示,wavesurfer.js基本使用

效果图&#xff1a; wavesurfer是一个可定制的音频波形可视化&#xff0c;建立在Audio API和HTML5 Canvas之上。 基本使用&#xff1a; <body><script src"https://unpkg.com/wavesurfer.js"></script><div id"waveform"></di…

软考系统架构师知识点集锦二:软件工程

一、考情分析 二、考点精讲 2.1 软件过程模型 &#xff08;1&#xff09;原型模型 典型的原型开发方法模型。适用于需求不明确的场景,可以帮助用户明确需求。可以分为[抛弃型原型]与[演化型原型] 原型模型两个阶段: 1、原型开发阶段;2、目标软件开发阶段。 &#x…

【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类

深度学习模型类 简介按滑动时间窗口切割数据集模型类CNNGRULSTMMLPRNNTCNTransformerSeq2Seq 简介 本文所定义模型类的输入数据的形状shape统一为 [batch_size, time_step&#xff0c;n_features]&#xff0c;batch_size为批次大小&#xff0c;time_step为时间步长&#xff0c…

设计模式:桥接模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

上一篇《适配器模式》 下一篇《装饰器模式》 简介&#xff1a; 桥接模式&#xff0c;它是一种结构型设计模式&#xff0c;它的主要目的是将抽象部分与具体实现部分分离&#xff0c;使它们都可以独立地变化。…

Mingw下载---运行vscodeC++文件

下载 下载网址&#xff1a; https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 翻到最下面&#xff0c;选择win64的安装&#xff1a; 下载完&#xff0c;解压到没有空格和中文字符的路径。不然在vscode中运行不了C代码。

软考高级之系统架构师之数据流图和流程图

数据流图 概述 数据流图&#xff0c;DFD&#xff0c;用于表示业务信息系统中的数据流&#xff0c;它表达系统中的据传从输入到存储间所涉及的程序。采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程&#xff0c;是结构化系统分析方法的主要表达工具…

源码推荐【源码好优多】

一、影视小程序 特点&#xff1a;可独立部署、消耗环境小、安全可靠。使用微信小程序技术开发。部署简单容易。该项目的部署需要具备微擎框架的开发以及部署能力 二、java博客管理系统 博客管理系统是一个融合线上、线下的网民在线交流管理信息化系统。它的使用为网民、运营者搭…

Flutter最全面试题大全

在理解这些问题之前&#xff0c;建议看一下Flutter架构原理&#xff0c;如下链接&#xff1a; https://blog.csdn.net/wang_yong_hui_1234/article/details/130427887?spm1001.2014.3001.5501 目录 一. 有个Text节点&#xff0c;由于文字内容过多&#xff0c;发生了溢出错误&…

C++学习:类的使用--运算符重载

我们知道C可以对函数进行重载&#xff0c;让同名的函数来完成相同的基本操作。其实运算符也是可以重载的&#xff0c;而且有的运算符已经在使用了&#xff0c;就像*&#xff0c;既可以用于地址&#xff0c;又可以用于乘法。 下面是一个计算时间的类 #ifndef MYTIME_H #define…

三步,金蝶K3的数据可视化了

数据可视化的一大特点就是“一图胜千言”&#xff0c;没什么能比图表更直观展现数据的了。那&#xff0c;金蝶K3系统上那海量数据能不能也做成数据可视化报表&#xff1f;操作复杂吗&#xff0c;难度大吗&#xff1f; 换了别的软件来做&#xff0c;操作多、难度大是板上钉钉&a…

排序算法-堆积树排序法(HeapSort)

目录 排序算法-堆积树排序法&#xff08;HeapSort&#xff09; 1、说明 2、算法分析 3、C代码 排序算法-堆积树排序法&#xff08;HeapSort&#xff09; 1、说明 堆积树排序法是选择排序法的改进版&#xff0c;可以减少在选择排序法中的比较次数&#xff0c;进而减少排序…

计算机服务器中了devos勒索病毒怎么办?企业数据库被encryped

计算机网络技术的不断发展&#xff0c;为人们的生活提供了更多的帮助&#xff0c;但也为我们的企业带来了更多的数据安全威胁。近期&#xff0c;云天数据恢复中心收到很多企业的求助&#xff0c;企业的数据库遭到了devos后缀勒索病毒攻击&#xff0c;导致企业数据库无法打开&am…