Asp.Net SignalR 集群会遇到的问题
SignalR集群
当客户端数量上来,一台server自然是吃不消的。多个server集群部署是必然的解决方案。再通过负载均衡,嗯 简直是完美。但是问题也接踵而来。每个server只能管理到当前server下的client,比如 server1要给连接在server2的client发一条消息是实现不了的。
这时我们需要“底板”中间件,什么叫底板 ,也就是在server的集群上再加一层,由底板来维护这些server,像上面server1给连接在server2的client发消息,底板会告诉server2给client发一条消息。就达到了我们需要的效果
常用的有Redis与SqlServer,其实 Redis性能是最优的。
SqlServer来做底板
需要下载nuget包 Microsoft.AspNet.SignalR.SqlServer
然后在startup类中进行配置,也是非常简单的,数据库是signalR。把程序运行一下,我们会得到以下这些表
redis来做底板
需要下载nuget包 Microsoft.AspNet.SignalR.Redis
同样在startup类中进行配置,
GlobalHost.DependencyResolver.UseRedis("localhost", 6379, string.Empty, "signalR");