Kafka系统 - 硬件资源规划

2024-04-16 09:38

本文主要是介绍Kafka系统 - 硬件资源规划,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:《Apache Kafaka 实战》

前言

主要包括以下几个方面

  • 磁盘类型
  • 磁盘容量
  • CPU
  • 内存
  • 带宽
  • 其他配置优化

1. 磁盘类型

1.1 机械硬盘 与 固态硬盘 选择?

机械硬盘,性价比高,完全可以满足集群的使用

固态硬盘,有钱就上

1.2 一堆普通磁盘(JBOD) 与 磁盘整列(RAID) 选择?

JBOD,性价比高,使用没有问题

RAID,有钱就上,提供冗余的数据存储空间,天然负载均衡

2. 磁盘容量规划

Kafka的每条消息都保存在实际的物理磁盘中,消息默认会被broker保存一段时间之后清除。

计算关键因素:每天消息数量,平均消息大小,消息留存时间,副本数,是否启用压缩,预留磁盘空间

2.1 场景计算
  • (1) 每天1亿条信息 x 保存2份 x 平均一条消息大小1KB / 1000 / 1000 = 200GB 磁盘空间
  • (2) 预留空间,其他数据文件存储约10%的磁盘空间,200GB + 20GB = 220GB
  • (3) 保存一周的时间,220GB x 7 ~= 1.5TB
  • (4) 开启压缩,平均压缩比假设0.5,1.5TB x 0.5 = 0.75TB

3. 内存规划

除了消息会存在磁盘来说,同时消息还会有缓存,具体就是操作系统的页缓存(page cache)

3.1 结论
  • (1) 尽量分配跟多的内存给操作系统的page cache
  • (2) 不要为broker设置过大的堆内存,最好不要超过6G
  • (3) page chache大小至少要大于一个日志段的大小

4. CPU

Kafka 不是计算密集型的系统,追求多核而非高时钟频率。

但是如果client端启用了消息压缩,除了必要的CPU资源外,broker端也有可能需要大量的CPU资源。但是Kafka 0.10.0.0改进了broker端的消息处理,需要注意消息版本号匹配即可。

4.1 结论
  • (1) 多核系统,CPU核数最好大于8
  • (2) clients端核broker端消息版本一致,且版本高于0.10.0.0。否则需要多配置一些资源

5. 带宽规划

Kafka是在网络间传输大量数据的分布式数据管道,带宽资源很重要,并且容易成为瓶颈

5.1 场景计算

假设用户网络环境中的带宽是1Gb/s,用户的业务目标是每天1小时处理1TB的业务消息,那么需要多少台机器呢?

  • 1GB x 分配70%宽带资源 ~= 710Mb/s (kafka单台broker的带宽)
  • 710MB/s x 使用1/3的资源防止突发情况 ~= 240Mb/s (这个1/3,可以提高一点)
  • 1TB 1h = 292MB 1s = 2336Mb / 240Mb ~= 10台 x 2个副本 = 20 台
5.2 结论
  • (1) 尽量使用高速网络
  • (2) 根据网络条件和业务情况评估集群数量
  • (3) 避免使用跨机房网络

6. 其他优化配置

  • 使用最新版本的Kafka,且支持Kafka Stream
  • 推荐为每个broker配置多个日志路径,每个路径都独立挂载在不同的磁盘上,极大加速Kafka消息产生的速度

这篇关于Kafka系统 - 硬件资源规划的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908433

相关文章

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Kafka拦截器的神奇操作方法

《Kafka拦截器的神奇操作方法》Kafka拦截器是一种强大的机制,用于在消息发送和接收过程中插入自定义逻辑,它们可以用于消息定制、日志记录、监控、业务逻辑集成、性能统计和异常处理等,本文介绍Kafk... 目录前言拦截器的基本概念Kafka 拦截器的定义和基本原理:拦截器是 Kafka 消息传递的不可或缺

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用