我们正在开发一个系统,该系统使用 SignalR 推送一些业务重要指标的频繁更新。我们将有中等数量的连接客户端,从 50 个到 1000 个不等,每个客户端都需要一个唯一的有效负载。
根据 Damian Edwards 的演讲,我们的负载配置文件与特定服务器横向扩展模式最匹配,在这种模式下,我们基本上分配客户端连接到拓扑中的特定 SignalR 服务器,而不是使用背板。
关于其工作原理的粗略伪代码是客户端在我们的负载平衡 API URL 上执行 GET,无论哪个服务器被击中,都会使用其 URL 进行响应,然后客户端将 SignalR 客户端库配置为使用该 URL 进行连接。
这看起来可以很好地在本地运行,但现在我们也在计划 Azure 部署。如果没有此要求,Azure 网站非常适合。但是,这种模式要求我们能够可靠地识别 Web 站点中的各个实例,而我们看不到这样做的方法。
这只是破坏了 Azure 网站提供的抽象吗?我们是否必须使用 VM 或 Web 角色来为每个 SignalR 实例获取可靠、一致的 IP 或可寻址 URL?或者人们是否有另一种方式将具有特定服务器的 SignalR 部署到 Azure。