Broker wiadomości (WAMP)
Broker wiadomości WAMP to szkielet komunikacyjny IronFlock. Każdy komponent — urządzenia brzegowe, usługi centralne, urządzenia wirtualne, system AI i interfejs webowy — łączy się z brokerem i komunikuje przez niego.
Dlaczego WAMP
WAMP (Web Application Messaging Protocol) łączy dwa wzorce komunikacji w jednym protokole:
- Publish/Subscribe (pub/sub) — Urządzenie publikuje dane czujnika do tematu; panele, FleetDB Service i oceniające alarmy subskrybują i otrzymują dane w czasie rzeczywistym
- Zdalne wywoływanie procedur (RPC) — Usługa AI wywołuje funkcję na urządzeniu brzegowym; backend wyzwala aktualizację OTA; operator wysyła polecenie do maszyny
Ten podwójny wzorzec oznacza, że IronFlock nie potrzebuje osobnych systemów do strumieniowania danych w czasie rzeczywistym i operacji żądanie-odpowiedź. Jeden protokół, jedno połączenie, oba wzorce.
Jak łączą się komponenty
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Urządzenie │ │ Urządzenie │ │ Interfejs │
│ brzegowe │ │ wirtualne │ │ Web │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ WSS │ WSS │ WSS
└────────────────────┼────────────────────┘
│
┌───────┴───────┐
│ Broker WAMP │
└───────┬───────┘
│
┌────────────────────┼────────────────────┐
│ WSS │ WSS │ WSS
┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐
│ Backend │ │ FleetDB │ │ Usługa │
│ Service │ │ Service │ │ AI │
└──────────────┘ └──────────────┘ └──────────────┘Wszystkie połączenia używają WSS (WebSocket Secure) — szyfrowanych, trwałych, dwukierunkowych połączeń przez TLS.
Izolacja projektów przez realmy
Broker wymusza ścisłą izolację między projektami przy użyciu realmów WAMP:
- Każda kombinacja projekt-aplikacja ma własny realm — całkowicie izolowaną przestrzeń nazw komunikacyjnych
- Wiadomości opublikowane w jednym realmie są niewidoczne dla wszystkich innych realmów
- Urządzenia w Projekcie A nie mogą widzieć ani wchodzić w interakcję z urządzeniami w Projekcie B
Uwierzytelnianie
Każde połączenie z brokerem wymaga uwierzytelnienia:
| Komponent | Metoda uwierzytelniania |
|---|---|
| Urządzenia brzegowe | WAMP-CRA (Challenge-Response) z sekretami per-urządzenie |
| Usługi backendowe | WAMP-CRA z poświadczeniami systemowymi |
| Klienci Web UI | Tokeny sesji oparte na OIDC |
| Usługa AI | Poświadczenia systemowe z ograniczonym zakresem |
Przepływ danych w czasie rzeczywistym
Oto jak odczyt czujnika przepływa z urządzenia do panelu:
- Aplikacja urządzenia odczytuje wartość czujnika i publikuje ją do tematu WAMP w realmie projektu
- Broker WAMP kieruje wiadomość do wszystkich subskrybentów w tym realmie
- FleetDB Service odbiera wiadomość, zapisuje ją do TimescaleDB i ocenia reguły alarmów
- Web UI odbiera tę samą wiadomość i aktualizuje wykres panelu w czasie rzeczywistym
Cały ten przepływ zachodzi z opóźnieniem poniżej sekundy — panel aktualizuje się tak szybko jak napływają dane.
RPC do sterowania urządzeniami
Broker umożliwia również bezpośrednie sterowanie urządzeniami brzegowymi:
- Operator klika “Restartuj aplikację” w interfejsie webowym
- Backend wywołuje RPC na agencie urządzenia przez broker
- Agent urządzenia odbiera wywołanie, restartuje kontener i zwraca wynik
- Web UI wyświetla potwierdzenie
Ten sam mechanizm zasila Physical AI — gdy asystent AI wywołuje funkcję na urządzeniu, jest to wywołanie RPC przez broker.
Skalowalność
Broker WAMP działa jako klaster w wdrożeniach produkcyjnych:
- Wiele węzłów brokera obsługuje równoczesne połączenia
- Obciążenie jest dystrybuowane między węzłami
- Urządzenia utrzymują trwałe połączenia z automatycznym ponownym połączeniem w przypadku awarii
- Broker obsługuje tysiące równoczesnych połączeń urządzeń z dostarczaniem wiadomości przy niskim opóźnieniu