zabbix-graphql-api/docs/arch-diagram.svg

1 line
No EOL
14 KiB
XML

<?plantuml 1.2026.2beta2?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="DESCRIPTION" height="438px" preserveAspectRatio="none" style="width:1294px;height:438px;background:#FFFFFF;" version="1.1" viewBox="0 0 1294 438" width="1294px" zoomAndPan="magnify"><title>Zabbix GraphQL API - Simplified Data Flow</title><defs/><g><g class="title" data-source-line="1"><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="337.1006" x="471.754" y="22.9951">Zabbix GraphQL API - Simplified Data Flow</text></g><!--entity client--><g class="entity" data-qualified-name="client" data-source-line="3" id="ent0002"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="146.7432" x="7" y="99.0128"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="133.7432" y="104.0128"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="131.7432" y="106.0128"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="131.7432" y="110.0128"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106.7432" x="22" y="132.0079">GraphQL Client</text></g><!--entity server--><g class="entity" data-qualified-name="server" data-source-line="4" id="ent0003"><rect fill="#F1F1F1" height="62.5938" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="133.7344" x="291.5" y="90.8628"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="405.2344" y="95.8628"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="403.2344" y="97.8628"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="403.2344" y="101.8628"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93.7344" x="306.5" y="123.8579">Apollo Server</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="87.8828" x="306.5" y="140.1548">(Entry Point)</text></g><!--entity schema--><g class="entity" data-qualified-name="schema" data-source-line="5" id="ent0004"><rect fill="#F1F1F1" height="62.5938" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="163.1768" x="568.78" y="90.8628"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="711.9568" y="95.8628"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="709.9568" y="97.8628"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="709.9568" y="101.8628"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108.9375" x="583.78" y="123.8579">Schema Loader</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123.1768" x="583.78" y="140.1548">Dynamic Merging</text></g><!--entity resolvers--><g class="entity" data-qualified-name="resolvers" data-source-line="6" id="ent0005"><rect fill="#F1F1F1" height="62.5938" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="123.7471" x="884.5" y="90.8628"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="988.2471" y="95.8628"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="986.2471" y="97.8628"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="986.2471" y="101.8628"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68.0381" x="899.5" y="123.8579">Resolvers</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="83.7471" x="899.5" y="140.1548">Hierarchical</text></g><!--entity datasources--><g class="entity" data-qualified-name="datasources" data-source-line="7" id="ent0006"><rect fill="#F1F1F1" height="62.5938" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="186.7813" x="863.98" y="370.0528"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="1030.7613" y="375.0528"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="1028.7613" y="377.0528"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="1028.7613" y="381.0528"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93.5635" x="878.98" y="403.0479">Data Sources</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="146.7813" x="878.98" y="419.3448">Zabbix API Wrappers</text></g><!--entity zabbix--><g class="entity" data-qualified-name="zabbix" data-source-line="8" id="ent0007"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138.4785" x="1150.13" y="378.1928"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="1268.6085" y="383.1928"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="1266.6085" y="385.1928"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="1266.6085" y="389.1928"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98.4785" x="1165.13" y="411.1879">Zabbix Server</text></g><!--entity execution--><g class="entity" data-qualified-name="execution" data-source-line="9" id="ent0008"><rect fill="#F1F1F1" height="62.5938" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="152.6152" x="881.06" y="230.4528"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="1013.6752" y="235.4528"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="1011.6752" y="237.4528"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="1011.6752" y="241.4528"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112.6152" x="896.06" y="263.4479">Execution Layer</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="103.0244" x="896.06" y="279.7448">Business Logic</text></g><!--link client to server--><g class="link" data-entity-1="ent0002" data-entity-2="ent0003" data-link-type="dependency" data-source-line="11" id="lnk9"><path d="M154.14,122.1628 C196.77,122.1628 243.98,122.1628 285.4,122.1628" fill="none" id="client-to-server" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="291.4,122.1628,282.4,118.1628,286.4,122.1628,282.4,126.1628,291.4,122.1628" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="101.3086" x="172.12" y="115.2297">Query/Mutation</text></g><!--link server to client--><g class="link" data-entity-1="ent0003" data-entity-2="ent0002" data-link-type="dependency" data-source-line="19" id="lnk17"><path d="M291.28,135.8528 C275.7,138.4728 259.14,140.8128 243.62,142.1628 C214.32,144.6928 188.1037,142.842 160.1437,138.652" fill="none" id="server-to-client" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="154.21,137.7628,162.5178,143.0524,159.1548,138.5038,163.7034,135.1408,154.21,137.7628" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="40.752" x="202.62" y="138.2297">Result</text></g><!--link server to schema--><g class="link" data-entity-1="ent0003" data-entity-2="ent0004" data-link-type="dependency" data-source-line="12" id="lnk10"><path d="M425.73,122.1628 C468.26,122.1628 517.47,122.1628 562.52,122.1628" fill="none" id="server-to-schema" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="568.52,122.1628,559.52,118.1628,563.52,122.1628,559.52,126.1628,568.52,122.1628" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="107.4595" x="443.51" y="115.2297">Resolve Schema</text></g><!--link schema to resolvers--><g class="link" data-entity-1="ent0004" data-entity-2="ent0005" data-link-type="dependency" data-source-line="13" id="lnk11"><path d="M732.43,122.1628 C780.51,122.1628 834.25,122.1628 878.38,122.1628" fill="none" id="schema-to-resolvers" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="884.38,122.1628,875.38,118.1628,879.38,122.1628,875.38,126.1628,884.38,122.1628" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="116.0415" x="750.23" y="115.2297">Route to Resolver</text></g><!--link resolvers to datasources--><g class="link" data-entity-1="ent0005" data-entity-2="ent0006" data-link-type="dependency" data-source-line="14" id="lnk12"><path d="M884.26,148.2628 C849.87,165.7628 810.19,192.7828 790.37,230.4528 C777.42,255.0728 777.04,268.6328 790.37,293.0528 C809.2,327.5328 839.0502,349.8173 872.2802,366.9973" fill="none" id="resolvers-to-datasources" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="877.61,369.7528,871.4523,362.0663,873.1685,367.4565,867.7782,369.1727,877.61,369.7528" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="71.1318" x="791.37" y="266.3197">Fetch Data</text></g><!--link datasources to resolvers--><g class="link" data-entity-1="ent0006" data-entity-2="ent0005" data-link-type="dependency" data-source-line="17" id="lnk15"><path d="M1047.69,369.7328 C1059.82,361.8928 1070.71,352.1428 1078.37,340.0528 C1237.3,89.3428 1101.23,214.0728 1081.37,183.4528 C1065.1,158.3628 1041.4008,145.4317 1014.1708,136.8217" fill="none" id="datasources-to-resolvers" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="1008.45,135.0128,1015.8253,141.54,1013.2174,136.5202,1018.2372,133.9123,1008.45,135.0128" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49.8291" x="1140.37" y="266.3197">Process</text></g><!--link datasources to zabbix--><g class="link" data-entity-1="ent0006" data-entity-2="ent0007" data-link-type="dependency" data-source-line="15" id="lnk13"><path d="M1051.11,419.9528 C1075.31,422.7128 1101.34,423.8828 1125.45,421.3428 C1133.41,420.5128 1135.7704,420.3206 1143.9704,418.8806" fill="none" id="datasources-to-zabbix" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="1149.88,417.8428,1140.3238,415.4597,1144.9554,418.7076,1141.7075,423.3392,1149.88,417.8428" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="48.9658" x="1076.45" y="417.4097">API Call</text></g><!--link zabbix to datasources--><g class="link" data-entity-1="ent0007" data-entity-2="ent0006" data-link-type="dependency" data-source-line="16" id="lnk14"><path d="M1150.02,401.3428 C1119.76,401.3428 1089.82,401.3428 1057.22,401.3428" fill="none" id="zabbix-to-datasources" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="1051.22,401.3428,1060.22,405.3428,1056.22,401.3428,1060.22,397.3428,1051.22,401.3428" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="63.0195" x="1068.95" y="394.4097">Response</text></g><!--link resolvers to server--><g class="link" data-entity-1="ent0005" data-entity-2="ent0003" data-link-type="dependency" data-source-line="18" id="lnk16"><path d="M884.1,102.0728 C830.3,85.8328 750.11,64.2828 678.37,55.4928 C590.08,44.6828 495.5933,70.0928 431.2133,92.9828" fill="none" id="resolvers-to-server" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="425.56,94.9928,435.38,95.7467,430.2711,93.3178,432.7,88.2089,425.56,94.9928" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="46.5029" x="631.37" y="56.9297">Format</text></g><!--link resolvers to execution--><g class="link" data-entity-1="ent0005" data-entity-2="ent0008" data-link-type="dependency" data-source-line="21" id="lnk18"><path d="M943.04,153.7128 C942.04,167.9528 941.61,185.1128 943.37,200.4528 C944.48,210.1728 945.195,214.7648 947.425,224.1648" fill="none" id="resolvers-to-execution" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="948.81,230.0028,950.6245,220.3225,947.6559,225.1378,942.8406,222.1692,948.81,230.0028" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="132.8501" x="944.37" y="196.5197">Complex Operations</text></g><!--link execution to datasources--><g class="link" data-entity-1="ent0008" data-entity-2="ent0006" data-link-type="dependency" data-source-line="22" id="lnk19"><path d="M957.37,293.2928 C957.37,316.0928 957.37,341.1128 957.37,363.8928" fill="none" id="execution-to-datasources" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="957.37,369.8928,961.37,360.8928,957.37,364.8928,953.37,360.8928,957.37,369.8928" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111.1665" x="958.37" y="336.1197">Use DataSources</text></g><?plantuml-src PP9BJyCm48Jl_XMhdE1GSUU0LFe0f5QqL0Y9b8FhBeqbnuvi1nf-FUj7sa1lrivdUsPiBxr2UEUxdJp2W-LDjLx0UFK48zZ8kb7oK-8Ufjnpc2lppLZPGnCbKViFu0v4NB9ot1Yb36pGVg7TwgkPzhQ3bP7QNqVGHOML6r5XpM5X-3w0qqxpMWfOeZr8VKXeH5ZvWiueskIs-b6YvLPKKd0L6Tjhh8mEDwQr0edCUKAEDxBR418tx8bo2M9bXfBRAF_42IjdHnIjbqR3WdV1u7thf4RdoF51YiXYpp2MuiFeBkU3MoZMBThkPjbw7fY2PIKmAJinEHgaDeX92Z6dO14phKVm1leg2dRM2Hw42lWSlQZYYnLiA16PyWKeD3FXIXKipoxFeTiQenrUdFB7tCeQ6hj_biuzp8sjkH_cpssb6rf5sd0l0QTc0pCnz0dn2C_qXh5AkkeCZ2vjlpgCuVDVA7u1?></g></svg>