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

如何确定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的资源需求,团队将实现更高效的成本和性能,他们将能够更有效地支持他们的应用程序。

相关文章:

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

调整或扩展Kafka以获得最佳成本和性能的第一步是了解数据流平台如何使用资源。这里给一些实用的建议。 实现Apache Kafka的团队,或者扩展他们对强大的开源分布式事件流平台的使用,通常需要帮助理解如何根据他们的需求正确地调整和扩展Kafka资源。这可能…...

项目总结-新增商品-Pagehelper插件分页查询

(1)新增商品 工具类: /** * Title: FileUtils.java * Package com.qfedu.common.utils * Description: TODO(用一句话描述该文件做什么) * author Feri * date 2018年5月29日 * version V1.0 */ package com.gdsdxy.common.u…...

java基础篇-环境变量

java基础 编程学习的关键点、重点1.环境变量设置待续 编程学习的关键点、重点 输入输出 Java语言、C语言、Python语言、甚至SQL语言,都需要实战、做大量输入输出等 1.环境变量设置 1.下载jdk安装 jdk官网下载直达链接:https://www.oracle.com/java/te…...

API自动化测试:如何构建高效的测试流程!

一、引言 在当前的软件开发环境中,API(Application Programming Interface)扮演了极为重要的角色,连接着应用的各个部分。对API进行自动化测试能够提高测试效率,降低错误,确保软件产品的质量。本文将通过实…...

MySQL8锁的问题

关键字 mysql 8、lock 问题描述 项目上反馈,一个简单的提交操作需要 40 秒。 抓取 SQL 发现 update gl_credit_bill set verifystate2 where id2761279790403840 执行耗时近40秒解决问题思路 手动执行 SQL,发现非常快,基本排除数据库本身…...

进阶JAVA篇-深入了解 Stream 流对象的创建与中间方法、终结方法

目录 1.0 Stream 流的说明 2.0 Stream 流对象的创建 2.1 对于 Collection 系列集合创建 Stream 流对象的方式 2.2 对于 Map 系列集合创建 Stream 流对象的方式 2.3 对于数组创建 Stream 流对象的方式 3.0 Stream 流的中间方法 3.1 Stream 流的 filter() 中间方法 3.2 Stream 流…...

原型制作的软件 Experience Design mac( XD ) 中文版软件特色

​XD是一个直观、功能强大的UI/UX开发工具,旨在设计、原型、用户之间共享材料以及通过数字技术进行设计交互。Adobe XD提供了开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。xd mac软件特色 体验设计的未来。 使用 Adobe XD 中快速直观、即取即…...

Kotlin中使用ViewBinding绑定控件并添加点击事件

