|
| 1 | +# Software Architecture |
| 2 | + |
| 3 | +This chart is a high-level overview of the software architecture of the project. |
| 4 | + |
| 5 | +_It is a work in progress and will be updated as the project progresses._ |
| 6 | + |
| 7 | +```mermaid |
| 8 | +flowchart TB |
| 9 | + subgraph D["Data & Analytics"] |
| 10 | + S["S3-Storage"] |
| 11 | + |
| 12 | + DS[" |
| 13 | + Data Scrapers |
| 14 | + Active Matches, HLTV-Stream, Metadata |
| 15 | + "] |
| 16 | + DS -- Match data --> S |
| 17 | + DS -- Add to Validate Queue --> RMQV |
| 18 | + |
| 19 | + H["Housekeeper"] |
| 20 | + H == SCAN for unprocessed old matches === S |
| 21 | + H == Compress and Archive old matches === S |
| 22 | + H -- Add to Validate Queue --> RMQV |
| 23 | + |
| 24 | + subgraph rmq["RabbitMQ"] |
| 25 | + RMQV["RabbitMQ - Validate Queue"] |
| 26 | + RMQI["RabbitMQ - Ingest Queue (Exchange)"] |
| 27 | + end |
| 28 | + |
| 29 | + V["Validator & Parser"] |
| 30 | + RMQV -- Get from Validate Queue --> V |
| 31 | + S -- Match Data --> V |
| 32 | + V -- Parsed Match Data --> S |
| 33 | + V -- Add to Parser Queue --> RMQI |
| 34 | + |
| 35 | + subgraph ingest["Ingest Workers"] |
| 36 | + IC["Clickhouse Ingest Worker"] |
| 37 | + IP["Postgres Ingest Worker"] |
| 38 | + end |
| 39 | + |
| 40 | + subgraph databases["Databases"] |
| 41 | + DBC["Clickhouse"] |
| 42 | + DBP["PostgreSQL"] |
| 43 | + end |
| 44 | + |
| 45 | + RMQI -- Get from Ingest Queue --> IC |
| 46 | + RMQI -- Get from Ingest Queue --> IP |
| 47 | + S -- Parsed Match Data --> IP |
| 48 | + S -- Parsed Match Data --> IC |
| 49 | + IC -- Ingest Data --> DBC |
| 50 | + IP -- Ingest Data --> DBP |
| 51 | + end |
| 52 | + |
| 53 | + subgraph T["Telemetry & Metrics"] |
| 54 | + %% Not designed yet |
| 55 | + P["Prometheus"] |
| 56 | + G["Grafana"] |
| 57 | + P -- Metrics --> G |
| 58 | + end |
| 59 | + |
| 60 | + subgraph B["Backend"] |
| 61 | + %% Not designed yet |
| 62 | + end |
| 63 | + DBC -- Application Data --> B |
| 64 | + DBP -- Application Data --> B |
| 65 | +
|
| 66 | + subgraph AP["Admin Panel"] |
| 67 | + %% Not designed yet |
| 68 | + end |
| 69 | + B -- Application Data --> AP |
| 70 | + |
| 71 | + subgraph F["Public Frontend"] |
| 72 | + %% Not designed yet |
| 73 | + end |
| 74 | + B -- Application Data --> F |
| 75 | +``` |
0 commit comments