news 2026/9/1 9:19:26

SpringCloud 智慧充电系统整体设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringCloud 智慧充电系统整体设计

目录

一、分布式设计

1. 微服务拆分

2. 分布式事务

3. 分布式定时任务

4. 分布式长连接(WebSocket)

5. 分布式 ID

6. 分布式链路追踪

二、三高设计(高并发、高可用、高性能)

高并发

高可用

高性能

三、缓存设计 Redis

1. 缓存内容

2. 缓存策略

3. 注意点

四、AI 模块设计(Spring‑AI 集成)

1. RAG 知识库

2. Agent + Function Calling

3. AI 异常分析

4. 约束

五、大数据量设计

1. 数据分层

2. 分库分表 Sharding‑JDBC

3. 上报时序海量测点数据处理

4. Canal 数据同步

5. 报表统计大数据计算

6. 查询兼容

六、核心风险汇总


业务背景:面向充电桩场站、车主用户、运营管理端;核心业务包含设备长连接上报充电数据、订单创建、峰谷分时计价、异常订单处理、订单结算、设备监控、报表统计。 技术栈:SpringCloud Alibaba (Nacos、Sentinel、Gateway、Feign、Seata)、RocketMQ、Redis、Canal、Elasticsearch、Sharding‑JDBC、Spring‑AI、XXL‑Job、WebSocket、SkyWalking、MySQL。 下面从分布式、三高、缓存、AI、大数据量五个维度展开设计,附带业务落地、技术选型、风险点与关键实现思路。

一、分布式设计

1. 微服务拆分

服务模块职责
网关服务 Gateway统一入口、鉴权、限流、路由、请求日志
用户服务车主账号、场站管理员、权限
设备服务充电桩设备管理、设备状态、WebSocket 长连接管理
订单服务充电订单创建、状态流转、异常订单修复、结算
计价服务峰谷电价、服务费计算、跨时段充电价格拆分,BigDecimal 高精度计价
账单结算服务账单生成、对账、资金流水
告警监控服务设备故障、充电异常、阈值告警推送
统计报表服务场站运营、充电量、营收统计

注册配置中心:Nacos,服务注册发现 + 动态配置(电价规则、告警阈值动态下发,无需重启服务)。

2. 分布式事务

充电业务:设备上报开始充电 → 创建订单 → 扣预授权;充电结束 → 计算费用 → 生成账单。

  • 核心场景:订单、账单、资金流水跨库操作,使用Seata AT 模式
  • 非强一致场景(设备状态更新、日志):RocketMQ 最终一致性,避免大事务锁表。
  • 防悬挂、空回滚配置开启;事务超时时间根据充电业务设置,充电可能持续数小时,长流程不使用 Seata 长事务,拆成本地事务 + 消息补偿。

3. 分布式定时任务

使用 XXL‑Job:

  1. 异常订单扫描修复:处理充电桩离线、上报断连导致订单状态僵死;
  2. 过期预授权释放;
  3. 统计报表离线计算;
  • 分布式防重:任务内置分片 + DB 锁,避免多实例重复执行。

4. 分布式长连接(WebSocket)

充电桩设备通过 WebSocket 上报实时充电电压电流、电量。

  • 问题:多实例部署,设备连接落在某一个网关 / 设备服务实例,其他实例拿不到该设备连接,推送消息错位。
  • 方案:
  1. Redis 记录设备 ID 与服务实例地址映射;
  2. 需要下发指令时,先查 Redis 路由到对应实例;
  3. 心跳保活,设备离线主动清理映射;
  4. 消息可靠性:上报数据落 MQ 做兜底,不依赖长连接可靠性。

5. 分布式 ID

订单号、流水号:雪花算法,保证多实例全局唯一。

6. 分布式链路追踪

SkyWalking,全链路埋点:设备上报 → MQ 消费 → 订单创建 → 计价,便于排查线上充电数据丢失、计价错误问题。

二、三高设计(高并发、高可用、高性能)

高并发

  1. 流量来源:大量充电桩设备并发上报、小程序车主查询订单、场站后台查询。
  • Spring‑Gateway 做网关层限流,Sentinel 服务层限流,区分设备上报流量、用户请求流量;
  • 充电桩上报不直接写 DB,先入 RocketMQ 异步消费削峰;
  • 核心接口:获取场站列表、订单列表做读写分离。
  1. 热点流量:场站高峰期多桩同时充电,大量消息涌入 MQ。
  • RocketMQ 分区扩容,消费端多线程消费;按设备 ID 做消息分区,保证同一个充电桩消息顺序消费,保证充电时序不乱。

