如何使用SQL Server实现SignalR的横向扩展
一般来说,Web应用的扩展有两种:scale up(纵向扩展)和scale out(横向扩展)。
1、纵向扩展
使用配置高(大内存,多处理器)的服务器或者虚拟机。
2、横向扩展
使用多个服务器(Web Farm)。
SignalR支持横向扩展,可以通过Backplanes(Azure Service Bus、Redis、SQL Server)来实现。
比如SignalR实现的一个简单的聊天页面, 部署到一个服务器,http://192.168.0.1/index.html。打开多个网页访问这个地址,任意页面输入的消息同时出现在各个页面上。
如果部署到另一个服务器http://192.168.0.2/index.html,一个网页打开http://192.168.0.1/index.html,另一个网页打开http://192.168.0.2/index.html。分别发送消息,却发现没有同步。因为SignalR不支持不同服务器上的客户端之前通信。即使部署在同一个服务器端的不同端口,不同端口的页面间消息也不可以传递。
下面介绍如何使用SQL Server实现不同服务器上同一套Web应用间的消息传递。只需在SignalR实现的一个简单的聊天页面的Startup.cs添加两行代码(第5、6行)。
public class Startup
{
public void Configuration(IAppBuilder app)
{
string sqlConnectionString = WebConfigurationManager.ConnectionStrings["signalr"].ConnectionString;
GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
app.MapSignalR();
}
}
添加代码之前,需要NuGet安装Microsoft.AspNet.SignalR.SqlServer并在Web.Config中配置数据库连接字符串。
重新编译然后部署到两个服务器。http://192.168.0.1/index.html和http://192.168.0.2/index.html之间就可以通信了。
您可以用SQL Server Management Studio打开对应的数据库,可以SignalR在数据库里做了些什么。
本文如有不妥之处,请见谅!
如何使用SQL Server实现SignalR的横向扩展的更多相关文章
- SQL Server Reporting Services 自定义数据处理扩展DPE(Data Processing Extension)
最近在做SSRS项目时,遇到这么一个情形:该项目有多个数据库,每个数据库都在不同的服务器,但每个数据库所拥有的数据库对象(table/view/SPs/functions)都是一模一样的,后来结合网络 ...
- [SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同
<Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平台的用户不难发现,对于SQL Server数据库来说,微软提供了两种服务,分别是: -W ...
- Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同
Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同 <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平 ...
- PHP5.6.15连接Sql Server 2008配置方案
php5.6的如果想连接Sql Server 2008数据库,需要手动配置扩展和安装一个驱动. 下载SQL Server Driver for PHP的扩展包,64位系统的官方不支持,找到一个非官方的 ...
- php连接sql server
这两天有个php连接sql server的项目,顺便学习学习sql server 说明: 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是 ...
- 解决 SQL Server 耗尽内存的情况
如果您碰到SQL Server服务造成内存不断扩展最终系统死机等情况,请按照以下方法解决. 原理:SQL Server 2000引入的动态内存分配机制,一般不能很好的回收内存,如果计算机一直不关 ...
- SQL SERVER 数据库邮件配置
1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案.通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中 ...
- 数据库性能监测工具——SQL Server Profiler
使用SQL Server Profiler 进行sql监控需要一些设置: 其他的就是进行分析了~ 清除SQL SERVER缓存 常用的方法: DBCC DROPCLEANBUFFERS 从缓冲池中删除 ...
- SQL Server 禁用扩展存储过程
概述 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL.扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运 ...
随机推荐
- 理解Spring:IOC的原理及手动实现
Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.也是几乎所有Java工作者必须要掌握的框架之一,其优秀的设计思想以及其代码实现上的艺术也是我们需要掌握的. ...
- Vim一直学不会?试试这个 "真香" 神器
Vim 的使用,一直以来是一个难题 以至于国外的知名程序员问答社区 StackOverFlow 上有一个问题 How to I exit the Vim editor 获得了超过 200万次的浏览量 ...
- 孟老板 Paging3 (二) 结合Room
BaseAdapter系列 ListAdapter系列 Paging3 (一) 入门 Paging3 (二) 结合 Room Paging3 (二) 结合Room Paging 数据源不开放, 无法 ...
- 20201123 《python程序设计》实验四报告
20201123 2020-2021-2 <python程序设计>实验三报告 课程:<Python程序设计>班级:2011姓名:晏鹏捷学号:20201123实验教师:王志强实验 ...
- 基于C#的多边形冲突检测
之前在项目上碰到了一个多边形冲突检测的问题,经百度.bing.google,发现目前已有的方案,要么是场景覆盖不全,要么是通过第三方类库实现(而这些第三方类库几乎是无法逆向反编译的),而项目中禁止使用 ...
- kube-controller-manager源码分析-PV controller分析
kubernetes ceph-csi分析目录导航 概述 kube-controller-manager组件中,有两个controller与存储相关,分别是PV controller与AD contr ...
- 七、JavaSE语言基础之方法
关于方法的几个简单概念 关于方法的学习,先来明确几个简单的概念: 方法的作用:处理数据(把原始数据通过指定的算法处理后得到结果数据) 方法:在类中定义的具有特定功能的代码块 方法的意义(作用):提高代 ...
- C++中运算符的重载
运算符重载相当于运算符的函数重载,用于对已有的运算符进行重新定义,赋予其另一种功能,以适应不同的数据类型.我们之前提到过C++中的函数重载,可以根据形参的不同调用不同的函数,那么运算符重载跟函数重载的 ...
- 基于Redis的分布式锁设计
前言 基于Redis的分布式锁实现,原理很简单嘛:检测一下Key是否存在,不存在则Set Key,加锁成功,存在则加锁失败.对吗?这么简单吗? 如果你真这么想,那么你真的需要好好听我讲一下了.接下来, ...
- POJ 1584 A Round Peg in a Ground Hole 判断凸多边形 点到线段距离 点在多边形内
首先判断是不是凸多边形 然后判断圆是否在凸多边形内 不知道给出的点是顺时针还是逆时针,所以用判断是否在多边形内的模板,不用是否在凸多边形内的模板 POJ 1584 A Round Peg in a G ...