使用mermaid 语言绘画时序图和链路图

给大家展示一下效果,
官方地址:https://mermaid.nodejs.cn/
官方开发地:https://mermaid.nodejs.cn/intro/#google_vignette
在这里插入图片描述
在这里插入图片描述

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数据库:::externalyy数据库:::external钉钉告警:::notification%% ==================== 数据采集源(完全保留) ====================subgraph 数据采集["多源数据采集"]MQ消费数据:::middlewareAPI接口服务:::app库间迁移工具:::middlewareend%% ==================== 用户层(完全保留) ====================subgraph 用户层["用户终端"]生产设备:::user微信小程序:::user监管工作台:::user消费者APP:::user企业录入终端:::userend%% ==================== 应用层(完全保留) ====================subgraph 应用层["应用服务"]SpringBoot核心服务:::app溯源码管理:::app数据治理服务:::app任务调度服务:::append%% ==================== 数据层修改点 ====================subgraph 数据层["数据服务"]subgraph 达梦集群["达梦集群"]达梦节点1:::data达梦节点2:::data达梦节点3:::dataend前置达梦数据库:::dataRedis缓存:::dataMinIO文件存储:::dataend%% ==================== 紫光云中间件(完全保留) ====================subgraph 中间件["紫光云中间件"]RocketMQ消息队列:::middlewareNginx负载均衡:::middlewareDolphinScheduler:::middlewareElasticsearch:::middlewareend%% ==================== 华为云基础设施(完全保留) ====================subgraph 基础设施["华为平台"]容器引擎:::infraDockerSwarm:::infraPrometheus监控:::infraGrafana看板:::infraend%% ==================== 可视化大屏(完全保留) ====================subgraph 可视化大屏["业务大屏"]总大屏ECharts:::screen经营大屏TS:::screen生产大屏3D:::screen监管大屏GIS:::screenend%% ==================== 核心业务流(完全保留) ====================企业录入终端 -->|原料数据| SpringBoot核心服务SpringBoot核心服务 -->|数据存储| 达梦节点1微信小程序 -->|扫码查询| 溯源码管理溯源码管理 -->|数据查询| SpringBoot核心服务监管工作台 -->|监管指令| 监管大屏GIS生产设备 -->|IoT数据| RocketMQ消息队列%% ==================== 多源数据入库修改点 ====================%% 1. MQ消费入库(保留)MQ消费数据 -->|消费消息| RocketMQ消息队列RocketMQ消息队列 -->|数据处理| 达梦节点1%% 2. API接口入库(保留)API接口服务 -->|接收数据| SpringBoot核心服务SpringBoot核心服务 -->|写入主库| 达梦节点2%% 3. 库间迁移入库(修改连线)莱斯数据库 -->|DataX迁移| 库间迁移工具美亚数据库 -->|Kettle迁移| 库间迁移工具库间迁移工具 -->|数据加载| 前置达梦数据库前置达梦数据库 -->|定时同步| 达梦节点3DolphinScheduler -->|调度DataX| 库间迁移工具DolphinScheduler -->|调度Kettle| 库间迁移工具%% ==================== 中间件服务连接(完全保留) ====================Nginx负载均衡 -->|请求分发| SpringBoot核心服务DolphinScheduler -->|任务调度| 数据治理服务Elasticsearch -->|索引查询| 溯源码管理SpringBoot核心服务 -->|缓存读取| Redis缓存SpringBoot核心服务 -->|消息发布| RocketMQ消息队列%% ==================== 监控告警连接(完全保留) ====================Prometheus监控 -->|指标采集| 容器引擎Grafana看板 -->|告警推送| 钉钉告警容器引擎 -->|容器监控| Prometheus监控%% ==================== 业务标注(完全保留) ====================subgraph 业务流["核心业务流程"]direction TBB1[企业录入]:::bizB2[生产溯源]:::bizB3[消费者扫码]:::bizB4[供应链可视化]:::bizB5[质量管控]:::bizB6[经营决策]:::bizB1 --> B2 --> B3 --> B4 --> B6B3 --> B5 --> B6end%% ==================== 业务技术映射(完全保留) ====================企业录入终端 -.-> B1SpringBoot核心服务 -.-> B2微信小程序 -.-> B3数据治理服务 -.-> B5经营大屏TS -.-> B6%% ==================== 国产化标注(完全保留) ====================style 基础设施 stroke:#E53935,stroke-width:2pxstyle 中间件 stroke:#E53935,stroke-width:2pxstyle 达梦集群 stroke:#E53935style 前置达梦数据库 stroke:#E53935%% ==================== 新增同步说明 ====================subgraph 同步说明[" "]direction TBS1["DataX每日00:30同步"]S2["Kettle每日01:00同步"]S3["前置库→达梦集群每日02:00同步"]end
sequenceDiagramtitle 食品安全溯源系统时序图%% 全局参与者定义box 用户层participant 消费者 as 消费者(微信小程序)participant 监管员 as 监管员(工作台)participant 企业员工 as 企业员工(Web终端)participant 供应商系统 as 供应商系统(API)endbox 应用服务层participant 溯源服务 as 溯源服务(SpringBoot)participant 数据治理 as 数据治理(海豚调度)participant 大屏服务 as 大屏服务(TS+ECharts)endbox 数据存储层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-docsMinIO-->>溯源服务: 返回ETag溯源服务->>Redis: SETEX batch:${id} 604800溯源服务-->>企业员工: HTTP 201 Createdend%% ===== API数据接入 =====rect rgb(245,245,220)供应商系统->>溯源服务: POST /api/materialsactivate 溯源服务溯源服务->>溯源服务: OAuth2验证alt 验证成功溯源服务->>达梦DB: INSERT supplier_data溯源服务->>Redis: DEL supplier:{id}溯源服务-->>供应商系统: 200 OK (ETag)else 验证失败溯源服务-->>供应商系统: 401 Unauthorizedenddeactivate 溯源服务end%% ============== 场景2:消费者溯源查询 ==============Note over 消费者,Redis: 场景2:消费者扫码溯源rect rgb(230,230,250)消费者->>溯源服务: GET /trace/ABC123alt 缓存命中溯源服务->>Redis: HGETALL trace:ABC123Redis-->>溯源服务: 返回完整链路数据else 缓存穿透溯源服务->>达梦DB: EXEC sp_trace_detail达梦DB-->>溯源服务: 结果集溯源服务->>Redis: HSET trace:ABC123end溯源服务-->>消费者: HTTP 200 OKend%% ============== 场景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-->>数据治理: 输出合并统计endend%% ============== 场景5:系统健康监控 ==============Note over 溯源服务,Redis: 场景5:系统健康监测rect rgb(255,250,240)溯源服务->>Redis: INCR system:health:service1Redis->>监控系统: 触发阈值告警监控系统-->>运维人员: 钉钉机器人告警运维人员-->>监控系统: 已确认告警end

