Spraw, aby MediaService poprawić na więcej niż jednym strąku i uruchomić dwa

FeatureMediaService
Szycy
4 września 2026 20:20 UTC
Autor
Kamo
Pochęt się
6ef1e59

MediaService uruchomił tylko pojedynczą replikę, więc jej wdrożenie było całkowitą przerwą na rozmowy i OOM był taki sam. Nie mógł uruchomić dwóch, z powodów, które były w kodzie: 1. STOMP BROKER JEST IN-HEAP. enableSimpleBroker oznacza konwertowanieAndSend dociera tylko do WebSockets Połączony z kapsułą wykonującą telefon. Trzynaście kontrolerów przekaźników już to poprawnie poradziło sobie z tym Subskrybując NATS zwykłą dyspozytorką (bez grupy kolejkowej, więc każda kapsuła otrzymuje każdy Wiadomość) i ponownie publikować lokalnie. Trzynaście innych stron połączeń nie – typowanie wskaźników, Obecność, odczytywane odznaki, dotacje na receptę, oferta/odpoza WebRTC/ICE, powiadomienia o przychodzących — Każdy z nich dostarczałby mniej więcej połowie zamierzonej publiczności. StompFanout uogólnia wzór, którego używają już przekaźniki: opublikuj "destination, ładunek" Jeden podstawowy temat NATS, każda kapsuła przekazuje go do własnego brokera. Core NATS, a nie JetStream, Ponieważ są to wydarzenia na żywo bez powtórzenia wartości i bez strumienia obejmującego temat. Ponieważ podstawowe NATS dostarcza również wydawcy, send() nie pisze również lokalnie – że Dostarczyłbym tutaj dwa razy. Z NATS w dół, spada z powrotem do lokalnego send, co jest tym, co jest Platforma robiła to już wcześniej. 2. Konukseta PER-CONVERSATION był bardzo potrzebny. ChatSessionSubscriptionManager nazwany JetStream trwale po sesji czatu GUID i trwałym pchanie konsument przyznaje dokładnie jeden Abonent. Drugie kapsuły zostało odrzucone [SUB-90012] i każdy członek, którego gniazdo wylądowało Nie otrzymywała się nic – żadnych wiadomości, żadnych odczyty pokwitowań, bez zdarzeń dodanych przez członków, bez błędu. Teraz efemeralny konsument: nie ma nazwy do zderzania się, jeden na kapsułę, czerpany przez serwer. Powtórne próba usuwa wynalezione świeżą trwałą nazwę podczas kolizji. Udało się, a to wyciekło Stały konsument po stronie serwera na kolizję, która nigdy nie została usunięta. 3. 5 więcej NAPRAWIONO ZWAŻYWEGO DURABLES, wymagając przeciwnego leczenia w zależności od pracy. Konwersja Przekaźniki VOIP STOMP przeszły przez JetStream, a nie przez głównego dyspozytora, więc miały to samo Błąd wyłączności – teraz efemeryczne, ponieważ każda kapsuła musi otrzymać. Powiadomiciel czatu, social Przyjazdy konsument i konsument konwersji marketingowej muszą działać dokładnie raz, więc Trwały i dołącz do grupy dostarczającej, co oznacza również, że ocalały odbiera pracę, gdy ginie kapsuła. Wymagane są lepkie sesje na trasie medialnej, a nie opcjonalne: ci klienci STOMP używają SockJS, Którego xhr-streaming/x-poling fallback jest kilka żądań HTTP stojących za jednym połączeniem Przeciwko państwu sesji, który żyje w pamięci jednej kapsuły. Okrągły ćwierć to. Zobacz ingressroute.yaml. Repliki 1 -> 2. Przejście 367 testów.

Wszystkie zmiany

Jak to, co widzisz żeglugę?

Każda z tych aktualizacji automatycznie ląduje w miejscu pracy. Zacznij za darmo i obserwuj, jak rośnie tydzień po tygodniu.

Start Free ForeverZobacz ceny