中间件--ClickHouse-9--MPP架构(分布式计算架构)
1、MPP 架构基础概念
MPP(Massively Parallel Processing 大规模并行处理) 是一种分布式计算架构,专门设计用来高效处理大规模数据集。在这种架构下*,数据库被分割成多个部分,每个部分可以在不同的服务器节点上并行处理*。这意味着,当执行一个查询时,它可以被分解为许多小的任务,并且这些任务可以同时在多个节点上运行,从而极大地提高查询性能和系统的整体吞吐量。
MPP(大规模并行处理)是一种分布式计算架构,其核心特点是:
(1)、共享无(Share-Nothing):每个节点独立存储和计算,节点间通过网络通信,无共享资源(如内存或磁盘)。
(2)、分布式并行计算:数据分片存储在多个节点上,查询时各节点并行处理自己的数据分片,最终合并结果。
(3)、高扩展性:通过增加节点数线性提升计算和存储能力。
ClickHouse的MPP架构是其高性能查询的核心支撑,尤其适用于OLAP场景(如大数据分析、实时报表等)。
2、ClickHouse 的 MPP 架构设计
(1)、核心组件
ClickHouse的MPP架构主要由以下组件构成:
说明:
-
协调节点
协调节点(Coordinator)也称为查询发起节点,是客户端连接并提交查询请求的地方。这个节点负责解析查询、制定执行计划,并将执行任务分配给相关的数据节点。此外,它还负责收集来自各个数据节点的中间结果,并对它们进行整合以生成最终的查询结果返回给客户端。 -
数据节点
实际存储数据并执行由协调节点分配的任务的节点。每个数据节点都包含一部分完整的数据集,并能够独立地执行查询任务。这种设计使得查询可以并行执行,从而提高查询性能。
(2)、ClickHouse中的分片机制
在ClickHouse中,数据通常会根据一定的规则被分割成多个部分,每部分被称为一个“分片”。分片可以跨多个服务器部署,这有助于扩展系统容量以及提升查询处理速度。
- 每个分片都可以配置为独立运行,即所有副本都是平等的,没有明确的领导者或跟随者之分。
- 在某些高可用性配置中,可能会采用类似主备(Primary-Secondary)的复制方案,其中有一个主要副本(可以视为leader)负责写操作,而其他副本同步该主要副本的数据。然而,读操作可以从任意副本执行,以此提供负载均衡和故障转移能力。
- 在ClickHouse中,分片并不严格遵循leader-follower结构,而是依赖于具体的配置和需求。这种灵活性允许用户根据自己的应用场景选择最合适的部署方式。对于需要高可用性的场景,可以通过设置多副本和适当的复制策略来实现。而对于追求极致性能的应用,则可以考虑通过增加分片数量来横向扩展系统。
(3)、数据分片与分布
- 分片策略:
数据按规则(如哈希、范围)分发到不同分片,常见策略包括:- 哈希分片:cityHash64(column) 将数据均匀分布到分片。
- 范围分片:按时间或数值范围划分数据(如按年分区)。
- 副本机制:
每个分片有多个副本(如 3 副本),通过 ZooKeeper 管理元数据和故障转移。
3、查询执行流程
以下是 ClickHouse 分布式查询的典型执行流程:
(1)、查询解析与优化
- 协调节点(Coordinator)解析 SQL,生成逻辑执行计划。
- 根据分布式表的元数据,确定参与计算的分片。
(2)、分布式执行
- 协调节点将查询计划分发到各个分片节点。
- 分片节点并行计算:每个节点独立处理本地数据,执行扫描、过滤、聚合等操作。
- 数据交换(Data Shuffling):若需要跨分片聚合(如 GLOBAL IN PROGRESS),数据通过网络传输。
(3)、结果合并
- 协调节点收集各分片的中间结果,进行最终聚合或排序。
- 返回最终结果给客户端。
(4)、核心特性
4、MPP 架构的优势
(1)、高性能查询
- 并行计算:数据分片并行处理,线性提升计算能力。
- 向量化执行:通过 SIMD 指令并行处理数据块(如 4-8 行同时计算)。
- 列式存储:减少 I/O,加速过滤和聚合操作。
(2)、水平扩展
- 弹性扩容:通过增加分片或副本,线性提升存储和计算能力。
- 动态分片:支持在线添加节点,无需停机。
(3)、高可用性
- 副本容错:副本节点故障时自动切换,保证服务连续性。
- 数据冗余:副本存储相同数据,避免单点故障。
(4)、低延迟
- 分布式计算:减少单节点负载,避免资源争用。
- 本地计算:数据存储与计算在同一节点,减少网络延迟。
5、MPP 架构的典型应用场景
(1)、大数据分析
- 场景:分析 PB 级日志数据(如用户行为、点击流)。
- 示例:
-- 查询过去一年各地区的销售额SELECT region, SUM(sales) FROM distributed_sales_table WHERE date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY region;
- 优势:分片并行计算,秒级返回结果。
(2)、实时报表
- 场景:实时生成业务报表(如广告投放效果、用户活跃度)。
- 示例:
-- 实时统计当前小时的用户登录次数SELECT COUNT(*) FROM distributed_login_events WHERE event_time >= NOW() - INTERVAL 1 HOUR;
(3)、复杂聚合查询
- 场景:多维度聚合(如按时间、地域、产品分类统计)。
- 示例:
-- 按天、地区、产品分类统计销售额SELECT date, region, product_category, SUM(sales) FROM distributed_sales GROUP BY date, region, product_category;
6、MPP 架构的实现细节
(1)、分布式表(Distributed Table)
- 定义:通过 Distributed 引擎创建逻辑表,指向分片的本地表。
sql示例:
CREATE TABLE distributed_table (id UInt64,name String,create_time DateTime) ENGINE = Distributed('cluster_name', 'local_database', 'local_table', rand());
- 参数说明: - cluster_name:集群名称。 - local_database:本地数据库名。 - local_table:本地表名。 - rand():分片键(如随机分片)。
(2)、分片与副本配置
- 分片配置示例:
sql示例:
-- 创建分片和副本(通过 ZooKeeper 管理)CREATE CLUSTER company_cluster LOCAL(shard 1,'192.168.1.100:9000')AS company_replica1;CREATE CLUSTER company_cluster shard 1(replica 1,'192.168.1.100:9000');
(3)、查询优化技巧
- 分区裁剪(Partition Pruning):
通过 PARTITION BY 定义分区,查询时自动过滤无关分区。
sql示例:
CREATE TABLE sales (id UInt64,amount Float64,create_time DateTime) ENGINE = MergeTree()PARTITION BY toYYYYMM(create_time)ORDER BY id;
- 预聚合(Aggregation Pushdown):
在分片内完成部分聚合,减少数据传输量。
sql示例:
SELECT region, SUM(sales) FROM distributed_sales GROUP BY region SETTINGS distributed_aggregation = 1;
7、MPP 架构的局限性
(1)、复杂 JOIN 的限制
- 跨分片的 JOIN 需要全表数据传输,可能产生性能瓶颈。
- 建议通过预处理或物化视图优化。
(2)、数据一致性延迟
- 分布式事务仅保证最终一致性,不支持跨分片 ACID 事务。
(3)、配置复杂度
- 需要合理设计分片键,避免数据倾斜(如哈希分片键选择不当)。
8、总结
ClickHouse 的 MPP 架构 通过分布式并行计算、列式存储和向量化执行,实现了 “亿级数据秒级响应” 的性能。其核心优势在于:
- 高性能:适合海量数据的分析型查询。
- 高扩展:通过分片和副本轻松扩展存储和计算能力。
- 易用性:通过 SQL 接口和分布式表透明化分布式计算。
在实际应用中,合理设计分片策略、利用分区裁剪和预聚合,可以最大化 MPP 架构的性能优势。对于需要处理 PB 级数据的 OLAP 场景(如日志分析、实时报表),ClickHouse 是一个极具竞争力的选择。
逆风翻盘,Dare To Be!!!
相关文章:
中间件--ClickHouse-9--MPP架构(分布式计算架构)
1、MPP 架构基础概念 MPP(Massively Parallel Processing 大规模并行处理) 是一种分布式计算架构,专门设计用来高效处理大规模数据集。在这种架构下*,数据库被分割成多个部分,每个部分可以在不同的服务器节点上并行处理*。这意味着ÿ…...
如何在PDF.js中改造viewer.html以实现PDF的动态加载
在PDF.js中改造viewer.html实现PDF动态加载,需结合参数传递、文件流处理及跨域配置等技术。以下是综合多个技术方案的核心实现步骤: 一、基础参数传递法 1. URL参数动态加载 通过修改viewer.html的URL参数传递PDF路径,适用于静态文…...
Android——动画
帧动画 帧动画就是很多张图片,一帧一帧的播放,形成的一个动画效果。 frame.xml <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"http://schemas.android.com/apk/res/android">&l…...
基于linux 设置无线网卡Monitor模式 sniffer抓包
硬件 TP-WN722N 开源无线网卡 网卡设置成抓包模式,条件是什么? 硬件条件 网卡芯片支持监听模式,外置天线或高增益天线可提升抓包效果驱动与软件条件:正确的驱动程序系统与权限条件 Linux:原生支持(Kali …...
Ubuntu18.04安装Qt5.12
本文介绍了在Ubuntu18.04环境下安装QT QT5.12相关安装包下载地址 https://download.qt.io/archive/qt/5.12/ Linux系统下Qt的离线安装包以.run结尾 (sudo apt-get install open-vm-tools open-vm-tools-desktop解决无法paste的问题) 安装 1.cd命令 终端进入对应的文件夹下面 2.…...
克服储能领域的数据处理瓶颈及AI拓展
对于储能研究人员来说,日常工作中经常围绕着一项核心但有时令人沮丧的任务:处理实验数据。从电池循环仪的嗡嗡声到包含电压和电流读数的大量电子表格,研究人员的大量时间都花在了提取有意义的见解上。长期以来,该领域一直受到对专…...
PDF.js 生态中如何处理“添加注释\添加批注”以及 annotations.contents 属性
我们来详细解释一下在 PDF.js 生态中如何处理“添加注释”以及 annotations.contents 属性。 核心要点:PDF.js 本身主要是阅读器,不是编辑器 首先,最重要的一点是:PDF.js 的核心库 (pdfjs-dist) 主要设计用于解析和渲染…...
L38.【LeetCode题解】四数之和(双指针思想) 从汇编角度分析报错原因
目录 1.题目 2.分析 去重的代码 错误代码 3.完整代码 提交结果 1.题目 四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元…...
【第48节】探究汇编使用特性:从基础到混合编程
目录 引言 一、调用约定的奥秘 1.1 . C调用约定(_cdecl) 1.2 stdcall调用约定(_stdcall) 1.3 fastcall快速调用约定(_fastcall) 1.4 thiscall调用约定(C类成员函数) 二、X64汇…...
【jenkins】首次配置jenkins
第一步,输入管理员密码 cat /var/jenkins_home/secrets/initialAdminPassword第二步,点击安装推荐的插件 第三步,创建管理员用户 第四步,返回实例 第五步, 升级jenkins 第六步, 修复提示 第七步,…...
Python 项目文档编写全攻略:从入门到自动化维护
引言 在软件开发领域,完善的文档可提升 40% 的团队协作效率(来源:IEEE 2022 年开发者调查报告 ^^1^^)。本文将深入探讨 Python 项目文档的最佳实践,涵盖文档生成工具、注释规范、自动化维护等关键环节。 一、Python 文…...
基于 React 和 CodeMirror 实现自定义占位符编辑器
npm git 在前端开发中,我们经常需要实现各种复杂的编辑器功能,比如代码编辑器、富文本编辑器等。本文将介绍如何基于 React 和 CodeMirror 实现一个带有自定义占位符功能的编辑器,这种编辑器在模板系统、表单设计器等场景中非常有用。 一…...
GitHub Copilot在产品/安全团队中的应用实践:处理Markdown、自动化报告与电子表格、使用CLI命令等
本文来源github.com,由GitHub中国授权合作伙伴-创实信息翻译整理。 在当今的快节奏时代,技术和非技术团队之间的协作至关重要,事实证明,GitHub Copilot等工具已成为不可或缺的助手。这些由AI驱动的工具已不只是开发者的“秘密武器…...
嵌入式系统中Flash操作全面解析与最佳实践
嵌入式系统中Flash操作全面解析与最佳实践 一、Flash存储器基础与分类 Flash存储器是嵌入式系统中最重要的非易失性存储介质,根据内部架构和工作原理主要分为两大类: 1.1 NOR Flash与NAND Flash对比 特性NOR FlashNAND Flash架构随机存取架构串行存取…...
tomcat 的安装与启动
文章目录 tomcat 服务器安装启动本地Tomcat服务器 tomcat 服务器安装 https://tomcat.apache.org/下载 Tomcat 10.0.X 启动本地Tomcat服务器 进入 Tomcat 的 bin...
Flash存储器(二):SPI NAND Flash与SPI NOR Flash
目录 一.存储架构 二.接口与封装 三.特性对比 四.典型应用场景 4.1 SPI NOR Flash 4.2 SPI NAND Flash 五.技术演进与市场趋势 六.选择建议 6.1 选择SPI NOR的场景 6.2 选择SPI NAND的场景 SPI NAND Flash和SPI NOR Flash是嵌入式设备中常用的存储器。下面通过全面对…...
第 7 期:DDPM 采样提速方案:从 DDPM 到 DDIM
本期关键词:采样加速、DDIM 推导、可控性提升、伪逆过程、代码实战 前情回顾:DDPM 的采样瓶颈 在前几期中,我们构建了一个完整的 DDPM 生成流程。但是你可能已经发现: 生成一张图像太慢了!!! 原因是: DDPM 要在 T 个时间步中一步步地去噪,从 x_T → x_0。而通常 T 至…...
axios 模拟实现
axios 模拟实现 包含[发送请求,拦截器,取消请求] 第一步 , axios模拟发送请求 //使用 xhr 发送请求function xhr_adpter(config){return new Promise(function handle(resolve,reject){let xhr new XMLHttpRequest();xhr.open(config.method, config.url,true);xhr.onreadys…...
架构师面试(三十一):IM 消息收发逻辑
问题 今天聊一下 IM 系统最核心的业务逻辑。 在上一篇短文《架构师面试(三十):IM 分层架构》中详细分析过,IM 水平分层架构包括:【入口网关层】、【业务逻辑层】、【路由层】和【数据访问层】;除此之外&a…...
hadoop三大组件的结构及各自的作用
1 HDFS 1.1功能 HDFS 是 Hadoop 的分布式文件系统,用于存储和管理海量数据。它具有高容错性、高吞吐量和可扩展性,能够在多个节点上存储和管理大规模数据 1.2架构:采用主从架构,由一个 NameNode 和多个 DataNode 组成。NameNode…...
GEE学习笔记 29:基于GEE的多源Landsat合成与植被指数时序提取
基于GEE的多源Landsat合成与植被指数时序提取 🌿 1.写在前面 | 基于GEE的Landsat多尺度植被指数提取脚本📌 2.常用植被指数计算公式2.1. 🌿 NDVI(归一化植被指数)Normalized Difference Vegetation Index2.2. 🌱 EVI(增强型植被指数)Enhanced Vegetation Index2.3.…...
负载均衡的策略
目的:将请求均衡分发到后台的服务器 算法: 随机算法:随机数获取服务器加权随机算法:根据权重,增加某些服务器(性能比较好等)选择的随机比例轮询算法:轮流分发给服务器加权轮询算法…...
AWS Elastic Beanstalk的部署Python Flask后端服务(Hello,World)
问题 最近需要使用AWS Elastic Beanstalk来部署Python的Flask后端web接口。这里先做一个最简单的Flask Hello,World接口服务程序。 Flask工程与代码 创建本地虚拟环境 conda create -n flask python3.13 # 激活 conda activate flaskapp.py from flask import …...
Hadoop的三大结构及各自的作用?
1.HDFS 作用: 存储海量数据,支持高容错(数据自动备份)和高吞吐量(适合大文件读写)。 采用主从架构: NameNode:管理文件系统的元数据(如文件目录结构)。 Dat…...
在Ubuntu系统中安装和升级RabbitVCS
在Ubuntu系统中安装和升级RabbitVCS 目前在ubuntu中使用svn的GUI工具,已经安装了。想升级一下。 当前遇到的问题是,我想用它看看我当前的代码对应的版本号,然后再决定是否update。但是,好像我看不出来。根本不如在windows使用To…...
深入理解红黑树:原理、实现与应用
深入理解红黑树:原理、实现与应用 引言 红黑树(Red-Black Tree)是计算机科学中一种重要的自平衡二叉查找树。它通过简单的规则和高效的调整策略,保证了插入、删除、查找等操作的时间复杂度均为 O(log n)。红黑树广泛应用于实际开…...
Java学习手册:Java并发编程最佳实践
在Java并发编程中,遵循最佳实践可以显著提高程序的性能、可靠性和可维护性。本文将总结Java并发编程中的关键最佳实践,帮助开发者避免常见陷阱并编写高效的并发程序。 1. 选择合适的并发工具 Java提供了丰富的并发工具,选择合适的工具可以简…...
接口自动化测试(二)
一、接口测试流程:接口文档、用例编写 拿到接口文档——编写接口用例以及评审——进行接口测试——工具/自动化框架进行自动化用例覆盖(70%)——输出测试报告 自动化的目的一般是为了回归 第一件事情:理解需求,学会看接口文档 只需要找到我…...
C++类和对象上
1. 面向对象编程与面向过程编程的比较 我们一开始接触的C语言就是一门面向过程编程的语言,而C就是一门面向对象编程的语言。那么这两者有什么区别呢? 举个例子,就比如说点外卖,如果是C语言的话,那么在程序的编写过程…...
hadoop的三大结构及各自的作用
Hadoop 分布式文件系统(HDFS) 存储大量数据:HDFS 被设计用于在商品硬件上存储海量数据,它将大文件分割成多个数据块,并分布存储在集群中的不同节点上,支持数据的可靠存储和高效访问。提供数据冗余和容错机制…...
珈和科技遥感赋能农业保险创新 入选省级卫星应用示范标杆
为促进空天信息与数字经济深度融合,拓展卫星数据应用场景价值,提升卫星数据应用效能和用户体验,加速卫星遥感技术向民生领域转化应用,近日,湖北省国防科工办组织开展了2024年湖北省卫星应用示范项目遴选工作。 经多渠…...
香港服务器CPU对比:Intel E3与E5系列核心区别与使用场景
香港服务器的 CPU 配置(核心数与主频)直接决定了其并发处理能力和数据运算效率,例如高频多核处理器可显著提升多线程任务响应速度。在实际业务场景中,不同负载需求对 CPU 架构的要求存在显著差异——以 Intel E3 和 E5 系列为例,由于两者在性…...
【人工智能】DeepSeek 与 RAG 技术:构建知识增强型问答系统的实战
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 本文深入探讨了如何利用 DeepSeek R1 模型结合检索增强生成(RAG)技术,构建一个高效的知识增强型问答系统。RAG 技术通过结合信息检索与生…...
得佳胜哲讯科技 SAP项目启动会:胶带智造新起点 数字转型新征程
在全球制造业加速向数字化、智能化转型的浪潮中,胶带制造行业正迎来以“自动化生产、数据化运营、智能化决策”为核心的新变革。工业互联网、大数据分析与智能装备的深度融合,正推动胶带制造从传统生产模式向“柔性化生产精准质量控制全链路追溯”的智慧…...
超导体的应用价值:超导磁探测技术开启科技与生活的新变革
科技的飞速发展,带来了一种新型材料的快速应用,那就是超导体材料。超导体的特性,能够为当今社会众多领域带来革命性的变革,也将极大的改变我们现在的生活质量。 超导体的特性 超导体是指在特定温度下的电阻会突然消失,…...
UNION和UNION ALL的主要区别
UNION和UNION ALL的主要区别在于处理重复数据和排序的方式。 UNION和UNION ALL都是SQL语言中用于合并两个或多个SELECT语句结果集的关键字。它们的主要区别如下: 1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,而UNION ALL不会…...
软件项目验收报告模板
软件项目验收报告 一、项目基本信息 项目名称XX智能仓储管理系统开发单位XX科技有限公司验收单位XX物流集团合同签订日期2023年3月15日项目启动日期2023年4月1日验收日期2024年1月20日 二、验收范围 入库管理模块(包含RFID识别、库存预警)出库调度模…...
第五章 SQLite数据库:5、SQLite 进阶用法:JOIN、UNION、TRIGGER、INDEX、ALIAS、INDEXED BY 等模块
一、JOIN:跨表查询的核心机制 1. JOIN 类型总览 JOIN 是连接多个表获取综合信息的关键手段。常见 JOIN 类型如下: INNER JOIN(内连接):仅返回两个表中满足连接条件的行。LEFT OUTER JOIN(左连接…...
中间件--ClickHouse-10--海量数据存储如何抉择ClickHouse和ES?
在Mysql数据存储或性能瓶颈时,采用冷热数据分离的方式通常是一种选择。ClickHouse和Elasticsearch(ES)是两个常用的组件,但具体使用哪种组件取决于冷数据的存储目的、查询模式和业务需求等方面。 1、核心对比 (1&…...
JESD204B标准及其在高速AD采集系统中的应用详解
一、JESD204B协议的本质与核心价值 JESD204B是由JEDEC制定的第三代高速串行接口标准(2011年发布),专为解决高速ADC/DAC与FPGA/ASIC间数据传输瓶颈而设计。其核心突破体现在: 速率革命性提升 支持每通道最高12.5Gbps(通…...
给予FLUX更好的控制:FLUX.1-dev-ControlNet-Union-Pro-2.0
Shakker Labs FLUX.1-dev-ControlNet-Union-Pro-2.0 一、模型概述 Shakker Labs发布的FLUX.1-dev-ControlNet-Union-Pro-2.0是一个统一的ControlNet模型,专为FLUX.1-dev模型设计。该模型在前一版本基础上进行了多项改进,包括移除模式嵌入以减小模型尺寸…...
Hadoop的三大结构及其作用?
Hadoop是一个分布式存储和计算框架,其三大核心组件是HDFS(Hadoop Distributed File System)、YARN(Yet Another Resource Negotiator)和MapReduce。它们各自有着重要的作用,共同构成了Hadoop生态系统的基础…...
langgraph框架之初识
1.什么是langgraph? LangGraph 是一个用于构建可控代理的底层编排框架。在AI中,代理也就是执行动作的智能体,也就是agent。使用这个框架可以构建一个可以自由控制的智能执行体,它可以帮我们做许多事情,如下࿱…...
3个实用的脚本
1. Linux 系统清理临时文件脚本 该脚本用于清理系统中 /tmp 目录下超过 7 天的临时文件。 #!/bin/bash# 清理 /tmp 目录下超过 7 天的文件 find /tmp -type f -atime 7 -exec rm -f {} \;# 清理 /var/tmp 目录下超过 7 天的文件 find /var/tmp -type f -atime 7 -exec rm -f {…...
Vue3 Composition API与十大组件开发案例详解
文章目录 一、Vue3核心API解析1.1 Composition API优势1.2 核心API 二、十大组件开发案例案例1:响应式表单组件案例2:动态模态框(Teleport应用)案例3:可复用列表组件案例4:全局状态通知组件案例5࿱…...
万用表判断MOS好坏
无论什么封装,D极一般在正面看的上面,或者焊盘面积最大的一面: 【零】烧个洞的那种,不用量了,一眼损坏 【一】万用表的二极管档位测量 检修:使用万用表的二极管档位,S极接红表笔,黑…...
算法驱动光场革命:SLM技术引领智能光学新时代
◀背景引入▶ 空间光调制器本质上是一种能够对光波的振幅、相位或偏振状态进行空间分布调制的动态光学器件,我司自主研发的SLM产品采用硅基液晶技术,通过电信号控制液晶分子的排列状态,实现对入射光波的精确调控。这种精确调控能力使得SLM成…...
webgl入门实例-11WebGL 视图矩阵 (View Matrix)基本概念
WebGL 视图矩阵 (View Matrix) 在WebGL中,视图矩阵(View Matrix)定义了观察者(相机)在世界空间中的位置和方向,它实现了从世界坐标系到相机坐标系的转换。 什么是视图矩阵? 视图矩阵是一个4x4的矩阵,用于: 将场景从…...
ESP32 搭建IDF+Vscode环境(详细教程)
1. IDF环境安装 1.1 ESP-IDF介绍 ESP-IDF (Espressif IoT Development Framework) 是 Espressif( 乐鑫) 公司提供的面向ESP32 系列 的官方开源开发框架,用于开发物联网应用。ESP-IDF 的特点是高度的集成性和可移植性,提供了完整的 SDK,…...
精准计量+AI管控——安科瑞助力高校水电管理数字化转型
安科瑞顾强 传统管理痛点:效率低、隐患多、成本高 高校后勤水电管理长期面临多重挑战:人工抄表需宿管逐层逐户记录,耗时耗力且易出现漏抄、错抄,导致费用核算不公;老旧机械式电表误差率高达5%-10%,计量纠…...