同时IDEA也有这个插件可以实时修改和查看预览。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ Kafka客户端(cppkafka)安装与问题解决指南

一、cppkafka简介 cppkafka是一个现代C的Apache Kafka客户端库,它是对librdkafka的高级封装,旨在简化使用librdkafka的过程,同时保持最小的性能开销。 #mermaid-svg-qDUFSYLBf8cKkvdw {font-family:"trebuchet ms",verdana,arial,…

STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解

在STM32的ADC模块中,**采样时机(Sampling Time)和转换时机(Conversion Time)**是ADC工作流程中的两个关键阶段,直接影响采样精度和系统实时性。以下是详细解析: 1. 采样时机(Samplin…

Pageassist安装(ollama+deepseek-r1)

page-assist网站:https://github.com/n4ze3m/page-assist 首先电脑配置node.js,管理员打开命令窗口输入下面命令下载bun npm install -g buncd 到你想要安装page-assist的地方(推荐桌面) 输入下列命令 git clone https://gith…

APC 荧光通道专用!Elabscience® CD11b 抗体激发 / 发射光谱精准匹配流式检测

内容概要 Elabscience APC Anti-Mouse/Human CD11b Antibody [M1/70](货号:E-AB-F1081E)是一款高特异性荧光标记抗体,适用于流式细胞术(FCM),可精准检测小鼠和人类样本中的 CD11b 髓系细胞&…

entity线段材质设置

在cesium中,我们可以改变其entity线段材质,这里以直线为例. 首先我们先创建一条直线 const redLine viewer.entities.add({polyline: {positions: Cesium.Cartesian3.fromDegreesArray([-75,35,-125,35,]),width: 5,material:material, 保存后可看到在地图上创建了一条线段…

大模型数据分析破局之路20250512

大模型数据分析破局之路 本文面向 AI 初学者、数据分析从业者与企业技术负责人,围绕大模型如何为数据分析带来范式转变展开,从传统数据分析困境谈起,延伸到 LLM MCP 的协同突破,最终落脚在企业实践建议。 🌍 开篇导语…

【MySQL】索引太多会怎样?

在 MySQL 中,虽然索引可以显著提高查询效率,但过多的索引(如超过 5-6 个)会带来以下弊端: 1. 存储空间占用增加 每个索引都需要额外的磁盘空间存储索引树(BTree)。对于大表来说,多个…

使用PocketFlowSharp创建一个Human_Evaluation示例

效果 实践 有时候AI生成的结果我们并不满意在进入下一步之前,我们需要对AI生成的结果进行人工审核,同意了才能进入下一个流程。 Human_Evaluation就是人工判断的一个简单示例。 internal class Program{static async Task Main(string[] args){// Load…

【项目】自主实现HTTP服务器:从Socket到CGI全流程解析

00 引言 ​ 在构建高效、可扩展的网络应用时,理解HTTP服务器的底层原理是一项必不可少的技能。现代浏览器与移动应用大量依赖HTTP协议完成前后端通信,而这一过程的背后,是由网络套接字驱动的请求解析、响应构建、数据传输等一系列机制所支撑…

SQL练习(6/81)

目录 1.寻找连续值 方法一:使用自连接(Self-Join) 方法二:使用窗口函数(Window Functions) 2.寻找有重复的值 GROUP BY子句 HAVING子句 常用聚合函数: 3.找不存在某属性的值 not in no…

【流程控制结构】

流程控制结构 流程控制结构1、顺序结构2、选择结构if基本选择结构if else语法多重if语法嵌套if语法switch选择结构 3、循环结构循环结构while循环结构程序调试for循环跳转语句区别 流程控制结构 1、顺序结构 流程图 优先级 2、选择结构 if基本选择结构 单if 语法 if&…

【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025

UniGoal的提出了一个通用的零样本目标导航框架,能够统一处理多种类型的导航任务。 支持 对象类别导航、实例图像目标导航和文本目标导航,而无需针对特定任务进行训练或微调。 本文分享UniGoal复现和模型推理的过程~ 查找沙发,模…

python + flask 做一个图床

1. 起因, 目的: 对这个网站:https://img.vdoerig.com/ , 我也想实现这种效果。做一个简单的图床,后面,可以结合到其他项目中。 2. 先看效果 实际效果。 3. 过程: Grok 聊天: https://img.vdoerig.co…

Java生产环境设限参数教学

哈哈,这个问题问得好!咱们用开餐厅的比喻来理解生产环境的四大必须设限参数,保证你听完再也不会忘!(搓手手) 1. 堆内存上限:-Xmx(厨房的最大容量) 问题:想象…

电脑出故障驱动装不上?试试驱动人生的远程服务支持

在日常工作或学习中,驱动问题时常成为电脑用户的一大困扰。尤其是在更换硬件、重装系统、驱动冲突等情况下,许多用户往往手足无措,不知道从何下手。而“驱动人生”作为国内领先的驱动管理工具,一直以高效、便捷、智能著称。现在&a…

JS手写代码篇---手写 instanceof 方法

2、手写 instanceof 方法 instancecof用于检测一个对象是否是某个构造函数的实例。它通常用于检查对象的类型,尤其是在处理继承关系时。 eg: const arr [1,2,3,4,5]console.log(arr instanceof Array); // trueconsole.log(arr instanceof Object); // true那这是…

使用exceljs将excel文件转化为html预览最佳实践(完整源码)

前言 在企业应用中,我们时常会遇到需要上传并展示 Excel 文件的需求,以实现文件内容的在线预览。经过一番探索与尝试,笔者最终借助 exceljs 这一库成功实现了该功能。本文将以 Vue 3 为例,演示如何实现该功能,代码示例…

PMP-第十二章 项目采购管理

项目采购管理核心概念 项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程项目组织既可以是买方(甲方) ,也可以是卖方(乙 方)项目采购管理过程围绕协议来进行,协议是买卖双方之间具…

maven和npm区别是什么

这是一个很容易搞糊涂新手的问题,反正我刚开始从课堂的知识转向项目网站开发时,被这些问题弄得晕头转向,摸不着头脑,学的糊里糊涂,所以,写了这么久代码,也总结一下,为后来者传授下经…

Leetcode76覆盖最小子串

覆盖最小子串 代码来自b站左程云 class Solution {public String minWindow(String str, String tar) {char[] s str.toCharArray();char[] t tar.toCharArray();int[] cnt new int[256];for (char cha : t) { cnt[cha]--;}int len Integer.MAX_VALUE;int debt t.length…