高可用

  1. 服务全部多实例部署;Nacos 健康检查自动剔除故障节点。
  2. MQ 集群:RocketMQ 主从,消息刷盘策略,消息重试、死信队列。消费失败(DB 抖动)进入死信,后台告警,人工 + 定时任务补偿。
  3. MySQL 主从;Redis 集群模式;ES 集群多副本。
  4. 降级熔断:Sentinel。例如报表统计服务不可用时,返回缓存最近报表,不阻断充电核心链路。充电流程优先保障,非统计功能可降级
  5. 故障隔离:设备上报异常不能影响车主下单链路;MQ 消费失败不打垮数据库。

高性能

  1. 核心充电链路尽量同步逻辑轻量化,重逻辑(统计、日志、推送)全部异步化。
  2. Feign 调优:连接池、超时时间适配充电业务;
  3. JVM 调优:线上避免频繁 FullGC;jstat/jstack 做线上排查预案。
  4. DB 慢 SQL 治理,索引优化;大查询禁止走主库,走从库 / ES。

压测参考指标:场站高峰期,支持千级充电桩并发上报,网关 QPS 几千级别;订单创建响应控制在 100ms 以内。

三、缓存设计 Redis

分层缓存:本地 Caffeine + Redis 集群。

1. 缓存内容

  1. 基础字典缓存:电价规则、场站基础信息,变化频率低。

电价规则变更频率不高,使用 Canal 监听计价规则表变更,自动刷新缓存,不必每次查 DB;

  1. 热点数据缓存:场站信息、用户最近订单;
  2. 分布式锁:创建订单锁设备 ID,防止同一充电桩重复生成订单;
  3. WebSocket 路由映射:设备 ID‑服务实例地址;
  4. 计数统计:实时充电量、场站在线桩数,实时指标放 Redis,定时落地 DB;
  5. 防重幂等:设备上报消息携带 requestId,Redis 做幂等,避免重复消费产生重复订单。

2. 缓存策略

  • 缓存更新策略:Canal 监听 MySQL 变更,更新 Redis;
  • 缓存穿透:空值缓存;缓存击穿:互斥锁;缓存雪崩:TTL 加随机偏移;
  • 冷热区分:实时热点放 Redis;历史订单不常驻缓存。

3. 注意点

充电计价核心数据不能完全依赖缓存,计价计算以 MySQL 库表为准,缓存只做查询加速。

四、AI 模块设计(Spring‑AI 集成)

把 AI 作为辅助能力,不侵入充电核心交易链路,只做辅助能力。

1. RAG 知识库

知识库内容:设备故障手册、业务操作手册、运营 FAQ、充电业务常见问题。

  • 场景 1:运营客服问答。场站管理员、客服查询设备报错码、故障排查方案;
  • 场景 2:车主端智能问答:充电失败、扣费疑问。
  • 实现:Spring‑AI + 向量数据库,文档预处理分块、向量入库;RAG 检索知识库生成回答。

2. Agent + Function Calling

Agent 可以调用后端工具函数:

  • 查询指定充电桩状态;
  • 查询订单详情;
  • 查询场站运营数据;

示例:管理员提问 “A 场站今天有多少异常订单”,Agent 调用后端业务接口拿到数据再整理自然语言返回。

3. AI 异常分析

设备上报大量故障码,大模型做故障语义聚合:把一堆原始故障码,归类故障根因,给出运维建议。

4. 约束

AI 输出结果仅供参考;涉及金额、订单状态必须以业务数据库为准,AI 不能修改订单、计价数据。

五、大数据量设计

业务产生海量数据:充电桩上报时序点数据、海量充电订单、设备日志、告警记录。

1. 数据分层

  1. MySQL:存放热数据,近期订单、基础业务数据;
  2. Elasticsearch:存放海量上报时序数据、历史订单、设备日志;用于查询上报轨迹、日志检索;
  3. 冷数据:历史几年订单归档,迁移归档库,或者归档至对象存储。

2. 分库分表 Sharding‑JDBC

