From 5f9da72aa7d3b67029a5bf1285549c1e7eeea924 Mon Sep 17 00:00:00 2001 From: Eric FELIXINE Date: Tue, 5 May 2026 00:25:51 -0400 Subject: [PATCH] Architecture: Add Message Broker (Pulsar/Redpanda) integration - New section: Message Broker (Pulsar/Redpanda) - Updated Mermaid diagram with Message_Broker_Network - Added Scorpio (FIWARE) native Kafka integration note - New data flow: MQTT -> Message Broker -> Backends - Updated connections list (5. Message Broker) --- DOCKER-ARCHITECTURE-2026-05-05.md | 57 +++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/DOCKER-ARCHITECTURE-2026-05-05.md b/DOCKER-ARCHITECTURE-2026-05-05.md index 08c54c0e..cc384036 100644 --- a/DOCKER-ARCHITECTURE-2026-05-05.md +++ b/DOCKER-ARCHITECTURE-2026-05-05.md @@ -116,27 +116,64 @@ graph TD DG --- DC[digital-twin-connector] end - %% Flux de données simplifiés - EM -->|MQTT| DG - EM -->|MQTT| OR + %% NOUVEAU : Message Broker Network + subgraph Message_Broker_Network [Message Broker (Pulsar/Redpanda)] + MB[Message Broker\n(Pulsar :6650 / Redpanda :9092)] + MB --- SK %% Kafka-compatibilité (Stellio Kafka) + end + + %% Flux de données avec Message Broker + EM -->|MQTT| MB + MO -->|Metrics| MB + MB -->|Topics| OR + MB -->|Topics| ST + MB -->|Metrics| PR + MB -->|Topics| IF OR -->|NGSI-LD| FR OR -->|NGSI-LD| ST IF -->|InfluxDB| DG DG -->|Grafana Dashboards| User[Utilisateur] + + %% Note Scorpio integration + SC[Scorpio (FIWARE)\n:Kafka native] -.->|Kafka| MB ``` --- -## 5. Connexions Clés +## 5. Message Broker (Pulsar/Redpanda) - NOUVEAU + +Pour faciliter l'ingestion et le routage des données vers plusieurs backends (Prometheus, Context Brokers, etc.), un **message broker** sera ajouté entre les brokers MQTT et les services en aval. + +### Options préférées : +- **Apache Pulsar** : Alternative cloud-native à Kafka, avec support natif des topics persistants et de la messagerie multi-tenant. +- **Redpanda** : Compatible Kafka, mais sans dépendance ZooKeeper, plus simple à déployer. + +### Intégration avec FIWARE Scorpio : +- **Scorpio** (Context Broker FIWARE) intègre nativement **Kafka**, ce qui facilitera l'interconnexion avec le message broker. + +### Nouveau flux de données : +``` +MQTT Brokers (EMQX, Mosquitto, BunkerM) + ↓ +Message Broker (Pulsar/Redpanda) + ↓ ↓ ↓ +├─→ Context Brokers (Orion-LD, Stellio, Scorpio) +├─→ Prometheus (via exporter) +├─→ Time-Series DB (InfluxDB, CrateDB) +└─→ autres backends (OpenRemote, GeoServer, etc.) +``` + +## 6. Connexions Clés 1. **Traefik** (`:80`/`:443`) : Reverse proxy pour tous les services exposés à l'hôte. 2. **Brokers MQTT** (Mosquitto `:1883`, EMQX `:11883`) : Réception des données du simulateur et des capteurs IoT. -3. **Context Brokers** (Orion-LD `:2026`, Stellio `:8087`) : Reçoivent les données NGSI-LD et les transmettent à FROST et Grafana. -4. **FROST-Server** (`:8090`) : Stockage des données OGC SensorThings, connecté à PostgreSQL (`frost_http-database-1`). -5. **Grafana** (`:3001`) : Visualisation des données depuis InfluxDB, Prometheus, et (via adaptateurs) Orion-LD/Stellio. -6. **OpenRemote** (`:8080`) : Gestion des assets IoT, authentification via Keycloak, proxyé par Traefik. -7. **GeoServer** (`:8080`) : Serveur de tuiles cartographiques, connecté au réseau FROST. -8. **Node-RED** (`:1880`) : Alternative possible pour le simulateur IoT (projeté). +3. **Message Broker** (Pulsar `:6650`/Redpanda `:9092`) : **NOUVEAU** - Ingest et routage vers les backends. +4. **Context Brokers** (Orion-LD `:2026`, Stellio `:8087`, Scorpio `:?`) : Reçoivent les données NGSI-LD (Scorpio via Kafka natif). +5. **FROST-Server** (`:8090`) : Stockage des données OGC SensorThings, connecté à PostgreSQL (`frost_http-database-1`). +6. **Grafana** (`:3001`) : Visualisation des données depuis InfluxDB, Prometheus, et (via adaptateurs) Orion-LD/Stellio. +7. **OpenRemote** (`:8080`) : Gestion des assets IoT, authentification via Keycloak, proxyé par Traefik. +8. **GeoServer** (`:8080`) : Serveur de tuiles cartographiques, connecté au réseau FROST. +9. **Node-RED** (`:1880`) : Alternative possible pour le simulateur IoT (projeté). ---