Machen Sie MediaService auf mehr als einer Hülse korrekt und führen Sie zwei

FeatureMediaService
Verschifft
4. September 2026 um 20:20 UTC
Autor
Kamo
Ausschuss
6ef1e59

MediaService hat immer nur eine einzige Replik ausgeführt, so dass ein Einsatz davon war ein totaler Chat-Empfehlung und ein OOM war das gleiche. Es konnte nicht zwei laufen, aus Gründen, die alle im Code waren: 1. THE STOMP IST IN-HEAP. enableSimpleBroker bedeutet convertAndSend erreicht nur die WebSockets verbunden mit der Hülse, die den Anruf. Dreizehn Relais-Controller haben dies bereits richtig gehandhabt indem Sie NATS mit einem einfachen Disponenten abonnieren (keine Warteschlangengruppe, so dass jede Hülse jeden erhält Nachricht) und erneute Veröffentlichung vor Ort. Dreizehn andere Anruf-Websites nicht - Eingabe-Indikatoren, Anwesenheitspräsenz, ungelesene Abzeichen, Antwort-Zuschüsse, WebRTC-Angebot/ICE, Incoming-Chat-Benachrichtigungen und jeder hätte an etwa die Hälfte seines Zielpublikums geliefert. StompFanout verallgemeinert das Muster, das die Relais bereits verwenden: veröffentlichen {destination, payload] auf ein NATS-Kernthema, jedes Pod gibt es in seinen eigenen Broker weiter. Core NATS, nicht JetStream, weil es sich um Live-Moment-Ereignisse handelt, ohne dass ein Wert wiederholt wird und kein Stream für das Thema ist. Da Core NATS auch an den Publisher liefert, schreibt send() NICHT auch lokal - würde hier zweimal liefern. Mit NATS nach unten fällt es zurück zu einem lokalen Senden, das ist, was die Plattform hat vor. 2. DER PER-KONVERSATION VERBRAUCHSIERWBLE. ChatSessionSubscriptionManager benannt seine JetStream langlebig nach der Chat-Sitzung GUID, und ein langlebiger Push-Konsum gibt genau ein Abonnent. Die Bindung der zweiten Hülse wurde abgelehnt [SUB-90012] und jedes Mitglied, dessen Sockel gelandet ist gibt es nichts - keine Nachrichten, keine Lesequittungen, keine Mitglieder-Added-Ereignis, kein Fehler. Nun ein ephemerer Verbraucher: kein Name zu kollidieren, eine pro pod, vom Server geerntet. Die Wiederholung, die dies entfernt, erfand einen frischen, langlebigen Namen auf Kollision. Es funktionierte, und es durchgesickert ein permanente Server-Seite Verbraucher pro Kollision, die nichts jemals gelöscht. 3. FÜNF MEHR FIXED-NAME DURABLES, die je nach Arbeit eine gegensätzliche Behandlung benötigen. Die Umstellung und VOIP STOMP Relais gingen durch JetStream statt eines Kern-Dispatcher, so dass sie die gleichen Exklusivitäts-Bug - jetzt kurzlebig, da jede Hülse erhalten muss. Der Chat-E-Mail-Notizier, sozial eingehende Verbraucher und Marketing-Konvertierung Verbraucher müssen genau laufen ONCE, so dass sie ihre halten ihre haltbar und einer Gruppe von Lieferungen beitreten, was auch bedeutet, dass ein Überlebender die Arbeit aufnimmt, wenn eine Hülse stirbt. Sticky-Sitzungen auf der Medienroute sind erforderlich, nicht optional: Diese STOMP-Clients nutzen SockJS, dessen xhr-streaming/xhr-polling Fallback mehrere HTTP-Anfragen sind, die für eine Verbindung einstehen gegen Sitzungszustand, der in der Erinnerung eines Pods lebt. Round-Robin bricht es. Siehe ingressroute.yaml. Repliken 1 - 2. 367 Tests bestehen.

Alle Änderungen

Wie, was Sie sehen Versand?

Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.

Free Forever startenPreisgestaltung anzeigen