kafka安装部署之资源评估

server/2024/9/20 7:23:55/ 标签: kafka, 分布式

目录

1、环境资源评估

1.1、操作系统评估

1.2、磁盘评估

1.2.1、磁盘选型评估

1.2.1.1、磁盘类型评估

1.2.1.1、磁盘构成评估

1.2.2、磁盘容量评估

1.3、内存评估

1.4、CPU评估

1.5、带宽评估

1.6、常见线上资源配置

2、安装流程

2.1、安装jdk

2.2、安装zookeeper

kafka-toc" style="margin-left:40px;">2.3、安装kafka


1、环境资源评估

1.1、操作系统评估

        常见的操作系统包括:linux、windows、OS X,其中linux平台部署最多,而且linux也是推荐操作系统,linux操作系统与kafka具备更好的相适性,主要是由于I/O模型的使用和数据网络传输效率。如果好奇具体原因,可以看如下简介:

        常见的I/O模型有:阻塞式I/O,非阻塞式I/O,I/O多路复用、信号驱动I/O和异步I/O。每种I/O模型都有典型的使用场景,比如Socket的阻塞式和非阻塞模式就对应于前两种模型,linux中的select函数属于I/O多路复用模型,windows的IOCP属于异步I/O模型,linux的epoll模型可以看做兼具第三种和第四种模型特性,同时epoll模型比select模型高级,毕竟epoll取消了轮询机制,取而代之的是回调机制。这样当底层连接socket数较多时,可以避免很多无意义的CPU时间浪费。因此当kafka基于linux系统部署可以得到更搞笑的I/O处理性能。

        网络传输效率层面而言,由于kafka需要大量通过网络与磁盘进行数据传输,在linux平台上采用sendfile系统调用,即采用零拷贝技术,有效的改善数据传输性能,在内核驱动程序处理I/O数据逇时候,可以减少甚至完全规避不必要的CPU数据拷贝操作,避免数据在操作系统内核地址空间和用户应用程序地址空间的缓冲区进行重复拷贝。

1.2、磁盘评估

1.2.1、磁盘选型评估

1.2.1.1、磁盘类型评估

        常见的磁盘有HDD(机械硬盘)和SSD(固态硬盘),通常我们没有特殊情况下选择HDD硬盘即可。虽然SSD硬盘相较于HDD硬盘具有更低的寻道时间和存取时间,在性能上的优势很大,但kafka才写入以及读取操作均为顺序操作,不需要频繁寻址,因此SSD的性能优势对于kafka就没有那么重要,相反SSD具有更高的成本劣势。

1.2.1.1、磁盘构成评估

        JBOD(普通磁盘堆积)与RAID(磁盘阵列)的对比上,如果没有特殊要求优先选用JBOD,理由如下:

        RAID结合了磁盘镜像和磁盘条带化两种技术共同保护数据,既实现了不错的性能也提供了很高的可靠性。但是空间镜像会造成数据冗余存储,只能利用50%的磁盘(50%存储数据,50%做镜像备份);

        JBOD采用普通磁盘存储,但是由于kafka本身针对副本存储以及可靠性进行了优化设计,导致RAID对kafka没有明显的性能提升。JBOD的劣势在于普通磁盘损坏概率较大,磁盘损坏会导致broker宕机。所以如果磁盘充足且分区分布均匀合理的情况下,从成本以及性能的综合考虑,JBOD是更具性价比的选择。

1.2.2、磁盘容量评估

       kafka的磁盘容量选择需要考虑一下因素:

  • 新增消息数
  • 消息留存时间
  • 平均消息大小
  • 副本数
  • 是否启用压缩

【评估案例】每天产生1亿条消息,每条消息保存两份并保留7天,平均消息大小为1KB,平均压缩比0.5,再额外预留10%的磁盘空间用于其他存储,那么磁盘的整体容量就是:

        1亿*2*1KB*7天/1024/1024/1024/0.9存储占比*0.5压缩比,大约是0.75TB

1.3、内存评估

        kafka大量依靠文件系统和磁盘保存消息,但是其实还会对消息进行缓存,消息缓存用到的就是内存,更具体的说就是操作系统的页缓存。kafka写入消息时首先将消息写入页缓存,之后再有操作系统将页缓存中的消息写入到文件系统中,在读取消息的时候会首先从页缓存中读取消息,如果页缓存没有命中消息,则从磁盘中进行读取,在直接命中的情况下可以直接避免磁盘I/O操作。因此页缓存的大小对于kafka的读写性能至关重要。kafka对于堆内存使用占比较少。一般情况下broker需要的堆内存不会超过6GB,对于一台16GB内存的机器,页缓存的使用大小可以达到10~14GB。

【内存设计原则】

  1. 尽量分配更多的内存给操作系统页缓存;
  2. 不要为broker设置过大的堆内存,最好不超过6GB;
  3. 页缓存大小至少要大于一个日志段的大小;

1.4、CPU评估

kafka的设计使得kafka看中处理消息的线程数量,同时kafka不是计算型框架,因此对于CPU要求更好的是核数而不是计算频率。

