-
Notifications
You must be signed in to change notification settings - Fork 0
/
architecture.drawio
96 lines (96 loc) · 9.08 KB
/
architecture.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<mxfile host="65bd71144e">
<diagram id="pTVTUeVzNPKqvrFQLauN" name="Page-1">
<mxGraphModel dx="1322" dy="1068" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="3" value="MongoDB" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" parent="1" vertex="1">
<mxGeometry x="480" y="430" width="60" height="80" as="geometry"/>
</mxCell>
<mxCell id="5" value="Radis" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" parent="1" vertex="1">
<mxGeometry x="480" y="330" width="60" height="80" as="geometry"/>
</mxCell>
<mxCell id="6" value="Kafka" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="460" y="540" width="100" height="130" as="geometry"/>
</mxCell>
<mxCell id="18" style="edgeStyle=none;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="9" target="13" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="19" style="edgeStyle=none;html=1;entryX=0;entryY=0;entryDx=0;entryDy=27.5;entryPerimeter=0;curved=1;endArrow=none;endFill=0;" parent="1" source="9" target="5" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="26" style="edgeStyle=none;curved=1;html=1;entryX=0.024;entryY=0.54;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="9" target="3" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="28" style="edgeStyle=none;curved=1;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=7;endArrow=none;endFill=0;" parent="1" source="9" target="6" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="9" value="User Api Service" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="240" y="460" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="29" style="edgeStyle=none;curved=1;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontSize=7;endArrow=none;endFill=0;" parent="1" source="12" target="6" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="32" style="edgeStyle=none;curved=1;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=7;endArrow=none;endFill=0;" parent="1" source="12" target="3" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="12" value="User Consumer" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;" parent="1" vertex="1">
<mxGeometry x="690" y="565" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="13" value="Web UI" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="60" y="460" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="36" style="edgeStyle=none;curved=1;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=7;endArrow=none;endFill=0;startArrow=classic;startFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="13" target="16" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" y="450" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="16" value="" style="shape=actor;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="100" y="340" width="40" height="60" as="geometry"/>
</mxCell>
<mxCell id="22" value="<font style="font-size: 7px">HTTP GET/PUT/POST for data</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rotation=90;" parent="1" vertex="1">
<mxGeometry x="155" y="480" width="110" height="20" as="geometry"/>
</mxCell>
<mxCell id="23" value="<font style="font-size: 8px">Put / Get data Cache</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="370" y="400" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="27" value="<font style="font-size: 7px">Put / Get data.&nbsp;<br>if data already in cache&nbsp;<br>we don't do DB query</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="380" y="465" width="90" height="50" as="geometry"/>
</mxCell>
<mxCell id="31" value="After updating some data <br>we will pass a event. The consumer<br>will take care of this event" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" parent="1" vertex="1">
<mxGeometry x="320" y="550" width="130" height="30" as="geometry"/>
</mxCell>
<mxCell id="33" value="After getting event&nbsp;<br>consumer will update database,&nbsp;<br>if needed" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" parent="1" vertex="1">
<mxGeometry x="580" y="485" width="120" height="30" as="geometry"/>
</mxCell>
<mxCell id="34" value="Consumer subscribe <br>a kafka&nbsp;topic.&nbsp;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" parent="1" vertex="1">
<mxGeometry x="590" y="610" width="80" height="20" as="geometry"/>
</mxCell>
<mxCell id="35" value="Kafka Brodcust the&nbsp;<br>event based on topic" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" parent="1" vertex="1">
<mxGeometry x="590" y="580" width="80" height="20" as="geometry"/>
</mxCell>
<mxCell id="37" value="User Bob" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="85" y="320" width="70" height="20" as="geometry"/>
</mxCell>
<mxCell id="39" style="edgeStyle=none;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="38" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="40" style="edgeStyle=none;html=1;entryX=1;entryY=0;entryDx=0;entryDy=15;entryPerimeter=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" edge="1" parent="1" source="38" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="38" value="User Schedule" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;" vertex="1" parent="1">
<mxGeometry x="640" y="280" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="41" value="slow DB query execute <br>using scheduler and save into&nbsp;<br>cache store" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" vertex="1" parent="1">
<mxGeometry x="680" y="250" width="110" height="30" as="geometry"/>
</mxCell>
<mxCell id="43" value="slow query request" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" vertex="1" parent="1">
<mxGeometry x="600" y="390" width="70" height="10" as="geometry"/>
</mxCell>
<mxCell id="44" value="save data into cache" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=7;" vertex="1" parent="1">
<mxGeometry x="545" y="330" width="80" height="10" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>