订单表按时间分片(按月分表):充电订单随时间持续暴涨,按月分表,热表为当月、上月订单,更早为冷表。

  • 读写分离:Sharding‑JDBC 配置主从;写走主库,查询走从库;
  • 冷热分离: 热数据(近 2 个月订单):MySQL; 冷历史订单:迁移归档库,同时同步 ES 用于查询;线上业务库不保留全量历史。

3. 上报时序海量测点数据处理

充电桩每秒 / 每几秒上报电压、电流、电量,直接写 MySQL 会压垮库。 方案:

  1. 设备上报→RocketMQ;
  2. 消费聚合,批量写入 Elasticsearch 保存时序轨迹;
  3. MySQL 只存订单关键快照,不存每一条细粒度测点;需要看充电过程曲线从 ES 查询。

4. Canal 数据同步

  • MySQL 订单、设备表变更,Canal 同步到 ES,解决 MySQL 分表后复杂条件查询慢问题;
  • 注意:计价规则表更新频次不高,如果缓存刷新需求简单,也可以不用 Canal,采用 Nacos 配置或者程序主动更新缓存。

5. 报表统计大数据计算

  1. 实时指标:Redis 做实时计数;
  2. T+1 离线统计:XXL‑Job 定时任务,读取 ES/MySQL,计算场站营收、充电量,统计结果落业务报表表;避免前台直接跑大聚合 SQL。
  3. 禁止业务页面直接做千万级表聚合计算。

6. 查询兼容

  • 用户查近期订单:走 MySQL;
  • 用户查询历史很久订单:路由查询归档库 + ES;前端做提示,历史数据查询响应会较慢。

六、核心风险汇总

  1. 设备长连接不可靠:不依赖 WebSocket 保证数据可靠,MQ 做兜底;同桩消息顺序消费保证充电时序。
  2. 计价精度:全部使用 BigDecimal,浮点数禁用;跨峰谷时段充电时间切片计算价格。
  3. 大表膨胀:订单按月分表,冷热分离,避免单表无限膨胀。
  4. AI 边界:AI 只做辅助,交易链路完全隔离大模型,防止 AI 错误干预业务。
  5. MQ 消息堆积:监控 RocketMQ 堆积,告警;消费逻辑不要写过重。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 9:18:00

OpenVoice 语音克隆本地部署完整指南:3秒音频秒变你的专属 TTS

OpenVoice 语音克隆本地部署完整指南:3秒音频秒变你的专属 TTS 【免费下载链接】OpenVoice Instant voice cloning by MIT and MyShell. Audio foundation model. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenVoice 你手上有几秒的人声录音&#…

作者头像 李华
网站建设 2026/9/1 9:16:54

5 分钟搞定 Chatbox 主题设置:深色模式到自定义配色全攻略

5 分钟搞定 Chatbox 主题设置:深色模式到自定义配色全攻略 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox 深夜写代码时,浅色界面刺眼;想给团队每人配一套统一风格&#xff…

作者头像 李华
网站建设 2026/9/1 9:14:43

Rufus免费快速制作系统启动盘完整指南

Rufus免费快速制作系统启动盘完整指南 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 电脑蓝屏,系统装不起来了。你插上U盘,想把系统镜像做成启动盘,却不知从哪…

作者头像 李华
网站建设 2026/9/1 9:14:16

x64dbg源码解析:从断点链路到插件开发与编译实战

简介:这是一份面向 Windows 平台的二进制调试器 x64dbg 的完整源码包,适合逆向工程师、恶意软件分析师以及希望深入理解调试器实现原理的开发者。源码基于 C/Qt 构建,包含调试引擎、反汇编界面、插件系统等核心模块,同时附带丰富的…

作者头像 李华
网站建设 2026/9/1 9:14:11

GB/T 1.1标准模板实战指南:从结构到起草避坑要点

简介:GB1.1标准模板是一套面向企业标准化工作者的实用工具包,帮助理解并落实GB/T 1.1《标准化工作导则 第1部分:标准的结构和编写》的编写要求,适用于需要制定企业内部标准、规范产品技术文件或建立标准体系的场景。压缩包共39个文…

作者头像 李华
网站建设 2026/9/1 9:14:11

MobileNetV3架构详解与PyTorch完整实现指南

简介:面向深度学习和计算机视觉研究者,这份 MobileNetV3 完整实现包以 PyTorch 代码为主线,配套预训练权重、训练日志和推理脚本,解决了从网络结构理解到实际部署验证的关键环节。压缩包共24个文件,体积约58.72MB&…

作者头像 李华