如何评估和观测 IoTDB 所需的网络带宽?

news2024/9/28 19:43:08

27af4a1b1b7547a0bbb86e47ac7bdf21.jpeg

IoTDB 推荐网络配置+监控网络 I/O 一网打尽!

网络数据传输速度太慢?延迟太高?

网络的硬件配置如何确定?

网络流量过大导致拥塞?

在现代计算机系统和应用程序中,网络 I/O 性能是决定整体系统表现的关键因素之一。无论是数据库、文件服务器,还是各类应用程序,都依赖高效的网络 I/O 操作来确保数据传输速度和系统可扩展性。在 IoTDB 集群环境中,网络 I/O 的重要性尤为突出,特别是在处理大量测点数据、客户端请求以及集群内部通信时。

本文将首先介绍 IoTDB 数据库集群部署过程中针对网络、存储和负载的推荐配置,尤其是在处理海量测点数据和多副本备份时,如何进行有效的配置和性能优化。接着,我们将探讨如何使用 IoTDB 监控工具查看网络 I/O 使用情况。

01

如何估算网络负载与带宽需求?

步骤一:接入负载估算

接入负载计算主要用于估算系统或集群在特定工作负载下的数据接入量,即系统每秒钟需要处理的数据写入(接收)量。这对于 IoTDB 这种高性能时序数据库尤为重要,因为它通常需要持续接收和处理大量设备数据。

在 IoTDB 的典型应用场景中,接入负载通常以数据点的采集频率和每秒需要写入的数据量为基础进行计算。公式如下:

接入负载 = 测点总数 × 采集频率 × 单测点字节数 × 副本数

  • 测点总数:需要接入的测点总数,每个测点会按照一定频率采集数据。

  • 采集频率:每个测点每秒钟采集数据的次数。

  • 单测点字节数:每个测点每次采集的数据量。根据数据类型的不同,数据量也有所差异。

    • 例如:Double 类型数据:8 字节(数据) + 8 字节(时间戳) = 16 字节

  • 副本数量:副本数决定同一数据被保存的副本数量,从而影响磁盘存储和网络负载。写入数据副本的数量,副本数越多,所需的写入量越大。

  • 压缩比:落盘文件的压缩比率,IoTDB 中压缩比率通常在 5 - 20 之间,如果一个 Plain 文件占用 100 MB,在压缩之后占用 10 MB,那么压缩率就是 10。

Note:目前压缩比只针对磁盘,网络 IO 暂时没有压缩

举一个实际例子:假设系统中有 80 万测点,每个测点每秒采集一次,数据类型以 Double(8 字节)为主,压缩率为 10,在 IoTDB 中为双副本存储,则接入负载估算如下:

  • 每个测点每秒的数据量

    • 每个测点每秒写入一次数据,每次写入 16 字节(8 字节数据 + 8 字节时间戳)。

  • 80 万个测点每秒的数据量

    • 计算所有测点每秒的总数据量为:16B × 800000 测点 x 2 副本  = 24.4 MB

因此,80 万个测点每秒需要写入的数据量约为 24.4 MB

步骤二:带宽需求估算

网络带宽需求主要取决于数据写入时的网络流量。在双副本模式下,系统每秒的写入数据量为 24.4 MB。为了确保网络不会成为瓶颈,特别是在高峰写入时段,需要合适的带宽来支撑这个写入负载。

  • 最小带宽需求

    • 双副本平均每秒写入量为 24.4 MB/s

    • 因此,网络的最小带宽需求为 24.44 MB/s。为了确保流量高峰时的稳定性,通常带宽需求会设置为最小需求的 2 倍

  • 建议网卡带宽

    • 以目前估算出的平均写入流量 24.4 MB/s 为基准,建议使用千兆网卡(1Gbps),其最大传输速率为 128 MB/s,足以满足系统写入时的网络带宽需求,并提供额外的冗余。

    • 如果数据量进一步增加,或者预期系统扩展,需要升级到万兆网卡(10Gbps),其最大传输速率为 1.28 GB/s

