如何为百亿数据请求做资源预估

2024-01-25 09:58

本文主要是介绍如何为百亿数据请求做资源预估,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何为百亿数据请求做资源预估

  • 如何为百亿数据请求做资源预估
    • 基本准则->先考虑要做什么
    • 计算磁盘资源方法
    • 200亿/s的请求,QPS怎么算, 总集群流量是多少, 选择千兆网还是万兆网?
    • 每台kafka机器内存大小配置
    • CPU核心数选型

如何为百亿数据请求做资源预估

收到需求:每天200亿请求,每个请求3k大小,需要4个副本,数据保留5天,数据有3个不同的主题。数据存储在kafka上,需要多少台机器,机器配置是怎样?

基本准则->先考虑要做什么

1.计算磁盘资源:计算一天的存储数据的增量

2.计算并发资源:QPS

3.计算内存资源:计算kafka内存消耗

计算磁盘资源方法

一天一个副本增量: 200亿*3k = 60T

考虑副本数量:60T*4 = 240T

考虑保留天数:240T*5=1200T

按照满负荷算:每台服务器一般12或16个盘,这里取12台: 需要服务器数量 = 1200T/(2T*12个)=50台

需要机器数量:资源磁盘利用率按照50%算: 应对未来的数据增量。 于是,磁盘使用率降低一半,机器数量需要增加一倍 50台 * 2 = 100台。 ( 1200T/(2T12个50%)=100台)

200亿/s的请求,QPS怎么算, 总集群流量是多少, 选择千兆网还是万兆网?

QPS主要计算高峰时间段的QPS数。

二八法则: 80%的请求在20%的时间产生。

00:00-08:00是请求低峰段

08:00-24:00 这16小时是请求高峰段 : 接收的请求 200亿*80% = 160亿请求

高峰期请求量: 这16小时也有高峰段: 16小时20% = 3.2小时 约等3小时 接收 160亿 * 80% = 128亿 的请求

每秒总QPS: 128亿/(3 * 60 * 60)秒 = 118w/s

每台机器QPS:118w/s / 100 = 1.18万/台 ,

总数据流量大小:每条数据大小3k, 单机流量 1.18w * 3k = 34M/s, 计算有4个副本 34M/s4 = 136M/s, 10个消费者,消费者的流量是34M/s10=340M/s。 总流量=生产流量+消费流量=340M/s + 136M/s = 476M/s

集群环境网卡:选择万兆网卡

每台kafka机器内存大小配置

按照上面配置,100台机器,每台磁盘2T*12个。

已知主题是3个,所以总共3个topic。 为了提高每台机器的cpu利用率,生产消费的并行度,每个topic在每台机器分配5个partition, 单个topic有500个partition(100台机器),4个副本,算上副本500*4=2000个partition,3个topic,就是2000 * 3 = 6000个partition

每台机器partiton数量:60个partition(6000个partition/100台机器)

每个分片日志大小是1G/个文件, 按照kafka把数据在内存读写的特点,把1G文件全部进行缓存,需要6000G内存,6000G/100台=60G/台机器。考虑数据读写很快,不需要把1G的内容全部进行缓存,可以50%或者25%放内存。按照50%进行计算, 每台机器内存需要30G。加上kafka的jvm大小(一般配置6G)和操作系统的内存。配置64G的内存

CPU核心数选型

kafka的工作线程特点,主要工作线程ServerSocket类,内部封装了acceptor,processor, handler线程。

其他是一些后台线程和定时器线程等。

acceptorprocessorhandler
默认线程数138
建议线程数3932

总线程数量大概100-200个。

安装生产经验

4core的机器,跑几十的线程,CPU跑满

8core的机器,跑几十个线程,OK

16core机器,跑100-200个线程

建议16core以上的机器,例如20,24核心。

这篇关于如何为百亿数据请求做资源预估的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2