文章目录 效果1、加入依赖2、与控件进行绑定在 Activity 中使用视图绑定 3、监听控件 效果 实现源码 class MainActivity : AppCompatActivity() {lateinit var binding:ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstan…...

Node学习笔记之MongoDB

一、简介 1.1 Mongodb 是什么 MongoDB 是一个基于分布式文件存储的数据库,官方地址 MongoDB: The Developer Data Platform | MongoDB 1.2 为什么选择 Mongodb 操作语法与 JavaScript 类似,容易上手,学习成本低 二、核心概念 Mongodb 中…...

awtk用C语言开发串口通信示例

awtk开发工具封装了串口,可以方便的异步调用,就做个程序试一下吧 在deepinlinux20.9版本调试通过,开始第一步先给系统增加usb串口线驱动 https://download.csdn.net/download/qiaozhangchi/87463972 串口控件ide里没有,需要自己…...

CICD 流程学习(五)Jenkins后端工程构建

案例1:数据库服务部署 MySQL部署 #安装MySQL服务 [rootServices ~]# yum clean all; yum repolist -v ... Total packages: 8,265 [rootServices ~]# yum -y install mysql.x86_64 mysql-server.x86_64 mysql-devel.x86_64 ... Complete! [rootServices ~]# #启动…...

NSS [SWPUCTF 2021 新生赛]sql

NSS [SWPUCTF 2021 新生赛]sql 很明显是sql,有waf。 参数是wllm get型传参,有回显,单引号闭合,回显位3 跑个fuzz看看waf 过滤了空格 and 报错注入 空格->%09 ->like and->&&爆库:test_db -1%27uni…...

【Python机器学习】零基础掌握RandomTreesEmbedding集成学习

如何在高维数据中找到隐藏的结构? 面临大量复杂、高维的数据,例如社交网络分析、电子商务推荐系统或医疗诊断,如何有效地分析和解读这些数据成为一大挑战。一个有效的方法是使用嵌入技术将高维数据转化为低维形式,同时保留其内在结构。这次将介绍一种称为“随机树嵌入”(…...

【C++基础入门】42.C++中同名覆盖引发的问题

一、父子间的赋值兼容 子类对象可以当作父类对象使用&#xff08;兼容性) 子类对象可以直接赋值给父类对象子类对象可以直接赋值给父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象 下面看一个子类对象兼容性的代码&#xff1a; #include <iostream>…...

【C++学习笔记】类和对象(上)

目录 1. 面向对象和面向过程的初步认识 2. 类的引入 3. 类的定义 3.1 类的两种定义方式 3.1.1声明和定义全部放在类体中 3.1.2.类声明放在.h文件中&#xff0c;成员函数定义放在.cpp文件中 4. 类的访问限定符及封装 4.1 访问限定符 4.2 面试题&#xff1a;C中struct…...

TinySnippet轻UI组件开发系列教程 — DataGrid选择事件

应用场景 DataGrid选择一条记录后&#xff0c;希望能够 调用纳流或者打开指定的页面 或者当鼠标悬停在一行时弱出一个指定的页面在右下角&#xff08;移开就关闭弹出页&#xff09; 这些都是我们能够实现的 实现过程 本文以调用纳流为例 下载UI组件 TinySnippet-v4.1.2导…...

热搜榜:最热门的话题文本排行榜API接口

近年来&#xff0c;随着社交媒体的兴起&#xff0c;热门话题的数量和更新速度都在不断增加&#xff0c;因此热门话题排行榜的需求也越来越大。在这篇文章中&#xff0c;我们将探讨如何使用#热搜榜# API接口获取最热门的话题文本排行榜&#xff0c;并给出相关代码示例。 一、API…...

vue中替换全局字体

一、背景 产品说项目要拿去展会展示&#xff0c;但现在项目字体是微软雅黑&#xff0c;不支持商用&#xff0c;需要全局替换思源字体。 二、下载字体 推荐一个网址&#xff0c;好用 字体天下&#xff0c;点击跳转 下载好的文件如下&#xff1a; 三、引入字体 1、在项目…...

【AGC】.p12证书文件如何获取MD5

近期在使用DevEco Studio3.1打包应用时遇到了一个问题&#xff0c;我使用Build—Generate Key and CSR创建了密钥库文件。 我这里需要获取到创建的.p12证书文件的MD5值&#xff0c;于是在控制台使用了keytool -list -v -keystore D:\myapp.p12命令获取证书指纹&#xff0c;但是…...

vue2 quill 视频上传 ,基于ruoyi vue,oss

包含两种上传方式&#xff0c;第一种点开弹新页面可选url和点击上传。本文中是第二种&#xff0c;自己拼的。像点击上传图片一样&#xff0c;直接传video文件&#xff0c;原创不易&#xff0c;纯纯踩坑&#xff1b; 因为现阶段能搜索到的内容&#xff0c;99.5%都是一样的内容&…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...

宠物车载安全座椅市场报告:解读行业趋势与投资前景

一、什么是宠物车载安全座椅&#xff1f; 宠物车载安全座椅是一种专为宠物设计的车内固定装置&#xff0c;旨在保障宠物在乘车过程中的安全性与舒适性。它通常由高强度材料制成&#xff0c;具备良好的缓冲性能&#xff0c;并可通过安全带或ISOFIX接口固定于车内。 近年来&…...