通过对设备数量、测点数、数据类型、采集频率和副本数的分析,我们得出了 IoTDB 在双副本配置下的负载估算为 24.4 MB/s

02

如何观测和优化网络 IO?

介绍完如何根据负载来估算网络带宽,接下来介绍如何对网络 IO 进行观测,为用户提供准确便利的可视化信息,能够更好的判断网络瓶颈和针对性优化。

(1)配套监控工具:网络 IO 监控的好帮手

IoTDB 提供了一个全面的网络 IO 监控方案,通过自带的监控框架定期采集系统的网络 IO 性能指标,并将其存入 Prometheus,同时在配套监控面板工具中展示。

16e62a5fbe798c1970de2be3ac180cbe.png

与传统网络监控工具相比,IoTDB 的内置网络 IO 监控方案具有以下显著优势:

  • 更长周期的数据记录与趋势跟踪相比于 ifstat、iftop 等实时监控工具,IoTDB 能够长期记录数据并进行趋势分析。

  • 更丰富的网络 IO 观测指标提供了比传统工具更全面的网络 IO 监控指标,支持进程级别或更细粒度的网络流量监控。

  • 更友好的监控可视化与 Grafana 深度集成,以图表形式直观展示网络 IO 数据,提升了数据的可读性,并帮助用户快速识别网络性能瓶颈。

(2)网络 IO 核心监控指标详解

我们以一个实际的例子进行分析,该 IoTDB 所在节点包含两个网卡,一个是对外的 eno1 网卡,一个是环回接口 lo 虚拟网卡,他们的网络 IO 指标表现如下:

  • 网络速度分析(Net Speed)监控面板显示网络速度在特定时段(如 12:00 和 16:30)出现明显波动,接收速率超过 80 MiB/s,而非高峰时段网络流量接近 0 MiB/s。这表明系统在这些时段承载了较大的外部数据流输入。

  • 数据包速率分析(Packet Speed)数据包接收速率在高峰时段达到 50 kp/s,非高峰时段降至接近 0 kp/s。这进一步证明系统在高峰时段主要负责接收外部数据。

  • 数据量传输分析(Receive/Transmit Data Size)系统总共接收到的数据量为 14.4 TiB,远大于系统发送的数据量(1.86 TiB)。环回接口(lo)的接收和发送数据量均为 7.04 TiB,表明大量数据处理在本地进行。

综合分析上述指标,可以得到以下结论:

  • 高峰期网络压力系统在特定时段会遇到较大的写入请求,接收速率高达 80 MiB/s,可能是由于 IoTDB 在这些时段执行大批量数据写入或数据采集任务所致。

  • 带宽与处理能力当前的网络环境能够支持大流量接收,但随着时间推移和数据量增长,高峰期频繁出现或加剧可能会影响整体性能。

03

总结

通过上述详细的网络负载估算分析,我们可以计算出 IoTDB 单节点所需的网卡规格。根据分析结果,我们建议在日常负载需求下使用千兆网卡,而在流量较大或高峰期的场景中,可以选择万兆网卡。在部署 IoTDB 集群后,我们可以通过 Grafana 仪表盘来实时监控网络 IO,其提供了详细的网络性能信息,帮助发现潜在的瓶颈或问题。结合关键的网络速度、数据总量和包速率指标,可以及时优化系统性能,并确保网络负载在合理范围内。

至此,IoTDB 与网络带宽的故事就告一段落了。如果您对 IoTDB 有更多想法或问题,欢迎留言交流!

规上企业应用实例

能源电力:中核武汉|国网信通产业集团|华润电力|大唐先一|上海电气国轩|清安储能|某储能厂商|太极股份

航天航空:中航机载共性|北邮一号卫星

钢铁冶炼:宝武钢铁|中冶赛迪

交通运输:中车四方|长安汽车|城建智控|德国铁路

智慧工厂与物联:PCB 龙头企业|博世力士乐|德国宝马|京东|昆仑数据|怡养科技|绍兴安瑞思

75d0a02ffe674bd1e5ce05634c6e4094.gif

22d671a98578c0eea19e0e2b6d4200e0.jpeg

