使用 Windows Azure 服务总线扩展 SignalR

Posted

技术标签:

【中文标题】使用 Windows Azure 服务总线扩展 SignalR【英文标题】:Scaling SignalR with Windows Azure Service Bus 【发布时间】:2012-07-26 14:36:31 【问题描述】:

我有一个应用程序,它使用 SignalR 连接我网站上的用户进行聊天等事情。如果我只是第一次向公众开放我的网站,我会假设在使用的前几个月我只需要一个实例(只要需求不需要另一个实例)。我可以在同一个实例中运行我的 signalR 集线器类而不使用 Windows Azure 服务总线,然后在我使用 2 个或更多实例后将其移动到服务总线吗?

还有一个小问题,在 Windows Azure 服务总线网站上它说:

The Service Bus enables up to 100 concurrent connections to an entity.

这是否意味着只有 100 个并发用户连接到服务总线?或 100 个与实例的并发连接?我可以看到就大型网站而言,只有 100 个并发用户可能非常有限,所以我假设这意味着实例?当您移动到具有并发连接用户的服务总线时,对于架构将如何工作有点困惑。

【问题讨论】:

你也可以考虑Redis。看看:github.com/SignalR/SignalR/wiki/… 【参考方案1】:

您的用户将连接到您的实例,而您的实例将连接到服务总线。我不是说 1 个实例 = 1 个连接(我不知道 SignalR.WindowsAzureServiceBus 在内部是如何工作的),但是运行一些实例不会达到限制。

SignalR.WindowsAzureServiceBus 将服务总线用作...服务总线并在实例之间分发消息,以确保您可以将 SignalR 与多个实例一起使用。

您确实可以在没有 Windows Azure 服务总线的情况下在单个实例中运行“普通”SignalR,稍后将其更改为 SB 实现(有关步骤,请参阅此 wiki:http://www.asp.net/signalr/overview/performance/scaleout-with-windows-azure-service-bus)。但您应该考虑到,Windows Azure SLA 仅适用于您运行 2 个或更多实例的情况。

【讨论】:

以上是关于使用 Windows Azure 服务总线扩展 SignalR的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure 服务总线的可扩展请求响应模式

使用 Windows Azure 服务总线进行消息路由

Windows Azure 服务总线队列重复检测如何工作?

Windows Azure 服务总线 - 一般问题

Azure 托管服务总线:“X.509 证书 CN=servicebus.windows.net 不在受信任的人员存储中。”

带有事务的长期运行作业 Azure 服务总线的模式