如何解决SignalR多台服务器之间信息推送共享

jakey188 2014-11-14 02:41:14
用SignalR做了个在线聊天应用,由于多台服务器之间消息推送和通知不能共享。
也就是说用户在A地区的服务器发送一条消息,另一用户在B地区的服务器不能收到消息。
现在就只一台服务器部署,程序运行一段时间后,在线人数上2k,系统运行速度就下降了。
现在怎么解决这个问题,求方案,
另外SignalR需要注意哪些性能问题,由于做这个项目时对SignalR不是很熟,也是边学边卖。

效果:
如需查看实际效果:请查看http://wx.233.com/tiku/27
...全文
1153 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakey188 2014-11-17
  • 打赏
  • 举报
回复
引用 3 楼 github_22161131 的回复:
[quote=引用 2 楼 u011710947 的回复:] 开启 backplane
+1,SignalR支持Azure Service Bus、Redis和SQL Server三种Scaleout方式。 另外,聊天应用可以参考JabbR,这就是SignalR的作者写的。 [/quote] 非常感谢, 按照官方的实例, 实现了
  • 打赏
  • 举报
回复
既然基本的通讯都搞通顺了,其实改变业务架构也很容易(假设你已经有很好的测试集合的情况下)。 你需要把“用户登录”功能从原系统中分离出来,单独拿出来放到一个独立的服务器上提供服务。这样多个聊天服务器的用户名、密码都是统一的、只访问一套服务,而且可以查询到任何用户所在的子服务器。当聊天时,如果用户不在当前服务器上,那么就尝试连接这个用户所在的服务器,或者通过登录服务器转发一下(当聊天服务器部署在各种单位内部局域网里时,也能保证与外网用户聊天)。
wanghui0380 2014-11-15
  • 打赏
  • 举报
回复
A当然也可以订阅B滴消息,微软这套东西并不是单纯给网站用滴,所以并不是非要在网页上访问B才能得到B的消息,就是一个winform他一样可以订阅B的消息,具体如何订阅请参考官方那个winform版的demo(这代码用在web上一样有效,如果我没记错应该需要引用SignalR.client 类)
jakey188 2014-11-15
  • 打赏
  • 举报
回复
引用 3 楼 github_22161131 的回复:
[quote=引用 2 楼 u011710947 的回复:] 开启 backplane
+1,SignalR支持Azure Service Bus、Redis和SQL Server三种Scaleout方式。 另外,聊天应用可以参考JabbR,这就是SignalR的作者写的。 [/quote] 嗯 就是参考了JabbR 但是不太明白Scaleout的工作原理 简单看了下官方的讲解 就那么简单的配置下 像sqlserver scaleout 只建立了个空表 不太明白
jakey188 2014-11-15
  • 打赏
  • 举报
回复
引用 2 楼 u011710947 的回复:
开启 backplane
E文不好 看得有点云里雾里,看不太懂能否简单讲解下scaleout 具体指的是什么, 是不是只要按照它的配置来就可以了 但是看了下,sqlserver scaleout 只建立了个空表 不太明白
winnowc 2014-11-14
  • 打赏
  • 举报
回复
引用 2 楼 u011710947 的回复:
开启 backplane
+1,SignalR支持Azure Service Bus、Redis和SQL Server三种Scaleout方式。 另外,聊天应用可以参考JabbR,这就是SignalR的作者写的。
  • 打赏
  • 举报
回复
by_封爱 2014-11-14
  • 打赏
  • 举报
回复
你是让我们注册然后登陆然后用么.... 不明觉厉....

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