1

我们正在开发一个系统,该系统使用 SignalR 推送一些业务重要指标的频繁更新。我们将有中等数量的连接客户端,从 50 个到 1000 个不等,每个客户端都需要一个唯一的有效负载。

根据 Damian Edwards 的演讲,我们的负载配置文件与特定服务器横向扩展模式最匹配,在这种模式下,我们基本上分配客户端连接到拓扑中的特定 SignalR 服务器,而不是使用背板。

关于其工作原理的粗略伪代码是客户端在我们的负载平衡 API URL 上执行 GET,无论哪个服务器被击中,都会使用其 URL 进行响应,然后客户端将 SignalR 客户端库配置为使用该 URL 进行连接。

这看起来可以很好地在本地运行,但现在我们也在计划 Azure 部署。如果没有此要求,Azure 网站非常适合。但是,这种模式要求我们能够可靠地识别 Web 站点中的各个实例,而我们看不到这样做的方法。

这只是破坏了 Azure 网站提供的抽象吗?我们是否必须使用 VM 或 Web 角色来为每个 SignalR 实例获取可靠、一致的 IP 或可寻址 URL?或者人们是否有另一种方式将具有特定服务器的 SignalR 部署到 Azure。

4

1 回答 1

0

默认的 Azure 网站行为实际上可能对你有用。

Azure 网站在客户端第一次请求后将关联性令牌保存为 cookie。该关联令牌确保来自该客户端的所有未来请求都被路由到网站的同一实例。

如果您出于某种原因真的想自己处理负载平衡,那也是可能的。有一个 API 可让您获取所有站点实例的关联令牌。

有关更多详细信息,请参见此处:http: //blog.amitapple.com/post/2014/03/access-specific-instance/#.VH-KOHl0xUY

于 2014-12-03T22:04:50.340 回答