如何将信号器扩展到大量用户

时间:2014-03-13 13:13:50

标签: c# jquery ajax signalr asp.net-mvc-5

我已经阅读了很多关于在信号器中扩展的内容,而收藏似乎是在以下提到的那些: http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-in-signalr 即以下服务巴士: - SQL - Redis - Azure

问题甚至在文中说明: “使用背板时,最大消息吞吐量低于客户端直接与单个服务器节点通信时的消息吞吐量。这是因为背板将每条消息转发到每个节点,因此背板可能成为瓶颈。”

我正在创造......等待它......是的!聊天应用程序。我希望能够将其扩展到数百万用户。无论我是否做大(哈!),我都计划逐步记录这个过程。现在我已准备好大部分应用程序,我想知道这个扩展问题。我看了这个非常有用的视频:

http://channel9.msdn.com/Events/Build/2013/3-502

跳到55分钟。 “自定义横向扩展”。以及其他想法,如过滤消息总线。

现在希望你很兴奋,而不是因为无聊而无法自杀...... 我的想法是做如下:   - 每间热门客房提供一台服务器   - 因此,每个房间都可以轻松应对流量,信号器可以很好地向客户端广播并将消息日志存储到GROUPS服务器(即每组保存所有组消息)   - 然后私人消息需要使用背板或服务器推送   - 因此需要在sql server DB中更新用户连接(足够简单),并通过ajax而不是signalr发布数据

但是,我想探索所有选项。 (如果你有它们,请发布任何更好的想法)我也想尝试测试REDIS的私人消息。为什么?!!因为如果我希望用户能够拥有私人消息组...并且用户1,2和3都非常烦人并且在服务器1,2和3上。(啊,你很少......!)为了更好但是,我希望实现一个Redis消息过滤器,只发送给服务器上的客户端!

那么,我究竟在寻找什么?基本上我需要资源。我找不到任何有用的Redis消息总线示例(asp.net示例没有过滤器。是的,我可以添加AddResolverblabla行!:)

我还需要以下示例:   - 服务器到服务器ajax帖子:我是服务器noobie!   - 一个负载均衡器示例,用于指定每个聊天室(或某个页面)的特定空间   - Redis消息总线可以处理多少条消息?即使使用过滤器,它也很容易变成瓶颈吗?我找不到任何带过滤器的表演的例子

最后我需要你的大脑! ;)如果你坐在那里认为有更好的方法,请告诉我。

非常感谢所有读过这篇文章的人,我期待着你们的回复。 (如果你发现它有用,请向上投票!有很多论坛有类似的问题,但没有正确的答案)

1 个答案:

答案 0 :(得分:4)

我打算在找到文档时开始回答这个问题。希望更多人加入!

1

How to define a connection string to a SQL Server 2008 database?

2

SQL Server过滤器: http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.sqlfilter.aspx

3。网络农场

http://weblogs.asp.net/scottgu/archive/2010/09/08/introducing-the-microsoft-web-farm-framework.aspx

4。 WF教程:

http://www.asp.net/web-forms/tutorials/deployment/configuring-server-environments-for-web-deployment/creating-a-server-farm-with-the-web-farm-framework


2014年3月12日 一个可能更好的解决方案是使用memecache - facebook基于什么


仍然需要查找是否可以指定:使用signalr或使用redis消息总线。

仍然需要找到redis过滤器教程

14/03

GlobalHost.DependencyResolver.UseRedis("服务器",端口,"密码"," AppName"); 定义要使用redis的服务器。需要一个过滤器

2014年6月10日

在进一步研究扩展后,可能的问题是不要将服务器视为通信网络,而是自足。服务器使用发送来更新数据库并使用计时器,您可以从数据库中为当前登录到该服务器的用户获取所有必需信息(消息等)。因此,它将更容易扩展。然而,并不便宜。