0ed3faee8ca81cdc8e5f5dcfa97bc418.jpeg

756db11561edde51944f240663f61391.jpeg

d4cb8a0526b542640110977318cce384.gif

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

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

相关文章

微服务 OpenFeign 解析部署使用全流程

目录 1、什么是OpenFeign 1、Feign是什么??http请求 2、OpenFeign是什么 3、Feign和openFeign有什么区别 2、应用 1、 需要开启nacos 和redis 2、准备工作 【1.对springsession做改动】 【2.对springsession-1做改动】 3、实现http请求管理 4、…

借助spring的IOC能力消除条件判断

shigen坚持更新文章的博客写手,记录成长,分享认知,留住感动。个人IP:shigen 在前边讲到了如何借助HashMap、枚举类、switch-case消除条件判断,这里讲到我们最常见的用spring的IOC能力来消除代码中的逻辑判断。其实大部…

精准测试在基金团队应用实践

以下为作者观点: 一、引言 精准测试是一套计算机测试辅助分析系统,精准测试的核心组件包含,软件覆盖率分析、用例和代码的双向追踪、智能回归测试用例选取、缺陷定位、测试用例聚类分析、测试用例自动生成系统,这些功能完整的构…

3-2 AUTOSAR RTE对Runnable的作用

返回总目录->返回总目录<- 一、前言 通过RTE给runnable提供触发事件。 runnable是可以被触发的,但是需要通过RTE来实现这个触发和调用runnable通过RTE给runnable提供所需资源。 RTE将runnable需要的一些资源通过接口传输给它(Port的实现)将BSW和SWC做隔绝。 因此OS和r…

前端大模型入门:使用Transformers.js手搓纯网页版RAG(二)- qwen1.5-0.5B - 纯前端不调接口

书接上文&#xff0c;本文完了RAG的后半部分&#xff0c;在浏览器运行qwen1.5-0.5B实现了增强搜索全流程。但受限于浏览器和模型性能&#xff0c;仅适合于研究、离线和高隐私场景&#xff0c;但对前端小伙伴来说大模型也不是那么遥不可及了&#xff0c;附带全部代码&#xff0c…

干货 | 2024大模型十大趋势(免费下载)

导读&#xff1a;近日&#xff0c;在2024世界人工智能大会上&#xff0c;腾讯正式发布了《2024大模型十大趋势——走进“机器外脑”时代》报告。目前&#xff0c;这一报告正在AI产业界各大社群快速传播。报告中&#xff0c;腾讯研究院试图通过10个关键性的趋势&#xff0c;去理…

c++(AVL树及其实现)

一、AVL树的概念 AVL树是最先发明的自平衡⼆叉查找树&#xff0c;AVL是⼀颗空树&#xff0c;或者具备下列性质的⼆叉搜索树&#xff1a;它的 左右子树都是AV树&#xff0c;且左右子树的高度差的绝对值不超过1。AVL树是⼀颗高度平衡搜索⼆叉树&#xff0c; 通过控制高度差去控…

python开源代码自学问题解决(requests+openpyxl+pymysql)

目的 解决一下在一个开源代码中遇到的问题&#xff0c;作者已经学完了python的基础内容&#xff0c;因此找了一份开源的python代码进行学习&#xff0c;下面这份开源代码主要作用就是在拉勾网上获取与Python相关的职位信息&#xff0c;并将这些信息保存到本地的MySQL数据库中&…

【Linux】初始进程

目录 基本概念 PCB task_struct task_struct内容分类 组织进程 查看进程 查看正在运行的进程信息 获取pid和ppid 创建子进程 基本概念 一个已经加载到内存中的程序&#xff0c;叫做进程&#xff0c;正在运行的程序&#xff0c;叫做进程&#xff0c;进程是担当分配系统…

如果你不愿意冒一切风险,就不要成为创业者:如何建立一个年收入 1800 万美元的支付业务

作者&#xff1a;Austin Mac Nab&#xff0c;VizyPay 的 CEO 兼创始人 在创业初期&#xff0c;如果有人告诉我&#xff0c;我需要冒一切风险才能成功&#xff0c;我大概会吓得绕道而行。但事实是&#xff0c;如果你不愿意冒一切风险&#xff0c;就不要成为创业者。本着这个信念…

