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统一入口,降低客户端耦合。
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 |
典型数据流:
- 前端请求看板数据时,先查询Redis缓存,命中则直接返回。
- 缓存未命中时,从MySQL查询并回写Redis,设置过期时间(如30秒)。
- 设备状态变更时,同时更新MySQL与Redis,保证数据最终一致性。
3.5 架构决策总结
| 决策项 | 选型 | 核心理由 |
|---|---|---|
| 服务拆分 | 按业务域微服务 | 独立部署、故障隔离、团队自治 |
| 前后端交互 | RESTful API + JWT | 无状态、跨平台、安全认证 |
| 异步通信 | RabbitMQ | 可靠投递、延迟消息、削峰 |
| 关系存储 | MySQL 8.0 | 事务支持、成熟生态、主从扩展 |
| 缓存加速 | Redis 7.x | 高吞吐、过期策略、分布式锁 |
注意事项:微服务架构引入分布式事务复杂度,建议采用Saga模式或最终一致性方案;Redis缓存需设置合理过期时间,避免缓存雪崩与穿透。