慧知虚拟电厂平台慧知虚拟电厂平台
首页
平台介绍
快速了解
演示环境
  • 平台概述
  • 微服务架构
  • 数据与口径
  • 资源台账
  • 执行监测
  • 效果评估
  • 权限与安全
  • 接口契约
  • 部署与运维
部署指南
  • 前端代码
  • 后端代码
首页
平台介绍
快速了解
演示环境
  • 平台概述
  • 微服务架构
  • 数据与口径
  • 资源台账
  • 执行监测
  • 效果评估
  • 权限与安全
  • 接口契约
  • 部署与运维
部署指南
  • 前端代码
  • 后端代码
  • 虚拟电厂平台

    • 平台概述
    • 微服务架构
    • 数据与口径
    • 资源台账
    • 执行监测
    • 效果评估
    • 权限与安全治理
    • 接口契约
    • 部署与运维
  • 开发文档

    • 平台介绍
    • 快速了解
    • 环境部署
    • 项目介绍
    • 后台手册
    • 前端手册
    • 组件文档
    • 更新日志
  • 微服务工程

    • 服务网关
    • 认证中心
    • 注册中心
    • 配置中心
    • 服务调用
    • 服务监控
    • 链路追踪
    • 熔断和降级
    • 分布式事务
    • 分布式日志
    • 应用容器部署

微服务架构

总体分层

资源接入层
  场站管理 / 充电桩台账 / 容量与基线口径
          |
          v
业务编排层
  需求响应事件 -> 申报 -> 调度分配 -> 执行监测
          |
          v
经营核算层
  效果评估 -> 结算分账 -> 我的收益
          |
          v
展示应用层
  仪表盘 / 事件中心 / 调度工作台 / 运行监控大屏

架构原则

  1. 一条事件主线:申报、分配、执行、评估、结算全部挂在事件上,任何环节都能从事件详情下钻到底。
  2. 口径先行:可调容量、基线功率、响应电量、分账比例在数据模型层定义一次,页面与报表共用。
  3. 状态自动流转:事件状态由定时任务按时间推进,减少人工改状态造成的口径混乱。
  4. 角色视图复用:平台、运营商、场站复用同一套页面,由后端按角色收窄数据,不做三套界面。
  5. 失败显式化:申报拒绝、分配超容量、评估不合格都是正常业务状态,页面直接呈现而不是静默跳过。

微服务拓扑

架构示意图

flowchart LR
    UI[pc_web 管理端/大屏] --> GW[vpp-gateway 48080]
    GW --> AUTH[vpp-auth 39200]
    GW --> SYS[vpp-system 39201]
    GW --> EVT[vpp-event-service 39310]
    GW --> DSP[vpp-dispatch-service 39320]

    EVT --> MYSQL[(MySQL witos_platform)]
    DSP --> MYSQL
    SYS --> MYSQL
    GW --> NACOS[Nacos 注册/配置中心]
    EVT --> NACOS
    DSP --> NACOS
    AUTH --> REDIS[(Redis 令牌/缓存)]
    SYS --> REDIS

网关与认证层

