SignalR2.0开发实例之——负载均衡
SignalR 2.0作为一个新的而且强大的通信工具,发布博客之后得到了很多人的支持,谢谢...也有人对性能和架设等问题提出了各种质疑..真的很感谢..
我特意下载了SignalR 2.0的源码硬着头皮用我二流子的英语在微软官方的Demo里翻滚..
今天这个负载均衡下使用SignalR..基本完全照搬于微软的Demo,我就当翻译+上自己的理解吧 - -, 原文看这里:
使用SQL server实现持久化
http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server
使用redis实现持久化
http://www.asp.net/signalr/overview/performance/scaleout-with-redis
今天我们主要讲使用SQL server..
做过负载均衡的应该一眼就能看出效果主要做的什么,这里我们就不做过多的解释了..
首先我们来看看微软给出的实现参考图:

使用的先决条件
Microsoft SQL Server 2005或更高版本。 它不支持SQL Server精简版或SQL Azure数据库。 (如果您的应用程序是托管在Azure,你懂的,考虑其他的版本代替吧.)
概述
详细的教程之前,这里是一个快速概述你将做什么。
- 创建一个新的空数据库。 集线器Hub将在这个数据库创建必要的表。
- 将这些NuGet包添加到您的应用程序:
- 创建一个SignalR应用程序。
- 添加以下代码来启动。 配置启动器(记得我们之前第一篇文章中的Owin么?)
下面就开始第一步
配置数据库:
首先我们来创建一个库为SignalRTable
如下图:

然后,打开数据库代理(这是微软给的建议,可不开,微软给出的原因是:服务代理提供本机支持SQL Server消息和队列,使其接收更新更有效率。)
可以使用SQL语句查询是否开启了数据库代理(新库默认是关闭的) SQL语句如下:
SELECT [name], [service_broker_guid], [is_broker_enabled] FROM [master].[sys].[databases]
可以使用如下SQL语句开启你数据库的代理服务:
ALTER DATABASE 你的库名 SET ENABLE_BROKER
开始配置项目
我这里直接拿我的第一个Demo来配置了,首先你要引用
using Microsoft.AspNet.SignalR.SqlServer;
这个类库,..如果没有的话可以通过NuGet去下载.
任何Hub中的代码都不需要修改,上面我提到过,启动器Owin,我们这里直接进入到Owin中,加入如下代码:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.SqlServer;
[assembly: OwinStartup(typeof(SignalRTest.MyStartup))]
namespace SignalRTest
{
public class MyStartup
{
public void Configuration(IAppBuilder app)
{
//加入如下代码,Sqlconn为你的SQL数据库连接字符串.
string sqlconn = "您的SQL数据库联接字符串";
GlobalHost.DependencyResolver.UseSqlServer(sqlconn);
//第一版Demo中我们一直只有这句代码.
app.MapSignalR();
}
}
}

这样我们就完成了整个负载均衡情况下的配置.
参考资料:
http://www.cnblogs.com/GuZhenYin/p/4635675.html
SignalR2.0开发实例之——负载均衡的更多相关文章
- SignalR2.0开发实例之——设置时间、后台其他地方使用集线器、使用自己的连接ID
一.连接的生命周期设置: 如下: // 该值表示连接在超时之前保持打开状态的时间长度. //默认为110秒 GlobalHost.Configuration.ConnectionTimeout = T ...
- SignalR2.0开发实例之——私聊
一.前言 继续上一章的补充,这章介绍使用私聊的功能.主要通过一个方法 Clients.Client(Context.ConnectionId).showMessage(msg); SignalR框 ...
- SignalR2.0开发实例之——群发消息
一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...
- SignalR2.0开发实例之——创建房间聊天
SignalR作为一个强大的集线器,已经在hub里面集成了Gorups,也就是分组管理,使用方法如下: //作用:将连接ID加入某个组 //Context.ConnectionId 连接ID,每个页面 ...
- Nginx+Tomcat多实例及负载均衡配置
Nginx+Tomcat多实例及负载均衡配置 采用nginx的反向代理负载均衡功能,配合后端的tomcat多实例来实现tomcat WEB服务的负载均衡 01 安装nginx服务 安装所需的pcre库 ...
- Nginx 配置实例-配置负载均衡
Nginx 配置实例-配置负载均衡 0. 实例效果 1. 两个 tomcat 的安装(可选) 1.1 tomcat8081 的安装 1.1.1 tomcat8081 安装包的装备 1.1.2 tomc ...
- [转]Haproxy 1.5.0 正式发布,Web 负载均衡
From : http://www.oschina.net/news/53070/haproxy-1-5-0 经过 4 年的不懈努力,HAProxy 1.5.0 终于发布了! 相对于 1.4 版本来说 ...
- 一篇对OAuth2.0开发实例的介绍
今天看到了博友对SSO的文章,SSO单点登录的讲解突然想写一篇关于OAuth2.0用户授权的介绍. 应用场景:在APP或者网页接入一些第三方应用时,时长会需要用户登录另一个合作平台,比如QQ,微博,微 ...
- tomcat多实例及负载均衡
[root@localhost ~]# tar fx apache-tomcat-8.5.40.tar.gz [root@localhost ~]# tar fx jdk-8u191-linux-x6 ...
随机推荐
- Canvas -画图 关键字
颜色.样式和阴影 属性 描述 fillStyle 设置或返回用于填充绘画的颜色.渐变或模式 strokeStyle 设置或返回用于笔触的颜色.渐变或模式 shadowColor 设置或返回用于阴影的颜 ...
- STL之优先队列(priority_queue)
转自网上大牛博客,原文地址:http://www.cnblogs.com/summerRQ/articles/2470130.html 先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对 ...
- 刷入临时recovery
@echo off @echo 手机进 Fastboot 模式 fastboot.exe boot recovery.img @echo. @echo 等待手机进入临时REC pause echo o ...
- MemCache内存缓存系统
memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速, 默认情况下占用的端口号为:11211. 在memachec ...
- Ubuntu 下对ADT 添加别名(alias)
1:~$ vim .bashrc 2:在打开的.bashrc文件中加入: alias adt='./adt-bundle-linux-x86-20130729/eclipse/eclipse' 3:保 ...
- java各种排序实现
排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序队列. 对一个排序算法来说,一般从下面3个方面来衡量算法的优劣: 时间复杂度:它 ...
- 设定PCB电路板形状和物理边界
1 设定PCB电路板形状和物理边界 在Protel DXP的PCB板文件向导中,我们已经初步确定了电路板的形状和物理边界.但我们在绘制PCB板之前,也许还会对电路板的边界的细节加以调整.如果我们要对电 ...
- Android 实现ActionBar定制
我们在使用Android手机时,经常发现应用中的ActionBar和我们平时使用的ActionBar相差非常大.简单的说就是,其他应用的 ActionBar为什么那么绚丽,自己应用的ActionBar ...
- PC格局已改变 联想未来的短板在哪里?
PC格局已改变 联想未来的短板在哪里? 作者:孙永杰2013-11-13 11:34评论:15 [PConline 品科技](原文标题:PC格局已改:联想未来的短板在哪里?)近日,联想集团公布了截 ...
- 九度oj 1482:玛雅人的密码
题意:输入一个长度为n(2<=n<=13)的字符串(所有字符为'0','1'或'2'),通过交换相邻的两个字符,至少要交换多少次才能处出现字串"2012",输出这个值, ...