Die Herausforderung
In einer Bildungsplattform sind zeitnahe Benachrichtigungen entscheidend. Wenn ein Lehrer eine neue Aufgabe veroffentlicht, mussen die Schuler sofort informiert werden. Unser ursprungliches System war polling-basiert — der Client prüfte alle 30 Sekunden auf neue Benachrichtigungen.
Architekturuberblick
Wir haben das System von Grund auf mit einer WebSocket-basierten Architektur neu aufgebaut:
- WebSocket Gateway: Ein Node.js-Server mit Socket.io
- Event Bus: Ein Redis-basiertes Pub/Sub-System
- Benachrichtigungsdienst: Ein Backend-Service fur Erstellung, Speicherung und Weiterleitung
- Angular Signal Store: Ein clientseitiger reaktiver Store
Skalierung
Mit Tausenden gleichzeitiger Verbindungen reicht ein einzelner WebSocket-Server nicht aus. Wir verwenden den Redis-Adapter fur Socket.io, um Ereignisse uber mehrere Serverinstanzen zu synchronisieren.
Das neue System liefert Benachrichtigungen in durchschnittlich unter 100ms — eine 300-fache Verbesserung gegenuber dem alten Polling-Ansatz.