<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="drawio" version="26.0.0">
  <diagram name="部署图">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <!-- Title -->
        <mxCell id="title" value="12306旅客管理系统 - 生产环境部署图" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=20;fontStyle=1" vertex="1" parent="1">
          <mxGeometry x="600" y="20" width="400" height="40" as="geometry" />
        </mxCell>

        <!-- User Terminal -->
        <mxCell id="ut" value="用户终端" style="swimlane;startSize=30;fillColor=#e3f2fd;strokeColor=#1976d2;fontStyle=1;fontSize=14;align=center;" vertex="1" parent="1">
          <mxGeometry x="50" y="80" width="150" height="120" as="geometry" />
        </mxCell>
        <mxCell id="browser" value="Chrome/Firefox/Safari" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;" vertex="1" parent="ut">
          <mxGeometry x="20" y="50" width="110" height="50" as="geometry" />
        </mxCell>

        <!-- CDN -->
        <mxCell id="cdn" value="CDN网络" style="swimlane;startSize=30;fillColor=#e8f5e9;strokeColor=#388e3c;fontStyle=1;fontSize=14;align=center;" vertex="1" parent="1">
          <mxGeometry x="250" y="80" width="120" height="120" as="geometry" />
        </mxCell>
        <mxCell id="cdnnode" value="阿里云CDN" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#388e3c;" vertex="1" parent="cdn">
          <mxGeometry x="15" y="50" width="90" height="50" as="geometry" />
        </mxCell>

        <!-- Load Balancer -->
        <mxCell id="lb" value="负载均衡集群" style="swimlane;startSize=30;fillColor=#fff8e1;strokeColor=#f57c00;fontStyle=1;fontSize=14;align=center;" vertex="1" parent="1">
          <mxGeometry x="420" y="80" width="180" height="120" as="geometry" />
        </mxCell>
        <mxCell id="slb" value="SLB负载均衡" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe0b2;strokeColor=#f57c00;" vertex="1" parent="lb">
          <mxGeometry x="20" y="50" width="70" height="50" as="geometry" />
        </mxCell>
        <mxCell id="ng1" value="Nginx-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe0b2;strokeColor=#f57c00;" vertex="1" parent="lb">
          <mxGeometry x="95" y="50" width="65" height="50" as="geometry" />
        </mxCell>

        <!-- Kubernetes Cluster -->
        <mxCell id="k8s" value="Kubernetes应用集群" style="swimlane;startSize=30;fillColor=#f3e5f5;strokeColor=#7b1fa2;fontStyle=1;fontSize=14;align=center;" vertex="1" parent="1">
          <mxGeometry x="650" y="80" width="400" height="320" as="geometry" />
        </mxCell>

        <!-- Frontend Pods -->
        <mxCell id="fe_pods" value="Frontend Pods" style="swimlane;startSize=20;fillColor=#e3f2fd;strokeColor=#1976d2;fontStyle=1;fontSize=12;align=center;" vertex="1" parent="k8s">
          <mxGeometry x="20" y="50" width="160" height="120" as="geometry" />
        </mxCell>
        <mxCell id="fe1" value="Vue3 Pod-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;" vertex="1" parent="fe_pods">
          <mxGeometry x="20" y="40" width="55" height="50" as="geometry" />
        </mxCell>
        <mxCell id="fe2" value="Vue3 Pod-2" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;" vertex="1" parent="fe_pods">
          <mxGeometry x="85" y="40" width="55" height="50" as="geometry" />
        </mxCell>

        <!-- Backend Pods -->
        <mxCell id="api_pods" value="Backend Pods" style="swimlane;startSize=20;fillColor=#e8f5e9;strokeColor=#388e3c;fontStyle=1;fontSize=12;align=center;" vertex="1" parent="k8s">
          <mxGeometry x="220" y="50" width="160" height="120" as="geometry" />
        </mxCell>
        <mxCell id="api1" value="API Pod-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#388e3c;" vertex="1" parent="api_pods">
          <mxGeometry x="15" y="40" width="40" height="50" as="geometry" />
        </mxCell>
        <mxCell id="api2" value="API Pod-2" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#388e3c;" vertex="1" parent="api_pods">
          <mxGeometry x="60" y="40" width="40" height="50" as="geometry" />
        </mxCell>
        <mxCell id="api3" value="API Pod-3" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#388e3c;" vertex="1" parent="api_pods">
          <mxGeometry x="105" y="40" width="40" height="50" as="geometry" />
        </mxCell>

        <!-- Data Pods -->
        <mxCell id="data_pods" value="Data Pods" style="swimlane;startSize=20;fillColor=#ffebee;strokeColor=#d32f2f;fontStyle=1;fontSize=12;align=center;" vertex="1" parent="k8s">
          <mxGeometry x="20" y="190" width="360" height="110" as="geometry" />
        </mxCell>
        <mxCell id="db1" value="MySQL Primary" style="shape=cylinder3;whiteSpace=wrap;html=1;fillColor=#ffcdd2;strokeColor=#d32f2f;" vertex="1" parent="data_pods">
          <mxGeometry x="20" y="40" width="70" height="50" as="geometry" />
        </mxCell>
        <mxCell id="db2" value="MySQL Replica" style="shape=cylinder3;whiteSpace=wrap;html=1;fillColor=#ffcdd2;strokeColor=#d32f2f;" vertex="1" parent="data_pods">
          <mxGeometry x="100" y="40" width="70" height="50" as="geometry" />
        </mxCell>
        <mxCell id="rd1" value="Redis Master" style="shape=cylinder3;whiteSpace=wrap;html=1;fillColor=#ffcdd2;strokeColor=#d32f2f;" vertex="1" parent="data_pods">
          <mxGeometry x="200" y="40" width="70" height="50" as="geometry" />
        </mxCell>
        <mxCell id="rd2" value="Redis Slave" style="shape=cylinder3;whiteSpace=wrap;html=1;fillColor=#ffcdd2;strokeColor=#d32f2f;" vertex="1" parent="data_pods">
          <mxGeometry x="280" y="40" width="70" height="50" as="geometry" />
        </mxCell>

        <!-- External Services -->
        <mxCell id="ext" value="外部服务" style="swimlane;startSize=30;fillColor=#f5f5f5;strokeColor=#666666;fontStyle=1;fontSize=14;align=center;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="1100" y="80" width="180" height="200" as="geometry" />
        </mxCell>
        <mxCell id="oss" value="阿里云OSS" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#666666;dashed=1;" vertex="1" parent="ext">
          <mxGeometry x="30" y="50" width="120" height="40" as="geometry" />
        </mxCell>
        <mxCell id="sms" value="短信服务" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#666666;dashed=1;" vertex="1" parent="ext">
          <mxGeometry x="30" y="100" width="120" height="40" as="geometry" />
        </mxCell>
        <mxCell id="paygw" value="支付网关" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#666666;dashed=1;" vertex="1" parent="ext">
          <mxGeometry x="30" y="150" width="120" height="40" as="geometry" />
        </mxCell>

        <!-- Connections -->
        <mxCell id="c1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="browser" target="cdnnode">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c2" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="cdnnode" target="slb">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="slb" target="ng1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c4" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="ng1" target="fe1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c5" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="fe1" target="api1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c6" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="api1" target="api3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c7" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="api3" target="db1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c8" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="api3" target="db2">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c9" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;" edge="1" parent="1" source="api3" target="rd1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c10" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;dashed=1;" edge="1" parent="1" source="api1" target="oss">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c11" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;dashed=1;" edge="1" parent="1" source="api1" target="sms">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c12" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#666666;dashed=1;" edge="1" parent="1" source="api2" target="paygw">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
