第3章:平台技术架构总览:分层架构设计

各位同行,今天咱们聊聊虚拟电厂平台的技术骨架。说白了,就是这系统到底怎么搭,才能既扛得住海量设备接入,又让业务跑得顺溜。

我见过不少聚合商,一开始图省事,用个单体的Web应用就往上怼。结果呢?设备一多,数据库先崩了;业务一复杂,改代码跟拆炸弹似的。嗯,这里头有教训。

所以,我个人的习惯是——从一开始就按分层架构来设计。这不是炫技,是保命。

3.1 为什么必须分层?

你想想看,一个虚拟电厂要管多少东西?

  • 光伏逆变器、储能PCS、充电桩、空调、电表……各种协议,各种数据格式。
  • 实时监控、策略下发、市场交易、结算清分……各种业务逻辑。
  • 还要跟电网调度、交易中心、气象平台打交道。

如果全揉在一起,那就是一锅粥。改一个充电桩的协议,可能把交易模块搞挂了。这谁受得了?

分层架构的核心思想: 每一层只干自己的事,层与层之间通过标准接口通信。这样,哪一层出了问题,就修哪一层,不影响全局。

我在项目中遇到过,有个团队把设备协议解析和业务逻辑写在同一个函数里。结果换了一批电表,改了三天代码,还引入了两个新Bug。后来重构,把协议解析下沉到感知层,业务层完全不动,半天搞定。

3.2 四层架构详解

我习惯把虚拟电厂平台分成四层:感知层、网络层、平台层、应用层。下面一层层说。

3.2.1 感知层:搞定设备接入

这一层是平台的地基。说白了,就是怎么把各种乱七八糟的设备接进来。

  • 协议适配: Modbus、IEC 104、MQTT、HTTP……每种设备都有自己的脾气。我建议做一个统一的协议适配器,把不同协议转成内部标准格式。
  • 数据采集: 采集频率怎么定?储能可能秒级,电表分钟级就够了。别一股脑全采高频,数据量扛不住。
  • 边缘计算: 有些数据不需要上平台,比如简单的告警判断。在边缘网关直接处理,能省不少带宽和服务器资源。
避坑指南: 我曾经吃过亏,把所有设备数据都往云端推。结果一个光伏电站的逆变器坏了,每秒发几千条错误日志,直接把消息队列堵死了。后来加了边缘过滤,只上报关键状态和聚合数据,问题解决。

3.2.2 网络层:数据怎么传

这一层负责把感知层的数据安全、可靠地送到平台层。

  • 通信方式: 4G/5G、光纤、LoRa……看现场条件。我建议优先用有线,实在不行再用无线,但要做好加密。
  • 消息队列: 这是核心。Kafka还是RabbitMQ?我个人偏爱Kafka,吞吐量大,适合海量设备数据。但如果你团队不熟,RabbitMQ也够用。
  • 安全传输: 数据在传输过程中必须加密。别裸奔,电网侧对安全要求极高,出事就是大事。
注意: 网络层最容易忽略的是断网续传。设备离线了,数据不能丢。我建议在边缘网关加本地缓存,网络恢复后自动补传。

3.2.3 平台层:核心能力

这一层是平台的大脑。所有数据在这里汇聚、处理、存储。

  • 数据存储: 时序数据(设备遥测)用InfluxDB或TDengine;关系数据(用户、资产)用PostgreSQL;缓存用Redis。别混着用,各司其职。
  • 数据处理: 实时流处理(Flink/Spark Streaming)做告警、聚合;批处理做日报、月报。
  • 服务治理: 微服务架构是标配。服务注册、发现、熔断、限流,一个都不能少。我见过一个平台,没做限流,一个恶意请求就把所有服务打挂了。
技术选型原则: 选团队熟悉的,别追新。Kubernetes + Docker是基础,但如果你团队没人会,先别上,用传统虚拟机也能跑。稳定第一。

3.2.4 应用层:面向用户

这一层是用户直接看到的。包括Web端、App端、大屏。

  • 功能模块: 实时监控、策略管理、交易管理、报表分析、告警中心……按业务拆成独立模块。
  • 前端技术: Vue或React都行,看团队擅长哪个。我建议用Vue,上手快,生态成熟。
  • API网关: 统一入口,做鉴权、限流、日志。别让前端直接调后端服务,太危险。

3.3 技术选型原则

选技术栈,我总结了三条原则,供你参考:

  1. 成熟优先: 别用刚出的版本。等别人踩完坑再说。我一般选发布超过一年的稳定版。
  2. 团队匹配: 技术再好,没人会也是白搭。招人成本远高于学习成本。
  3. 可扩展性: 今天接1000台设备,明天可能接10000台。架构要能水平扩展,别一开始就设计成单点。

3.4 架构总览图

下面这张图,是我画的一个简化版分层架构。你一看就明白。

应用层 Web端 | App端 | 大屏 | API网关 平台层 微服务 | 消息队列(Kafka) | 时序数据库(InfluxDB) | 缓存(Redis) 流处理(Flink) | 批处理 | 服务治理(K8s) 网络层 4G/5G | 光纤 | LoRa | 消息队列 | 加密传输 感知层 光伏逆变器 | 储能PCS | 充电桩 | 空调 | 电表 协议适配(Modbus/IEC104/MQTT) | 边缘计算 用户交互 业务逻辑 数据传输 设备接入

3.5 总结

分层架构不是什么新鲜东西,但真正落地时,很多人会走样。我见过最典型的问题,就是层与层之间耦合太紧,改一个接口,上下游全得动。

我的建议是:接口先行。先定义好每层之间的API,再开始写代码。这样,各层团队可以并行开发,互不干扰。

好了,这一章就聊到这儿。记住,架构设计没有银弹,适合你团队、适合你业务场景的,才是最好的。


专注资料整理