ASP.NET Core SignalR的分布式部署

假设聊天室程序被部署在两台服务器上,客户端1、2连接到了服务器A上的ChatRoomHub,客户端3、4连接到服务器B上的ChatRoomHub,那么客户端1发送群聊消息时,只有客户端1、2能够收到,客户端3、4收不到;在客户端3发送群聊消息,只有客户端3、4能够收到,客户端1、2收不到。因为这两台服务器之间的ChatRoomHub没有通信。可以让多台服务器上的集线器连接到一个消息队列中,通过这个消息队列完成跨服务器的消息投递。

微软官方提供了用Redis服务器来解决SignalR部署在分布式环境中数据同步的方案Redis backplane,其使用方法如下

NuGet:Microsoft.AspNetCore.SignalR.StackExchangeRedis

cs 复制代码
builder.Services.AddSignalR().AddStackExchangeRedis("127.0.0.1", opt =>
{
    opt.Configuration.ChannelPrefix = "SignalR_MyHub_";
});

AddStackExchangeRedis第一个参数为Redis服务器的连接字符串,如果有多个SignalR应用程序连接同一台Redis服务器,需要为每个应用程序配置唯一的ChannelPrefix

相关推荐
大佐不会说日语~2 小时前
Redis高可用架构演进面试笔记
redis·面试·架构
鼠鼠我捏,要死了捏4 小时前
Redis集群高可用与性能优化实战指南
redis·performance-optimization·high-availability
野蛮人6号4 小时前
黑马点评系列问题之p44实战篇商户查询缓存 jmeter如何整
java·redis·jmeter·黑马点评
hzk的学习笔记8 小时前
Redis 5.0中的 Stream是什么?
数据库·redis·缓存
Themberfue9 小时前
Redis ①⑦-分布式锁
数据库·redis·分布式·adb·缓存
就改了11 小时前
Redis Lua脚本语法详解
redis
Warren981 天前
Redis 八股面试题
java·数据库·redis·spring·缓存·面试·eclipse
码出极致1 天前
Redis核心知识点(突出重点+深度细化)
redis
茫茫人海一粒沙1 天前
如何用 Kafka + Redis + 线程池搭建高吞吐异步消息处理架构
redis·架构·kafka
是阿建吖!2 天前
【Redis】在Ubentu环境下安装Redis
数据库·redis·缓存