「JavaScript深入」彻底搞懂JS原型与原型链

JavaScript深入 — 原型与原型链 一、原因二、使用class实现继承普通的类实现继承 三、原型四、原型链小结原型原型链prototype和proto 引申 一、原因 JavaScript中除了基础类型外的数据类型&#xff0c;都是对象&#xff08;引用类型&#xff09;。但是由于其没有类&#xff…

央行放大招!潘行长发话了,现在能“贷款炒股“,这是真的吗?

9月&#xff0c;央行掌门人潘行长最新放话了&#xff0c;二套房贷款利率也得下调。这降准的利好一出&#xff0c;股市小涨了一波后又回到了原位&#xff0c;给全球金融市场带来了一股不同寻常的暖流。而非常有意思的是&#xff0c;在这次众多的金融政策大礼包当中&#xff0c;有…

CentOS8.5.2111(3)实验之DHCP服务器架设

一、实验目标 1&#xff0e;掌握DHCP服务器的主配置文件各项申明参数及操作及其含义 2. 具备DHCP 服务器、中继服务器的配置能力 3. 具备测试客户端正常获取服务器分配地址的能力 4. 具备DHCP服务器故障排除能力 二、实训原理/流程 &#xff08;一&#xff09;项目背景 …

媒界:助力民生保障 长城“消防炮”即将批量交付硬核守护万家灯火

一大波“消防炮”即将列装&#xff01; 日前&#xff0c;长城炮官方账号发布一条“‘消防炮’来了”的视频&#xff0c;引发广泛关注。视频显示一批长城炮车型已完成消防装备加装&#xff0c;华丽变身“消防炮”&#xff0c;整装待发&#xff0c;即将交付全国消防&#xff0c;…

创建型模式-简单工厂-工厂方法-抽象工厂

简单工厂模式 例题 uml 代码 package simpleFactory; import java.lang.management.OperatingSystemMXBean; import java.util.Scanner; //定义Person class Person{ public void say(){} } class Man extends Person{ public void say() { System.out.…

Transformer是不是BERT、GPT的妈?看完就知道了

Transformer变异衍生出来了两个超强悍的预训练模型 一、Transformer模型 Transformer是近年来深度学习领域中备受瞩目的模型之一&#xff0c;其核心思想是通过自注意力机制和位置编码来捕捉输入序列中的长距离依赖关系。 自注意力机制让模型在处理每个输入元素时能够关注到所有…

Mac电脑上最简单安装Python的方式

背景 最近换了一台新的 MacBook Air 电脑&#xff0c;所有的开发软件都没有了&#xff0c;需要重新配环境&#xff0c;而我现在最常用的开发程序就是Python。这篇文章记录一下我新Mac电脑安装Python的全过程&#xff0c;也给大家一些思路上的提醒。 以下是我新电脑的配置&…

Java入门2——基本数据类型详解

今天我们系统学习一下Java的八种基本数据类型&#xff0c;和C语言有些还是不太一样的&#xff0c;还是要打起精神&#xff0c;好好学习~ 一、Java的数据类型 首先我们画个图&#xff0c;了解一下Java的数据类型 以上就涵盖了Java的数据类型&#xff0c;那么下面&#xff0c;我…

C语言自定义类型:联合体

目录 前言一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体的⼀个练习 总结 前言 前面我讲到C语言中的自定义结构——结构体&#xff0c;其实C语言中的自定义结构不只有结构体&#xff0c;还有枚举和联合体&am…

交通 | 上门配送or自提点配送?最后一公里配送中的需求引导问题

编者按&#xff1a; 为提高最后一公里配送的效率&#xff0c;本文将客户激励与不确定的路线决策相结合&#xff0c;建立了一个两阶段随即规划问题&#xff0c;并开发了一种精确式的分支定界算法进行求解。 摘要&#xff1a; 为了提高最后一公里配送的效率&#xff0c;零售商…