vpp-gateway 负责统一路由、登录态校验、跨域与限流,业务路由按前缀拆分:/vpp-event/** 转发到事件服务,/vpp-dispatch/** 转发到调度服务,均去掉一级前缀后进入后端控制器。vpp-auth 负责登录签发与刷新。

事件服务(vpp-event-service)

覆盖资源域与事件域:场站管理、充电桩台账、资源统计、需求响应事件、申报确认与仪表盘指标。事件状态自动流转与功率/容量模拟数据任务也在该服务内。

调度服务(vpp-dispatch-service)

覆盖调度域与经营域:调度分配与下发、执行监测与偏差分析、效果评估、结算分账与收益统计。

支撑模块

vpp-system 提供用户、角色、菜单、租户与字典;vpp-job 提供分布式定时任务调度;vpp-file 提供导入导出文件服务;vpp-monitor 提供服务运行监控面板。

核心设计

1. 事件驱动的状态机

事件创建后为“待响应”,每分钟一次的定时任务扫描所有未结束事件:到达 start_time 置为“响应中”,到达 end_time 置为“已结束”。申报服务在同一事务边界内校验事件状态——事件进入响应中后拒绝新申报,保证执行期间容量口径稳定。

事件:0 待响应 -> 1 响应中 -> 2 已结束(定时任务每分钟推进)
申报:0 待确认 -> 1 已确认 / 2 已拒绝
分配:0 待确认 -> 1 已确认 -> 2 已下发
结算:0 未结算 -> 1 已结算(记录确认时间/打款时间)

2. 两级调度确认

调度分配先在桩级生成目标功率方案,再经过运营商分配视图按运营商维度确认,最后下发。两级确认保证了平台与运营商之间的责任边界:平台负责事件与总量,运营商负责旗下场站的组织落实。

3. 多租户与角色收窄

请求经网关携带租户与用户身份,后端按“租户 → 场站 → 桩”的范围二次校验。平台侧租户(9999)拥有全局视角;运营商租户自动过滤到旗下场站;场站角色(由场站记录关联的账号识别)只看到本场站数据。列表、详情、统计、导出接口使用同一套范围规则。

4. 定时任务与数据自供给

当前版本以内置定时任务维持数据链路运转,保证演示与试点环境无需外部采集系统也能完整跑通业务:

任务周期职责
事件状态流转每分钟按起止时间推进事件状态
执行监测刷新每分钟生成目标与实际功率的对比记录
分钟功率模拟每 15 分钟 + 每日 00:20 补算写入桩级分钟功率数据
日功率回填每日 00:10 + 启动补算汇总 7 日基线功率与日功率
容量快照每小时过 5 分 + 重启补写记录聚合可调容量快照
桩状态刷新每小时整点按资源与小时数确定性抽签更新在线/离线/故障

桩状态抽签以“资源 ID + 小时”为随机种子,同一小时内重复查询结果稳定,避免页面刷新时状态抖动。

领域边界

领域核心职责主要数据
组织权限租户、用户、角色、菜单、数据范围sys_user、sys_role、sys_tenant
站点资产场站、容量、分成比例、场站方账号dr_station
资源台账充电桩、额定/可调功率、基线、参与状态dr_resource、dr_resource_power_daily、dr_resource_power_minute
事件申报需求响应事件、申报与确认dr_event、dr_apply
调度执行桩级分配、运营商分配、执行监测dr_dispatch、dr_operator_dispatch、dr_execute
经营结算效果评估、结算分账、收益统计dr_assess、dr_settlement

跨域引用以事件 ID、场站 ID、桩编号为联结键。例如评估生成时按事件回读分配与执行记录,结算生成时按事件回读评估电量,不允许绕过事件直接拼装数字。

一致性策略

业务库事务

申报确认、分配下发、评估与结算生成等强一致操作使用本地事务。删除统一使用逻辑删除标志,历史业务数据可追溯。

数据自供给幂等

模拟与回填任务按“资源 + 时间点”作为幂等键,重复执行只更新不重复插入;服务重启时检测缺口并补写,保证曲线连续。

缓存策略

Redis 承载登录令牌、权限信息与短期缓存。业务主数据以 MySQL 为准,缓存失效时回源读取,不影响业务正确性。

请求链路

sequenceDiagram
    actor User as 调度员
    participant GW as vpp-gateway
    participant EVT as vpp-event-service
    participant DSP as vpp-dispatch-service
    participant DB as MySQL

    User->>GW: POST /vpp-dispatch/dispatch/allocate/{eventId}
    GW->>GW: 令牌校验/限流/路由
    GW->>DSP: 转发(去掉 /vpp-dispatch 前缀)
    DSP->>DB: 读取事件/申报/桩台账
    DSP->>DSP: 按可调容量生成桩级目标
    DSP->>DB: 写入分配记录(待确认)
    DSP-->>User: 返回分配方案

高可用与降级

依赖故障影响降级策略
Nacos 不可用服务发现与配置读取失败已启动实例按本地缓存继续服务,禁止滚动重启
MySQL 不可用全部业务写入中断网关快速失败,页面提示稍后重试,不做假数据
Redis 不可用新登录失败已登录用户在令牌有效期内可继续访问
单服务异常对应业务域不可用网关路由隔离,另一服务不受影响
模拟任务失败曲线与基线数据滞后任务幂等重跑,启动时自动补算缺口

可观测性

平台通过 vpp-monitor 查看各服务运行状态;业务侧关键观测点包括:事件状态流转是否按时推进、容量快照是否连续、分配总量是否超过申报容量、评估合格率异常波动、结算金额与响应电量的比例是否匹配单价。所有写操作记录创建人与创建时间,状态变更记录更新人与更新时间。

技术组件

组件用途
Spring Cloud Gateway统一路由、鉴权、跨域与限流
Nacos(命名空间 vpp)服务注册发现与配置管理
Spring Security + OAuth2 令牌登录认证与接口权限
MySQL 5.7系统库与业务库(witos_platform)
Redis令牌、权限缓存与短期缓存
MyBatis-Plus数据访问与逻辑删除
Vue2 + Element UI + ECharts管理端页面与大屏可视化

可扩展性设计

  • 资源类型扩展:当前以充电桩为最小调度对象,资源模型保留类型与系数维度,接入储能、空调等负荷只需扩展台账字段与口径参数。
  • 事件类型扩展:事件类型以枚举字典维护,削峰/填谷之外新增类型不需要改动状态机。
  • 采集链路替换:功率与状态当前由内置模拟任务供给,替换为真实采集通道时只需替换数据写入来源,业务模型不变。
  • 分账规则扩展:分账比例在场站与结算单两级维护,可平滑演进为按合同、按时段的多级分账。

技术决策记录

重要架构变更应形成记录,至少包括背景、选择、替代方案与影响。当前已沉淀的关键决策:

  • 基线功率采用 7 日平均功率而不是事件前一日功率,降低单日波动对评估的干扰。
  • 事件状态由定时任务推进而不是请求触发,避免无人访问时状态停滞。
  • 调度分配到桩级而不是场站级,保证执行监测与偏差分析可定位。
  • 结算单在评估之后生成,电量未经评估不进入结算。
最近更新:: 2026/8/24 14:20
Prev
平台概述
Next
数据与口径