3、系统架构设计:微服务架构、前后端分离、消息队列、数据库选型(MySQL+Redis)

数字工地管理许可工作流系统采用微服务架构,结合前后端分离设计模式,通过消息队列实现服务间异步解耦,并选用MySQL + Redis作为核心数据存储方案。该架构旨在支撑工地现场高并发、多租户、实时性强的业务场景,同时保证系统的可扩展性与运维便捷性。

3.1 微服务架构设计

系统按业务域拆分为多个独立微服务,每个服务拥有独立的数据库实例(Database per Service),服务间通过轻量级RESTful API或gRPC通信。核心服务包括:

  • 许可服务(Permit Service):管理作业许可的创建、审批、关闭全生命周期。
  • 人员服务(Person Service):维护施工人员资质、培训记录与入场授权。
  • 设备服务(Equipment Service):管理现场设备台账、检验状态与定位信息。
  • 通知服务(Notification Service):负责推送审批提醒、预警消息至移动端与看板。
  • 看板服务(Dashboard Service):聚合实时数据,为现场看板提供可视化接口。
架构原则:每个微服务独立部署、独立扩展,故障隔离;服务间通过API Gateway统一入口,降低客户端耦合。
微服务架构拓扑图 API Gateway 许可服务 人员服务 设备服务 通知服务 看板服务 MySQL (许可) MySQL (人员) MySQL (设备) Redis 缓存 消息队列 (RabbitMQ) 服务间异步解耦

3.2 前后端分离设计

前端采用Vue 3框架构建单页应用(SPA),后端仅提供RESTful API,两者通过HTTP/HTTPS协议交互。分离设计带来以下优势:

  • 独立开发与部署:前端团队与后端团队可并行工作,互不阻塞。
  • 多端适配:同一套后端API可同时服务于PC端管理后台、移动端APP及现场大屏看板。
  • 性能优化:前端静态资源通过CDN加速,后端API可水平扩展。
层次 技术栈 职责
前端展示层 Vue 3 + Element Plus + ECharts 页面渲染、交互逻辑、看板可视化
API网关层 Nginx / Kong 路由转发、限流、认证、日志
后端服务层 Spring Boot / .NET Core 业务逻辑处理、数据持久化
数据存储层 MySQL + Redis 关系数据存储、缓存加速

3.3 消息队列选型与作用

系统选用RabbitMQ作为消息中间件,主要解决以下场景:

  • 异步通知:许可审批通过后,许可服务将消息发送至队列,通知服务异步推送至移动端与看板。
  • 削峰填谷:工地高峰期大量设备状态上报时,消息队列缓冲写入压力,避免数据库过载。
  • 服务解耦:看板服务无需直接调用设备服务,通过订阅设备状态变更队列获取数据。
选型理由:RabbitMQ 支持死信队列、延迟消息、消息确认机制,适合工地场景下许可超时自动关闭、设备离线告警等精确调度需求。

3.4 数据库选型:MySQL + Redis

系统采用MySQL作为主数据库,Redis作为缓存与临时数据存储,两者互补形成分层存储架构。

数据库 用途 关键特性
MySQL 8.0 持久化存储许可记录、人员档案、设备台账、审批日志 ACID事务、外键约束、慢查询日志、主从复制
Redis 7.x 缓存看板实时数据、会话、设备在线状态、分布式锁 内存读写、过期策略、发布/订阅、持久化RDB+AOF

典型数据流:

  1. 前端请求看板数据时,先查询Redis缓存,命中则直接返回。
  2. 缓存未命中时,从MySQL查询并回写Redis,设置过期时间(如30秒)。
  3. 设备状态变更时,同时更新MySQL与Redis,保证数据最终一致性。
数据库读写分离与缓存加速流程 前端请求 业务服务 Redis 缓存 MySQL 主库 回写/更新 策略:先读缓存,未命中则查MySQL并回写;写操作同步更新MySQL与Redis

3.5 架构决策总结

决策项 选型 核心理由
服务拆分 按业务域微服务 独立部署、故障隔离、团队自治
前后端交互 RESTful API + JWT 无状态、跨平台、安全认证
异步通信 RabbitMQ 可靠投递、延迟消息、削峰
关系存储 MySQL 8.0 事务支持、成熟生态、主从扩展
缓存加速 Redis 7.x 高吞吐、过期策略、分布式锁
注意事项:微服务架构引入分布式事务复杂度,建议采用Saga模式或最终一致性方案;Redis缓存需设置合理过期时间,避免缓存雪崩与穿透。