112просмотров
60.2%от подписчиков
23 марта 2026 г.
Score: 123
Scaling SignalR With a Redis Backplane
#SignalR #Redis #DotNet Статья объясняет, почему SignalR перестаёт доставлять сообщения при масштабировании и как решить это с помощью Redis Pub/Sub‑backplane. Описана настройка AddStackExchangeRedis, варианты с префиксом каналов и ключевые нюансы эксплуатации. 🔁 SignalR хранит карту подключений только на каждом инстансе; Redis backplane публикует сообщения всем серверам, и тот инстанс, где есть нужный клиент, доставляет уведомление. 🧩 Подключение: добавьте пакет Microsoft.AspNetCore.SignalR.StackExchangeRedis и вызов .AddStackExchangeRedis(connectionString) в builder.Services.AddSignalR(). 🔐 Необходимы sticky sessions: переговор /hub/negotiate и WebSocket‑апгрейд должны попасть на один и тот же сервер, иначе соединение не установится. ⚠️ При падении Redis сообщения не буферизуются — отправленные во время простоя теряются; для критичных сценариев нужна стратегия репликации/дедупликации или долговременная очередь. ☁️ Альтернатива для облака — Azure SignalR Service: управляемый прокси убирает требование sticky sessions, но Redis подойдёт лучше при самохостинге или низкой латентности. https://www.milanjovanovic.tech/blog/scaling-signalr-with-redis-backplane @aStateOfNet