kafka CPU设计原则】使用多核系统,CPU核数据最好大于8,CPU算力选择通用型即可。

1.5、带宽评估

        kafka在网络建进行大量数据传输,带宽资源至关重要。当前主流网络都是千兆或者万兆网络,无论那种网络,对于kafka的带宽要求都足够了。以下是带宽选用原则:

  1. 尽量使用高速网络;
  2. 根据自身网络条件和带宽评估kafka集群的机器数量
  3. 避免使用跨机房网络

对于带宽不做特殊说明,仅在此描述带宽的相关的评估案例:

【场景概述】假设网络环境带宽为1GB/s,用户的业务目标是每天用1小时处理1TB的业务消息,在这种情况下kafka到底需要多少台机器?

【评估方法】

  1. 网络带宽是1GB/s,即每秒传输1GB数据,假设分配的机器为kafka专属使用,且为kafka分配70%的带宽资源,考虑到机器上还有其他的进程使用网络且网卡通常不能用满,超过一定阈值可能会出现网络丢包情况,因此70%的设定实际上是很合理的。那么kafka的单台broker的带宽就是1GB/s * 0.7 = 710MB/s
  2. 710MB/s这是kafka所能使用的最高带宽,用户不能奢望集群平时就一直使用如此多的带宽,毕竟万一碰到 小突发流量,会极容易把网卡“打满”,因此在70%的基础上,一般再截取 1/3,即 710Mb/s/3~240Mb/s。这里的1/3是一个相对保守的数字,用户可以根据自身的业务特点酌情增加。
  3. 根据现有的网络情况,我们明确了单台broker的带宽是 240Mb/s。如果要在1小时内处理1TB的业务消息,即每秒需要处理 292MB左右的数据,也就是每秒2336Mb 数据,那么至 少需要2336/240~10台broker机器
  4. 若副本数是2,那么这个数字还需要再翻1倍,即20台broker机器。根据万兆位网卡来评估broker机器的方法是类似的

1.6、常见线上资源配置

  • 【CPU】24核
  • 【内存】32GB
  • 【磁盘】1TB 7200转 SAS盘两块
  • 【带宽】1GB/s
  • 【文件限制】ulimit -n 1000000
  • 【socket buffer】至少64KB(适用于跨机房网络传输)

2、安装流程

由于kafka安装教程相对非常简单,诸位看官可以自行尝试。

2.1、安装jdk

具体安装教程参见:Linux安装jdk的详细步骤_linux jdk安装-CSDN博客

2.2、安装zookeeper

具体安装教程参见:2.0 Zookeeper 安装配置 | 菜鸟教程

kafka">2.3、安装kafka

具体安装教程参见:https://www.cnblogs.com/sandea/p/12078442.html


http://www.ppmy.cn/server/50116.html

相关文章

理解查准率P、查全率R及Fβ度量怎么得来的

如果得到的是一组样本在两个算法上的一次预测结果,其中每个样本都被赋予了一个为正样本的概率(例如,通过逻辑回归或朴素贝叶斯分类器得到的概率估计),那么可以通过改变不同的阈值点来利用这些预测结果画出PR曲线。 如果…

AGI大辩论,AI安全等级,Sora团队访谈,AI民科,AI提升编程效率

更多内容: https://agifun.love 智源社区 ICML 2024 | 具有动态目标感知片段的药物发现 今天为大家介绍的是来自Sung Ju Hwang团队的一篇论文。基于片段的药物发现是一种在广阔的化学空间中发现药物候选物的有效策略,并已广泛应用于分子生成模型。然而…

普通校验和

校验和是一种用于验证数据完整性的方法,通常包含普通校验和和复杂校验和。这里主要说明普通校验和。 普通校验和:简单,快速,如IPv4协议复杂校验和:复杂,较慢,如文件验证 普通校验和 以16位为…

如何备份和恢复 Docker Desktop 数据

如何备份和恢复 Docker Desktop 数据 在使用 Docker Desktop 进行开发和部署时,备份和恢复 Docker 数据是非常重要的。本文将详细介绍如何在 Docker Desktop 中备份和恢复数据,确保您的容器和相关数据在任何情况下都能得到保护。 为什么需要备份和恢复…

【ARMv8/ARMv9 硬件加速系列 3.3 -- SVE LD2D 和 ST2D 使用介绍】

文章目录 SVE 多向量操作LD2D(加载)LD2D 操作说明LD2D 使用举例ST2D(存储)ST2D 使用举例ST2D 存储示例代码ld2d 和 st2d 小结SVE 多向量操作 在ARMv8/9的SVE (Scalable Vector Extension) 指令集中,st2d和ld2d指令用于向量化的存储和加载操作,具体地,它们允许同时对两个…

Linux机器通过Docker-Compose安装Jenkins发送Allure报告

目录 一、安装Docker 二、安装Docker Compose 三、准备测试用例 四、配置docker-compose.yml 五、启动Jenkins 六、配置Jenkins和Allure插件 七、创建含pytest的Jenkins任务 八、项目结果通知 1.通过企业微信通知 2.通过邮件通知 九、配置域名DNS解析 最近小编接到一…

聊聊语法糖

