docs: convert standard diagrams from draw.io PNGs to inline Mermaid
Gitea renders mermaid inline, so the flow/state/hierarchy/DAG diagrams move to text-in-markdown: auto-layout (removes the manual overlap-prone draw.io step), diffable source, no committed binaries, and a dark-text theme so labels stay legible. Keep draw.io PNGs only for the two complex bespoke diagrams (logical architecture, env2 topology) where pixel control still wins. All 24 mermaid blocks validated by rendering.
This commit is contained in:
@@ -1,90 +0,0 @@
|
||||
<mxfile host="app.diagrams.net">
|
||||
<diagram id="topology" name="Topology">
|
||||
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" arrows="1"
|
||||
fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="800" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
|
||||
<!-- Users -->
|
||||
<mxCell id="users" value="Users (HTTPS / LB)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=13;fontStyle=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="100" width="140" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Central Cluster container -->
|
||||
<mxCell id="central" value="Central Cluster" style="swimlane;whiteSpace=wrap;html=1;startSize=30;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=14;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="60" width="380" height="150" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="nodeA" value="Node A Active" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;fontStyle=1;" vertex="1" parent="central">
|
||||
<mxGeometry x="40" y="60" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="nodeB" value="Node B Standby" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=13;fontStyle=1;" vertex="1" parent="central">
|
||||
<mxGeometry x="220" y="60" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ab" value="" style="edgeStyle=none;html=1;startArrow=block;endArrow=block;rounded=0;" edge="1" parent="central" source="nodeA" target="nodeB">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Users -> Central -->
|
||||
<mxCell id="u2c" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="users" target="nodeA">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Sites -->
|
||||
<mxCell id="site01" value="Site 01" style="swimlane;whiteSpace=wrap;html=1;startSize=26;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxGeometry x="60" y="420" width="220" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="s01a" value="A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;fontStyle=1;" vertex="1" parent="site01">
|
||||
<mxGeometry x="30" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="s01b" value="B" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=13;fontStyle=1;" vertex="1" parent="site01">
|
||||
<mxGeometry x="120" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<mxCell id="site02" value="Site 02" style="swimlane;whiteSpace=wrap;html=1;startSize=26;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="420" width="220" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="s02a" value="A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;fontStyle=1;" vertex="1" parent="site02">
|
||||
<mxGeometry x="30" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="s02b" value="B" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=13;fontStyle=1;" vertex="1" parent="site02">
|
||||
<mxGeometry x="120" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<mxCell id="site03" value="Site 03" style="swimlane;whiteSpace=wrap;html=1;startSize=26;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxGeometry x="580" y="420" width="220" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="s03a" value="A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;fontStyle=1;" vertex="1" parent="site03">
|
||||
<mxGeometry x="30" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="s03b" value="B" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=13;fontStyle=1;" vertex="1" parent="site03">
|
||||
<mxGeometry x="120" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<mxCell id="siteN" value="Site N" style="swimlane;whiteSpace=wrap;html=1;startSize=26;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;fontStyle=1;verticalAlign=top;dashed=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="840" y="420" width="220" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sNa" value="A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;fontStyle=1;" vertex="1" parent="siteN">
|
||||
<mxGeometry x="30" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sNb" value="B" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=13;fontStyle=1;" vertex="1" parent="siteN">
|
||||
<mxGeometry x="120" y="50" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Central -> Sites (fan-out from cluster bottom) -->
|
||||
<mxCell id="c2s01" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="central" target="site01">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="c2s02" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="central" target="site02">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="c2s03" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="central" target="site03">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="c2sN" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="central" target="siteN">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 74 KiB |
@@ -6,8 +6,51 @@ ScadaBridge uses a hub-and-spoke architecture:
|
||||
- **Central Cluster**: Two-node active/standby Akka.NET cluster for management, UI, and coordination.
|
||||
- **Site Clusters**: Two-node active/standby Akka.NET clusters at each remote site for data collection and local processing.
|
||||
|
||||

|
||||
<!-- source: diagrams/topology-architecture-overview.drawio — edit, then re-export with export-drawio.sh -->
|
||||
```mermaid
|
||||
%%{init: {'theme':'base', 'themeVariables': {'textColor':'#111111','lineColor':'#555555','edgeLabelBackground':'#ffffff','fontSize':'15px'}}}%%
|
||||
flowchart TD
|
||||
USERS["Users<br/>(HTTPS / LB)"]
|
||||
|
||||
subgraph CENTRAL["Central Cluster"]
|
||||
NA["Node A<br/>Active"]
|
||||
NB["Node B<br/>Standby"]
|
||||
NA <--> NB
|
||||
end
|
||||
|
||||
USERS --> NA
|
||||
CENTRAL --> SITE01
|
||||
CENTRAL --> SITE02
|
||||
CENTRAL --> SITE03
|
||||
CENTRAL --> SITEN
|
||||
|
||||
subgraph SITE01["Site 01"]
|
||||
S01A["A<br/>Active"]
|
||||
S01B["B<br/>Standby"]
|
||||
end
|
||||
subgraph SITE02["Site 02"]
|
||||
S02A["A<br/>Active"]
|
||||
S02B["B<br/>Standby"]
|
||||
end
|
||||
subgraph SITE03["Site 03"]
|
||||
S03A["A<br/>Active"]
|
||||
S03B["B<br/>Standby"]
|
||||
end
|
||||
subgraph SITEN["Site N"]
|
||||
SNA["A<br/>Active"]
|
||||
SNB["B<br/>Standby"]
|
||||
end
|
||||
|
||||
classDef start fill:#d5e8d4,stroke:#82b366,color:#111111;
|
||||
classDef proc fill:#dae8fc,stroke:#6c8ebf,color:#111111;
|
||||
classDef dec fill:#fff2cc,stroke:#d6b656,color:#111111;
|
||||
classDef warn fill:#ffe6cc,stroke:#d79b00,color:#111111;
|
||||
classDef muted fill:#f5f5f5,stroke:#999999,color:#666666;
|
||||
class USERS dec
|
||||
class CENTRAL proc
|
||||
class NA,S01A,S02A,S03A,SNA start
|
||||
class NB,S01B,S02B,S03B,SNB muted
|
||||
class SITE01,SITE02,SITE03,SITEN warn
|
||||
```
|
||||
|
||||
## Central Cluster Setup
|
||||
|
||||
|
||||
Reference in New Issue
Block a user