构建一个支撑10万设备的虚拟电厂IoT平台
构建一个支撑10万设备的虚拟电厂IoT平台
本文通过实践经验以及构想设计分析基于虚拟电厂业务的IoT平台该如何去设计。首先我们先介绍一下IoT平台详细设计的内容,然后我们来分析一下IoT平台的技术架构的性能指标以及不同体量的IoT平台需要如何进化。
一、IoT平台详细设计
1. 技术栈选择
硬件层
传感器和设备:用于收集各种能源数据,如太阳能板、风力发电机、储能系统等。
网关:用于连接传感器和设备到网络,如Modbus (RTU/TCP)、DL/T645、IEC 102、IEC 104等。
软件层
消息队列:如EMQX(用于处理设备消息),支持MQTT协议。
数据库:如TDengine(用于存储和分析时间序列数据)。
后端服务:Spring Cloud微服务架构,用于处理业务逻辑,如资源调度、优化算法等。
云平台
云服务:如阿里云、AWS、Azure等,提供计算资源、存储、网络等基础设施。
2. 系统架构设计
2.1 数据采集与传输
设备接入:通过网关和传感器将数据实时传输到IoT平台。
协议支持:确保支持多种通信协议,如MQTT、CoAP等。
2.2 数据存储与管理
时间序列数据库:使用TDengine存储大量的时间序列数据,支持快速查询和分析。
数据清洗与预处理:在数据入库前进行清洗和预处理,确保数据质量。
2.3 数据处理与分析
实时数据处理:利用流处理框架(如Flink)进行实时数据分析。
高级分析:使用机器学习模型进行能源预测和优化调度。
2.4 业务逻辑与调度
微服务架构:使用Spring Cloud构建微服务,实现资源的调度和优化。
调度算法:开发或集成先进的调度算法,如遗传算法、模拟退火算法等,以实现最优的能源分配。
二、IoT平台的技术架构
回顾了过去iot平台设计和实践经验,以及调研了市面上的开源iot平台,最终发现iot实际上解决方案大同小异,iot平台核心定义就是由感知层、网络层、应用层组成,虽说各层技术栈选型存在些许差异,但是总体上都是类似的,如下图所示是我抽象设计的一款iot平台架构:
这里感知层和网络层就是协议适配解析网关模块,应用层就是业务系统,iot平台的特性就是多协议支持和适配、海量数据上传以及数据时效性高、海量数据实时计算。这里网关层就是设计用来满足第一特性的,基于数据的海量特性这里选用了Kafka、Flink、TDengine、hive,接下来我将分别介绍一下技术选型的和架构设计的思考。
Kafka
开源的分布式流数据平台,特性是高可扩展、高吞吐量与低延迟、持久性与可靠性,而且kafka在大数据领域实践案例丰富,单机性能可以达到10万级别吞吐量。
Flink
开源的流处理分布式计算框架,具备低延迟、高吞吐、高可用等特性,通过和市面上Apache Spark Streaming进行不同维度对比之后选用。
TDengine
目前应用场景较多,另外由于我们做电网业务,TDEngine正好是国产化同类型数据库里面BeachMark结果较好的,所以进行了选用,有如下特性:
hive
建立在Hadoop上的数据仓库软件,用于查询和管理存储分布式环境的大规模数据集。可以轻松处理PB级别的数据。一个设计良好的Flink作业,在匹配的硬件和数据源/接收器支持下,达到每秒数百万至数千万条消息的吞吐量是常规操作。而要冲击每秒亿级的吞吐,则需要对上述每一个环节进行极致的优化。
以上分别简单描述了核心组件的选型分析以及能够支撑的业务体量,由上面数据可以初步得出这套架构配合相应的服务器资源能够轻松达到10万级别吞吐量,如果集群和分布式模式百万级也能够实现、数据体量实际上没有限制。
总结
本文结合自己iot方面的经验对iot平台的设计进行了初步的描述其中包括技术选型,使用到的技术栈,抽象架构图,业界iot平台实际上都大同小异,而虚拟电厂平台属于电网业务,在网关层面有行业特点,整体架构和核心设计思路没有太大区别,大家设计过程中开源收集开源产品以及各大厂商取长补短,能够很快的设计出一款适合自身业务的iot平台。