语法糖(Syntactic sugar)是指编程语言中添加的某种语法,这种语法对语言的功能没有影响,但更方便程序员使用,并能增加程序的可读性,减少代码出错的机会。 历史: 语法糖这一术语是由英国计算机科…

elementui写一个自定义的rangeInput的组件

组件定义 使用el-row确保元素都在一行上对外暴露的prop是minValue和maxValue,但是不建议直接使用,使用计算属性minValueComputed和maxValueComputed更改计算属性的值的不要直接更改计算属性,也不要直接更改原本的prop,通知外层的父…

基于Matlab的细胞计数图像处理系统(GUI界面有报告) 【含Matlab源码 MX_003期】

简介: 本文旨在解决生物血细胞数目统计的挑战,提出了基于图像处理的综合方案。通过MATLAB平台,我们设计并实现了一套完整的细胞图像处理与分析流程。在预处理阶段,采用图像增强和阈值分割等方法,有效地提高了细胞图像的…

隐私计算和机密计算的区别

隐私计算和机密计算都是为了在处理数据时保护数据的安全和隐私,但它们在实现方式和应用场景上有所不同。 隐私计算 (Privacy Computing) 隐私计算主要关注在数据分析和处理过程中如何保护数据的隐私。它的核心目标是确保数据在使用过程中不被泄露,特别…

Spring boot 注解实现幂等性

1. 添加 Spring AOP 依赖 在 pom.xml 中添加如下依赖&#xff1a; <dependencies><!-- Spring AOP dependency --><dependency><groupIdorg.springframework.boot</groupId><artifactIdspring-boot-starter-aop</artifactId></depend…

视频云沉浸式音视频技术能力探索与建设

概述 随着传输技术、显示技术与算力的持续提升&#xff0c;用户对于音视频体验的需求在提高&#xff0c;各家设备厂商也在探索和推出对应的技术与产品。打造空间感的空间视频与空间音频是其中最为关键的2项技术&#xff0c;bilibili视频云在这两项技术领域也进行了相关代探索与…

单目物体测距

单目测距是一种利用单个摄像头来获取场景深度信息的技术。根据搜索结果,以下是一些常见的单目测距方法: 1. **相似三角形法**:这是一种基于几何原理的方法,通过已知物体的尺寸和在图像中的像素宽度来计算物体与相机之间的距离。 2. **基于已知运动的测量方法**:这种方法…

国家商用密码算法-SM4Tool.jar

SM4Tool.jar是指一个特定的Java工具集&#xff0c;用于实现SM4&#xff08;国家商用密码算法之一&#xff09;的加密和解密功能。SM4是一种分组密码算法&#xff0c;广泛应用于中国的各种安全通信场景中&#xff0c;如金融、电子政务、物联网等。 功能 加密与解密&#xff1a;…

PostgreSQL源码分析——WAL日志(二)

接上篇&#xff1a;《PostgreSQL源码分析——WAL日志&#xff08;一&#xff09;》 日志的组成 日志的注册主要是将WAL日志所需的信息保存在内存中&#xff0c;这些信息需要由XLogRecordAssemble函数组装成为最终的日志记录&#xff0c;主要是处理日志记录中与页面&#xff0…

Bureau of Contacts延迟高、卡顿、无法联机怎么办?

Bureau of Contacts是一款最多支持四个人联机玩的恐怖游戏&#xff0c;由MIROWIN开发并发行&#xff0c;6月20日在steam推出抢先体验版&#xff0c;相信喜欢恐怖游戏的玩家已经等不及了。玩家会扮演一名特工&#xff0c;接触并调查超自然现象&#xff0c;游戏分为调查和驱魔两个…

大话设计模式解读03-装饰模式

本篇文章&#xff0c;来解读《大话设计模式》的第6章——装饰模式。并通过C代码实现实例代码的功能。 注&#xff1a;第3~6章讲的是设计模式中的一些原则&#xff08;第3章&#xff1a;单一职责原则&#xff1b;第4章&#xff1a;开放-封闭原则&#xff1b;第5章&#xff1a;依…

Java Web防止同一用户同时登录实现方式

在Java Web应用中防止用户重复登录&#xff0c;主要是通过维护用户的会话状态来实现。 以下是几种常见的实现方式&#xff1a; 1. 使用Session 最直接的方式是利用HTTP Session。 当用户登录成功后&#xff0c;服务器为其创建一个唯一的Session&#xff0c;并将用户信息保存在…

Springboot整合阿里云ONS RocketMq(4.0 http)

1. 引入依赖 <!--阿里云ons&#xff0c;方便的接入到云服务--> <dependency><groupId>com.aliyun.openservices</groupId><artifactId>ons-client</artifactId><version>1.8.4.Final</version> </dependency>2. 配置 配…

Linux系统mysql数据库备份和还原操作

Linux系统mysql数据库备份和还原操作 1、数据备份命令 &#xff08;1&#xff09;备份单个数据库 mysqldump -u username -p test>/home/bak/test20230708.sqlusername&#xff1a;表示数据库用户名称&#xff1b; test&#xff1a;是需要备份的数据库名称&#xff1b; 右…