给大家展示一下效果,
官方地址:https://mermaid.nodejs.cn/
官方开发地:https://mermaid.nodejs.cn/intro/#google_vignette
bash
graph LR
%% ==================== 样式定义(完全保留) ====================
classDef user fill:#E1F5FE,stroke:#0288D1;
classDef app fill:#E8F5E9,stroke:#388E3C;
classDef data fill:#F3E5F5,stroke:#8E24AA;
classDef infra fill:#FFF3E0,stroke:#FB8C00;
classDef biz fill:#FFEBEE,stroke:#E53935,dashed;
classDef screen fill:#FCE4EC,stroke:#EC407A;
classDef middleware fill:#DCE775,stroke:#AFB42B;
classDef notification fill:#FF8A65,stroke:#E64A19;
classDef external fill:#B39DDB,stroke:#5E35B1;
%% ==================== 外部系统节点(完全保留) ====================
xx数据库:::external
yy数据库:::external
钉钉告警:::notification
%% ==================== 数据采集源(完全保留) ====================
subgraph 数据采集["多源数据采集"]
MQ消费数据:::middleware
API接口服务:::app
库间迁移工具:::middleware
end
%% ==================== 用户层(完全保留) ====================
subgraph 用户层["用户终端"]
生产设备:::user
微信小程序:::user
监管工作台:::user
消费者APP:::user
企业录入终端:::user
end
%% ==================== 应用层(完全保留) ====================
subgraph 应用层["应用服务"]
SpringBoot核心服务:::app
溯源码管理:::app
数据治理服务:::app
任务调度服务:::app
end
%% ==================== 数据层修改点 ====================
subgraph 数据层["数据服务"]
subgraph 达梦集群["达梦集群"]
达梦节点1:::data
达梦节点2:::data
达梦节点3:::data
end
前置达梦数据库:::data
Redis缓存:::data
MinIO文件存储:::data
end
%% ==================== 紫光云中间件(完全保留) ====================
subgraph 中间件["紫光云中间件"]
RocketMQ消息队列:::middleware
Nginx负载均衡:::middleware
DolphinScheduler:::middleware
Elasticsearch:::middleware
end
%% ==================== 华为云基础设施(完全保留) ====================
subgraph 基础设施["华为平台"]
容器引擎:::infra
DockerSwarm:::infra
Prometheus监控:::infra
Grafana看板:::infra
end
%% ==================== 可视化大屏(完全保留) ====================
subgraph 可视化大屏["业务大屏"]
总大屏ECharts:::screen
经营大屏TS:::screen
生产大屏3D:::screen
监管大屏GIS:::screen
end
%% ==================== 核心业务流(完全保留) ====================
企业录入终端 -->|原料数据| SpringBoot核心服务
SpringBoot核心服务 -->|数据存储| 达梦节点1
微信小程序 -->|扫码查询| 溯源码管理
溯源码管理 -->|数据查询| SpringBoot核心服务
监管工作台 -->|监管指令| 监管大屏GIS
生产设备 -->|IoT数据| RocketMQ消息队列
%% ==================== 多源数据入库修改点 ====================
%% 1. MQ消费入库(保留)
MQ消费数据 -->|消费消息| RocketMQ消息队列
RocketMQ消息队列 -->|数据处理| 达梦节点1
%% 2. API接口入库(保留)
API接口服务 -->|接收数据| SpringBoot核心服务
SpringBoot核心服务 -->|写入主库| 达梦节点2
%% 3. 库间迁移入库(修改连线)
莱斯数据库 -->|DataX迁移| 库间迁移工具
美亚数据库 -->|Kettle迁移| 库间迁移工具
库间迁移工具 -->|数据加载| 前置达梦数据库
前置达梦数据库 -->|定时同步| 达梦节点3
DolphinScheduler -->|调度DataX| 库间迁移工具
DolphinScheduler -->|调度Kettle| 库间迁移工具
%% ==================== 中间件服务连接(完全保留) ====================
Nginx负载均衡 -->|请求分发| SpringBoot核心服务
DolphinScheduler -->|任务调度| 数据治理服务
Elasticsearch -->|索引查询| 溯源码管理
SpringBoot核心服务 -->|缓存读取| Redis缓存
SpringBoot核心服务 -->|消息发布| RocketMQ消息队列
%% ==================== 监控告警连接(完全保留) ====================
Prometheus监控 -->|指标采集| 容器引擎
Grafana看板 -->|告警推送| 钉钉告警
容器引擎 -->|容器监控| Prometheus监控
%% ==================== 业务标注(完全保留) ====================
subgraph 业务流["核心业务流程"]
direction TB
B1[企业录入]:::biz
B2[生产溯源]:::biz
B3[消费者扫码]:::biz
B4[供应链可视化]:::biz
B5[质量管控]:::biz
B6[经营决策]:::biz
B1 --> B2 --> B3 --> B4 --> B6
B3 --> B5 --> B6
end
%% ==================== 业务技术映射(完全保留) ====================
企业录入终端 -.-> B1
SpringBoot核心服务 -.-> B2
微信小程序 -.-> B3
数据治理服务 -.-> B5
经营大屏TS -.-> B6
%% ==================== 国产化标注(完全保留) ====================
style 基础设施 stroke:#E53935,stroke-width:2px
style 中间件 stroke:#E53935,stroke-width:2px
style 达梦集群 stroke:#E53935
style 前置达梦数据库 stroke:#E53935
%% ==================== 新增同步说明 ====================
subgraph 同步说明[" "]
direction TB
S1["DataX每日00:30同步"]
S2["Kettle每日01:00同步"]
S3["前置库→达梦集群每日02:00同步"]
end
bash
sequenceDiagram
title 食品安全溯源系统时序图
%% 全局参与者定义
box 用户层
participant 消费者 as 消费者(微信小程序)
participant 监管员 as 监管员(工作台)
participant 企业员工 as 企业员工(Web终端)
participant 供应商系统 as 供应商系统(API)
end
box 应用服务层
participant 溯源服务 as 溯源服务(SpringBoot)
participant 数据治理 as 数据治理(海豚调度)
participant 大屏服务 as 大屏服务(TS+ECharts)
end
box 数据存储层
participant 达梦DB as 达梦8(主集群)
participant Redis as Redis(哨兵模式)
participant MinIO as MinIO(对象存储)
end
%% ============== 场景1:双通道数据录入 ==============
Note over 企业员工,供应商系统: 场景1:混合数据录入通道
rect rgb(240,248,255)
企业员工->>溯源服务: POST /api/batches
溯源服务->>达梦DB: BEGIN TRANSACTION
达梦DB-->>溯源服务: 返回事务ID
溯源服务->>MinIO: PUT /quality-docs
MinIO-->>溯源服务: 返回ETag
溯源服务->>Redis: SETEX batch:${id} 604800
溯源服务-->>企业员工: HTTP 201 Created
end
%% ===== API数据接入 =====
rect rgb(245,245,220)
供应商系统->>溯源服务: POST /api/materials
activate 溯源服务
溯源服务->>溯源服务: OAuth2验证
alt 验证成功
溯源服务->>达梦DB: INSERT supplier_data
溯源服务->>Redis: DEL supplier:{id}
溯源服务-->>供应商系统: 200 OK (ETag)
else 验证失败
溯源服务-->>供应商系统: 401 Unauthorized
end
deactivate 溯源服务
end
%% ============== 场景2:消费者溯源查询 ==============
Note over 消费者,Redis: 场景2:消费者扫码溯源
rect rgb(230,230,250)
消费者->>溯源服务: GET /trace/ABC123
alt 缓存命中
溯源服务->>Redis: HGETALL trace:ABC123
Redis-->>溯源服务: 返回完整链路数据
else 缓存穿透
溯源服务->>达梦DB: EXEC sp_trace_detail
达梦DB-->>溯源服务: 结果集
溯源服务->>Redis: HSET trace:ABC123
end
溯源服务-->>消费者: HTTP 200 OK
end
%% ============== 场景3:监管数据分析 ==============
Note over 监管员,大屏服务: 场景3:实时监管看板
rect rgb(255,240,245)
监管员->>大屏服务: GET /dashboard/region
大屏服务->>溯源服务: 调用聚合API
溯源服务->>达梦DB: CALL sp_region_stats
达梦DB-->>溯源服务: 返回指标数据集
溯源服务->>大屏服务: Server-Sent Events推送
大屏服务->>大屏服务: 数据标准化处理
大屏服务-->>监管员: 渲染热力图GIS展示
end
%% ============== 场景4:离线数据治理 ==============
Note over 数据治理,达梦DB: 场景4:定时数据治理任务
loop 每日02:00执行
rect rgb(240,255,240)
数据治理->>达梦DB: EXEC etl_job_daily
数据治理->>供应商系统: GET /api/supplier/updates
供应商系统-->>数据治理: 返回增量JSON
数据治理->>达梦DB: MERGE INTO supplier_master
达梦DB-->>数据治理: 输出合并统计
end
end
%% ============== 场景5:系统健康监控 ==============
Note over 溯源服务,Redis: 场景5:系统健康监测
rect rgb(255,250,240)
溯源服务->>Redis: INCR system:health:service1
Redis->>监控系统: 触发阈值告警
监控系统-->>运维人员: 钉钉机器人告警
运维人员-->>监控系统: 已确认告警
end
同时IDEA也有这个插件可以实时修改和查看预览。