1
+ <mxfile host="65bd71144e">
2
+ <diagram id="C5RBs43oDa-KdzZeNtuy" name="API Gateway Architecture">
3
+ <mxGraphModel dx="1468" dy="626" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="WIyWlLk6GJQsqaUBKTNV-0"/>
6
+ <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0"/>
7
+ <mxCell id="title-1" value="联盟平台API治理" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=24;fontStyle=1" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
8
+ <mxGeometry x="415" y="50" width="340" height="40" as="geometry"/>
9
+ </mxCell>
10
+ <mxCell id="client-group" value="客户端" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
11
+ <mxGeometry x="30" y="145" width="180" height="150" as="geometry"/>
12
+ </mxCell>
13
+ <mxCell id="client-web" value="<div><br></div>Web应用" style="verticalAlign=middle;align=center;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fontStyle=1;strokeWidth=3;fillColor=#E6FFCC" parent="client-group" vertex="1">
14
+ <mxGeometry y="26" width="180" height="40" as="geometry"/>
15
+ </mxCell>
16
+ <mxCell id="client-mobile" value="<div><br></div>移动应用" style="verticalAlign=middle;align=center;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fontStyle=1;strokeWidth=3;fillColor=#E6FFCC" parent="client-group" vertex="1">
17
+ <mxGeometry y="66" width="180" height="40" as="geometry"/>
18
+ </mxCell>
19
+ <mxCell id="client-iot" value="<div><br></div>IoT设备" style="verticalAlign=middle;align=center;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fontStyle=1;strokeWidth=3;fillColor=#E6FFCC" parent="client-group" vertex="1">
20
+ <mxGeometry y="106" width="180" height="40" as="geometry"/>
21
+ </mxCell>
22
+ <mxCell id="gateway-main" value="API网关" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
23
+ <mxGeometry x="310" y="100" width="550" height="240" as="geometry"/>
24
+ </mxCell>
25
+ <mxCell id="security-layer" value="安全管理层" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="gateway-main" vertex="1">
26
+ <mxGeometry x="20" y="40" width="160" height="160" as="geometry"/>
27
+ </mxCell>
28
+ <mxCell id="sec-auth" value="认证 (Authentication)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="security-layer" vertex="1">
29
+ <mxGeometry y="36" width="160" height="30" as="geometry"/>
30
+ </mxCell>
31
+ <mxCell id="sec-authz" value="授权 (Authorization)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="security-layer" vertex="1">
32
+ <mxGeometry y="76" width="160" height="30" as="geometry"/>
33
+ </mxCell>
34
+ <mxCell id="sec-encryption" value="加密 (SSL/TLS)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="security-layer" vertex="1">
35
+ <mxGeometry y="116" width="160" height="30" as="geometry"/>
36
+ </mxCell>
37
+ <mxCell id="traffic-layer" value="流量控制层" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="gateway-main" vertex="1">
38
+ <mxGeometry x="195" y="40" width="160" height="160" as="geometry"/>
39
+ </mxCell>
40
+ <mxCell id="traffic-rate" value="限流 (Rate Limiting)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="traffic-layer" vertex="1">
41
+ <mxGeometry y="36" width="160" height="30" as="geometry"/>
42
+ </mxCell>
43
+ <mxCell id="traffic-circuit" value="熔断 (Circuit Breaking)" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="traffic-layer" vertex="1">
44
+ <mxGeometry y="76" width="160" height="30" as="geometry"/>
45
+ </mxCell>
46
+ <mxCell id="traffic-load" value="负载均衡" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="traffic-layer" vertex="1">
47
+ <mxGeometry y="116" width="160" height="30" as="geometry"/>
48
+ </mxCell>
49
+ <mxCell id="routing-layer" value="请求路由层" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="gateway-main" vertex="1">
50
+ <mxGeometry x="370" y="40" width="160" height="160" as="geometry"/>
51
+ </mxCell>
52
+ <mxCell id="routing-endpoint" value="路径映射" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="routing-layer" vertex="1">
53
+ <mxGeometry y="36" width="160" height="30" as="geometry"/>
54
+ </mxCell>
55
+ <mxCell id="routing-transform" value="数据转换" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="routing-layer" vertex="1">
56
+ <mxGeometry y="76" width="160" height="30" as="geometry"/>
57
+ </mxCell>
58
+ <mxCell id="routing-protocol" value="协议转换" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="routing-layer" vertex="1">
59
+ <mxGeometry y="116" width="160" height="30" as="geometry"/>
60
+ </mxCell>
61
+ <mxCell id="backend-group" value="后端服务" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
62
+ <mxGeometry x="310" y="390" width="550" height="160" as="geometry"/>
63
+ </mxCell>
64
+ <mxCell id="backend-rest" value="RESTful 微服务" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="backend-group" vertex="1">
65
+ <mxGeometry x="40" y="56" width="120" height="60" as="geometry"/>
66
+ </mxCell>
67
+ <mxCell id="backend-grpc" value="gRPC 服务" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="backend-group" vertex="1">
68
+ <mxGeometry x="215" y="56" width="120" height="60" as="geometry"/>
69
+ </mxCell>
70
+ <mxCell id="backend-legacy" value="遗留系统" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="backend-group" vertex="1">
71
+ <mxGeometry x="390" y="56" width="120" height="60" as="geometry"/>
72
+ </mxCell>
73
+ <mxCell id="support-group" value="支持系统" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
74
+ <mxGeometry x="950" y="145" width="180" height="150" as="geometry"/>
75
+ </mxCell>
76
+ <mxCell id="support-monitor" value="<div><br></div>监控系统" style="verticalAlign=middle;align=center;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fontStyle=1;strokeWidth=3;fillColor=#ffe6cc;strokeColor=#d79b00" parent="support-group" vertex="1">
77
+ <mxGeometry y="26" width="180" height="40" as="geometry"/>
78
+ </mxCell>
79
+ <mxCell id="support-logging" value="<div><br></div>日志系统" style="verticalAlign=middle;align=center;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fontStyle=1;strokeWidth=3;fillColor=#ffe6cc;strokeColor=#d79b00" parent="support-group" vertex="1">
80
+ <mxGeometry y="66" width="180" height="40" as="geometry"/>
81
+ </mxCell>
82
+ <mxCell id="support-config" value="<div><br></div>配置中心" style="verticalAlign=middle;align=center;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fontStyle=1;strokeWidth=3;fillColor=#ffe6cc;strokeColor=#d79b00" parent="support-group" vertex="1">
83
+ <mxGeometry y="106" width="180" height="40" as="geometry"/>
84
+ </mxCell>
85
+ <mxCell id="client-to-gateway" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="client-group" target="gateway-main" edge="1">
86
+ <mxGeometry relative="1" as="geometry"/>
87
+ </mxCell>
88
+ <mxCell id="client-protocol" value="HTTP/HTTPS
RESTful" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontStyle=1" parent="client-to-gateway" vertex="1" connectable="0">
89
+ <mxGeometry x="-0.1538" y="1" relative="1" as="geometry">
90
+ <mxPoint y="-19" as="offset"/>
91
+ </mxGeometry>
92
+ </mxCell>
93
+ <mxCell id="gateway-to-backend" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="gateway-main" target="backend-group" edge="1">
94
+ <mxGeometry relative="1" as="geometry"/>
95
+ </mxCell>
96
+ <mxCell id="gateway-to-support" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="gateway-main" target="support-group" edge="1">
97
+ <mxGeometry relative="1" as="geometry"/>
98
+ </mxCell>
99
+ <mxCell id="note-protocol" value="协议标准:RESTful API, HTTP/HTTPS" style="shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;fontStyle=1" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
100
+ <mxGeometry x="310" y="580" width="550" height="40" as="geometry"/>
101
+ </mxCell>
102
+ </root>
103
+ </mxGraphModel>
104
+ </diagram>
105
+ </mxfile>
0 commit comments