首页 > 其他分享 >SignalR分布式部署

SignalR分布式部署

时间:2022-09-28 16:00:56浏览次数:61  
标签:部署 Redis SignalR 服务器 分布式 连接 客户端

在多台服务器组成的分布式环境中,我们可以采用黏性会话或者禁用协商的方式来保证来自同一个客户端的请求被同一台服务器处理,但是在分布式环境中,还有其他问题需要解决。

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

微软官方提供了用Redis服务器来解决SignalR部署在分布式环境中数据同步的方案—Redis backplane,其使用方法如下。
第1步:
我们通过NuGet安装Microsoft.AspNetCore.SignalR.StackExchangeRedis
第2步:
我们在Program.cs中的AddSignalR后添加AddStackExchangeRedis来指定要连接的Redis配置。

builder.Services.AddSignalR().AddStackExchangeRedis("127.0.0.1", options =>
{
    options.Configuration.ChannelPrefix = "Test1_";
});

AddStackExchangeRedis方法的第一个参数为Redis服务器的连接字符串;如果有多个SignalR应用程序连接同一台Redis服务器,那么我们需要为每一个应用程序配置唯一的ChannelPrefix
通过如上两步,我们就完成了Redis backplane的配置,就可以放心地在分布式环境中使用SignalR了。

本文学习参考自:ASP.NET Core技术内幕与项目实战

标签:部署,Redis,SignalR,服务器,分布式,连接,客户端
From: https://www.cnblogs.com/nullcodeworld/p/16738399.html

相关文章

  • 分布式自增ID算法Snowflake简介
    背景过去的项目开发中,我们常常选用的数据库是mysql,mysql以其体积小、速度快等优势,备受中小型项目的青睐。随着项目数据量的迅速增长,mysql已无法满足我们的项目需求,数据迁移......
  • 分布式数据库 ZNBase 的分布式计划生成
    分布式数据库ZNBase的分布式计划生成导读在数据库系统中,收到一个查询请求时,执行器会负责解析SQL语句,生成执行计划,然后再一步步实现我们的查询请求。分布式数据库拥......
  • 分布式架构下如何选择最佳 Store?
    分布式架构下如何选择最佳Store?一、背景开务数据库是一款云原生分布式数据库,基于分布式架构特点其存储数据默认有3份,分别存储在各节点下的不同Store中。在多节点多S......
  • 使用Spring boot基于Redis快速搭建分布式Session缓存方案
    使用Springboot基于Redis快速搭建分布式Session缓存方案大型web应用中,session的管理非常重要,这是单机存储满足不了的.通常有以下几种方法:将session持久化到数据库中.但......
  • 分布式架构下如何选择最佳 Store?
    分布式架构下如何选择最佳Store?一、背景开务数据库是一款云原生分布式数据库,基于分布式架构特点其存储数据默认有3份,分别存储在各节点下的不同Store中。在多节点多......
  • docker部署、运行tomcat问题
    1.dockertomcat拉取进入dockerHub选取自己需要的tomcat版本。docker拉取命令dockerpulltomcat:tagtag为选择的版本号2.tomcat启动dockerrun-d--nametomcat01......
  • 分布式系统涉及理论基础
    拜占庭将军问题拜占庭将军需要有10只军队但是分散各地,敌国可以同时抵御5只军队同时进攻,因此将军必须找出办法通过通讯兵远程发布指令,让其他将军知道何时进攻,但是10个支军......
  • 48、mmpose关键点识别模型转ncnn和mnn,并进行训练和部署
    基本思想:需要一个关键点识别模型,在权衡simplepose、paddlepose、mmpose之后,发现simplepose需要mxnet(qiuqiu大佬)支持,paddlepose的部署存在易用性问题,也可能我不熟悉.测试了p......
  • 20、NanoDet训练、测试 以及使用ncnn部署Jetson Nano 进行目标检测和串口数据转发
    基本思想:最近想尝试一下nano上部署nanodet,于是记录一下训练过程,手中有一份labelme标注的数据集,于是开始了一波操作~首先进行划分数据集分为训练集和验证集 31、TensorFlow......
  • 50、ubuntu18.04&20.04+CUDA11.1+cudnn11.3+TensorRT7.2+Deepsteam5.1+vulkan环境搭建
    基本思想:想学习一下TensorRT的使用,随笔记录一下;链接:https://pan.baidu.com/s/1uFOktdF-bHcDDsufIqmNSA 提取码:k55w 复制这段内容后打开百度网盘手机App,操作更方便哦记录......