public_documents/投标文件/验证试验室数据管理平台/系统部署架构图.svg

182 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg viewBox="0 0 1100 820" xmlns="http://www.w3.org/2000/svg" font-family="Microsoft YaHei,Arial,sans-serif">
<defs>
<linearGradient id="gH" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#0D47A1"/>
<stop offset="100%" stop-color="#1565C0"/>
</linearGradient>
<linearGradient id="gApp" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#1B5E20"/>
<stop offset="100%" stop-color="#2E7D32"/>
</linearGradient>
<linearGradient id="gDB" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#4A148C"/>
<stop offset="100%" stop-color="#6A1B9A"/>
</linearGradient>
<linearGradient id="gDev" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#BF360C"/>
<stop offset="100%" stop-color="#E64A19"/>
</linearGradient>
<linearGradient id="gSec" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#263238"/>
<stop offset="100%" stop-color="#455A64"/>
</linearGradient>
<linearGradient id="gOps" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#004D40"/>
<stop offset="100%" stop-color="#00695C"/>
</linearGradient>
<filter id="sh" x="-4%" y="-4%" width="115%" height="130%">
<feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.13)"/>
</filter>
<marker id="ar" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
<path d="M0,0 L0,6 L8,3 z" fill="#78909C"/>
</marker>
<marker id="arB" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
<path d="M0,0 L0,6 L8,3 z" fill="#2196F3"/>
</marker>
<marker id="arO" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
<path d="M0,0 L0,6 L8,3 z" fill="#FF9800"/>
</marker>
<marker id="arG" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto">
<path d="M0,0 L0,6 L8,3 z" fill="#4CAF50"/>
</marker>
</defs>
<!-- 背景 -->
<rect width="1100" height="820" fill="#F4F6FA" rx="10"/>
<!-- 标题栏 -->
<rect x="0" y="0" width="1100" height="44" rx="10" fill="#1A3A5C"/>
<rect x="0" y="34" width="1100" height="10" fill="#1A3A5C"/>
<text x="550" y="28" fill="#fff" font-size="16" font-weight="700" text-anchor="middle" letter-spacing="2">验证试验室数据管理平台 · 系统部署架构图</text>
<text x="980" y="28" fill="#90CAF9" font-size="10">2026-04-17</text>
<!-- ===== 区域1客户端 ===== -->
<rect x="14" y="52" width="1072" height="96" rx="8" fill="#E3F2FD" stroke="#90CAF9" stroke-width="1.5" filter="url(#sh)"/>
<text x="34" y="72" fill="#0D47A1" font-size="12" font-weight="700">① 客户端区域Client Zone</text>
<rect x="30" y="80" width="150" height="56" rx="6" fill="url(#gH)" filter="url(#sh)"/>
<text x="105" y="104" fill="#fff" font-size="22" text-anchor="middle">💻</text>
<text x="105" y="126" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">PC 浏览器</text>
<rect x="200" y="80" width="150" height="56" rx="6" fill="url(#gH)" filter="url(#sh)"/>
<text x="275" y="104" fill="#fff" font-size="22" text-anchor="middle">🖥️</text>
<text x="275" y="126" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">数据大屏终端</text>
<rect x="370" y="80" width="150" height="56" rx="6" fill="url(#gH)" filter="url(#sh)"/>
<text x="445" y="104" fill="#fff" font-size="22" text-anchor="middle">📱</text>
<text x="445" y="126" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">移动端(备用)</text>
<!-- HTTPS说明 -->
<rect x="560" y="86" width="510" height="44" rx="6" fill="rgba(13,71,161,0.08)" stroke="#90CAF9" stroke-width="1" stroke-dasharray="4,2"/>
<text x="815" y="105" fill="#1565C0" font-size="11" font-weight="700" text-anchor="middle">通信协议</text>
<text x="815" y="121" fill="#1565C0" font-size="10" text-anchor="middle">HTTPS443 · WebSocket / WSS实时推送 · HTTP/2</text>
<!-- 箭头 1→2 -->
<line x1="550" y1="148" x2="550" y2="160" stroke="#78909C" stroke-width="2" marker-end="url(#ar)" stroke-dasharray="4,2"/>
<!-- ===== 区域2网络安全区 DMZ ===== -->
<rect x="14" y="160" width="1072" height="72" rx="8" fill="#ECEFF1" stroke="#B0BEC5" stroke-width="1.5" filter="url(#sh)"/>
<text x="34" y="178" fill="#263238" font-size="12" font-weight="700">② 网络安全区DMZ</text>
<rect x="30" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
<text x="110" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">🔒 防火墙 Firewall</text>
<rect x="206" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
<text x="286" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">🛡️ WAF 应用防火墙</text>
<rect x="382" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
<text x="462" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">⚖️ Nginx 负载均衡</text>
<rect x="558" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
<text x="638" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">🔑 SSL/TLS 证书</text>
<rect x="734" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
<text x="814" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">👤 统一认证 JWT/SSO</text>
<rect x="910" y="184" width="160" height="36" rx="5" fill="url(#gSec)" filter="url(#sh)"/>
<text x="990" y="206" fill="#fff" font-size="10" font-weight="600" text-anchor="middle">📋 API 网关 Gateway</text>
<!-- 箭头 2→3 -->
<line x1="550" y1="232" x2="550" y2="244" stroke="#78909C" stroke-width="2" marker-end="url(#ar)" stroke-dasharray="4,2"/>
<!-- ===== 区域3应用服务器集群 ===== -->
<rect x="14" y="244" width="1072" height="192" rx="8" fill="#E8F5E9" stroke="#A5D6A7" stroke-width="1.5" filter="url(#sh)"/>
<text x="34" y="264" fill="#1B5E20" font-size="12" font-weight="700">③ 应用服务器集群Kubernetes 编排 · 自动扩缩容)</text>
<!-- 前端服务 -->
<rect x="30" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
<text x="109" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">前端服务</text>
<line x1="40" y1="298" x2="178" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<text x="109" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Vue3 / React</text>
<text x="109" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">Nginx 静态托管</text>
<text x="109" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">WebSocket 实时推送</text>
<text x="109" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">大屏可视化渲染</text>
<rect x="44" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
<text x="109" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
<rect x="44" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
<text x="109" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 80 / 443</text>
<!-- 业务服务 -->
<rect x="204" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
<text x="283" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">业务服务</text>
<line x1="214" y1="298" x2="352" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<text x="283" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Spring Boot 3.x</text>
<text x="283" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">任务 / 资源 / 审批</text>
<text x="283" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">RESTful API</text>
<text x="283" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">JWT 鉴权</text>
<rect x="218" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
<text x="283" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×3 副本</text>
<rect x="218" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
<text x="283" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 8080</text>
<!-- 数据采集服务 -->
<rect x="378" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
<text x="457" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">数据采集服务</text>
<line x1="388" y1="298" x2="526" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<text x="457" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Python / Go</text>
<text x="457" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">多协议驱动适配</text>
<text x="457" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">实时采集引擎</text>
<text x="457" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">数据预处理清洗</text>
<rect x="392" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
<text x="457" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
<rect x="392" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
<text x="457" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 9090</text>
<!-- 分析计算服务 -->
<rect x="552" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
<text x="631" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">分析计算服务</text>
<line x1="562" y1="298" x2="700" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<text x="631" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">Python / Celery</text>
<text x="631" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">算法库调用执行</text>
<text x="631" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">异步计算任务</text>
<text x="631" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">趋势预测计算</text>
<rect x="566" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
<text x="631" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
<rect x="566" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
<text x="631" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 8090</text>
<!-- 消息推送服务 -->
<rect x="726" y="272" width="158" height="150" rx="6" fill="url(#gApp)" filter="url(#sh)"/>
<text x="805" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">消息推送服务</text>
<line x1="736" y1="298" x2="874" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<text x="805" y="312" fill="#A5D6A7" font-size="9" text-anchor="middle">WebSocket Server</text>
<text x="805" y="326" fill="#A5D6A7" font-size="9" text-anchor="middle">实时告警推送</text>
<text x="805" y="340" fill="#A5D6A7" font-size="9" text-anchor="middle">审批消息通知</text>
<text x="805" y="354" fill="#A5D6A7" font-size="9" text-anchor="middle">邮件 / 短信发送</text>
<rect x="740" y="366" width="130" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
<text x="805" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 运行中 · ×2 副本</text>
<rect x="740" y="390" width="130" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
<text x="805" y="402" fill="#C8E6C9" font-size="9" text-anchor="middle">Port: 8088</text>
<!-- 运维监控服务 -->
<rect x="900" y="272" width="170" height="150" rx="6" fill="url(#gOps)" filter="url(#sh)"/>
<text x="985" y="292" fill="#fff" font-size="11" font-weight="700" text-anchor="middle">运维监控服务</text>
<line x1="910" y1="298" x2="1060" y2="298" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<text x="985" y="312" fill="#80CBC4" font-size="9" text-anchor="middle">Prometheus</text>
<text x="985" y="326" fill="#80CBC4" font-size="9" text-anchor="middle">Grafana 可视化</text>
<text x="985" y="340" fill="#80CBC4" font-size="9" text-anchor="middle">ELK 日志聚合</text>
<text x="985" y="354" fill="#80CBC4" font-size="9" text-anchor="middle">自动扩缩容告警</text>
<rect x="914" y="366" width="142" height="18" rx="3" fill="rgba(255,255,255,0.15)"/>
<text x="985" y="378" fill="#fff" font-size="9" text-anchor="middle">🟢 监控运行中</text>
<rect x="914" y="390" width="142" height="18" rx="3" fill="rgba(255,255,255,0.1)"/>
<text