diff --git a/diagrams/architecture-diagram.puml b/diagrams/architecture-diagram.puml new file mode 100644 index 0000000..83f8e03 --- /dev/null +++ b/diagrams/architecture-diagram.puml @@ -0,0 +1,81 @@ +@startuml +interface MQTT as mqtt1 +interface MQTT as mqtt2 +interface HTTP as http1 +interface HTTP as http2 +interface WebSocket + +node Agent { + component Accelerometer + component GPS + component CarParkingSlots + component "Data Aggregator" as agent_agg +} + +node Edge { + component AgentMQTTAdapter + component AgentDataProcessor + component HubMQTTAdapter + component HubHTTPAdapter +} + +node Hub { + component EdgeHTTPAdapter + component EdgeMQTTAdapter + component Aggregator + component StoreHTTPAdapter + component Redis +} + +node Store { + component "HTTP Rest API" as store_http + component "SQL Adapter" as store_sql + component "Websocket API" as store_ws +} + +node MapView { + component "Store Processor" as mv_sp + component "Input Handler" as mv_ih + component "Map" +} + +component PostgreSQL + +agent_agg --> Accelerometer +agent_agg --> GPS +agent_agg --> CarParkingSlots + +agent_agg -> mqtt1 + +mqtt1 <- AgentMQTTAdapter +AgentMQTTAdapter -> AgentDataProcessor +AgentDataProcessor --> HubMQTTAdapter +AgentDataProcessor --> HubHTTPAdapter +HubMQTTAdapter --> mqtt2 +HubHTTPAdapter --> http1 + +mqtt2 <-- EdgeMQTTAdapter +http1 <-- EdgeHTTPAdapter +EdgeMQTTAdapter --> Aggregator +EdgeHTTPAdapter --> Aggregator +Aggregator <--> Redis +StoreHTTPAdapter <-- Aggregator + +http2 <-- StoreHTTPAdapter +store_http --> http2 +store_http -> store_sql +store_sql <- store_ws +store_ws --> WebSocket + +store_sql <--> PostgreSQL + +WebSocket <-- mv_sp +mv_sp <-- mv_ih +mv_sp --> Map + +actor Spectator as user + +Map --> user +mv_ih <-- user + +@enduml