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

相关推荐
多多*6 小时前
蓝桥杯国赛训练 day1
java·开发语言·数据库·redis·缓存·职场和发展·蓝桥杯
weixin_307779136 小时前
使用Redis作为缓存优化ElasticSearch读写性能
redis·分布式·elasticsearch·缓存·架构
阿里云云原生8 小时前
让通义千问3帮忙算笔账:中小研发团队用云消息队列比自建开源省多少?
消息队列
清风~徐~来9 小时前
【Redis】set 类型
java·数据库·redis
书山有路勤为径~10 小时前
Docker 安装 Redis 容器
redis·docker·eureka
小小星球之旅10 小时前
redis缓存常见问题
数据库·redis·学习·缓存
bing_15810 小时前
Redis 缓存粒度如何控制?缓存整个对象还是部分字段?
redis·缓存
纪元A梦10 小时前
Redis最佳实践——性能优化技巧之缓存预热与淘汰策略
redis·缓存·性能优化
未来并未来10 小时前
Redis 缓存问题及其解决方案
java·redis·缓存
码农开荒路13 小时前
Redis线程模型
数据库·redis·缓存