【问题标题】:Load balancing: one user, multiple devices to same server负载均衡:一个用户,多台设备到同一台服务器
【发布时间】:2013-06-10 12:31:26
【问题描述】:

我有以下情况:用户使用 PC 登录 ASP.NET MVC4 应用程序。此应用程序在负载平衡器后面的多个 IIS 服务器上运行。在此之后,在服务器和客户端之间建立 SignalR 连接。当用户登录到这个主应用程序时,可以使用平板电脑或手机(可以是不同的网络)添加第二个屏幕。在这里,用户还可以登录并获得 SignalR 连接。

在服务器上的应用程序中发生了一种事件,该事件必须通过 SignalR 发送到两个设备。因此需要两台设备都连接到同一个 IIS 服务器。

我完全没有使用负载平衡器的经验。 我可以强制负载均衡器使用多个设备的一个用户始终使用其所有设备路由到同一台服务器吗? 如果是,推荐使用哪种负载均衡器?

【问题讨论】:

    标签: signalr load-balancing sticky affinity


    【解决方案1】:

    一些负载平衡器可以通过使用 cookie 来管理关联性。您可能能够摆脱对同一登录用户的所有连接使用相同的 cookie 值。 我知道梭子鱼产品支持这种方法。我想其他人也会,你需要研究。

    另一种方法是尝试回避此问题,并允许通过任何 IIS 实例连接到您的集线器,并让任何 IIS 实例能够为请求提供服务。如果这意味着在实例之间共享一些信息,那么您可以使用共享缓存(AppFabric、NCache、MemCached)作为实现此目的的一种手段。 这种方法可以让您在整个农场中更好地分配负载。

    【讨论】:

    • 当我在共享缓存中写入我需要分派到设备的事件时,每个服务器都必须轮询缓存以查看是否有一些事件要发送到设备,并不理想。跨度>
    • 当然。这是一种方法,您需要权衡成本/收益。几年前我在一个项目中工作,我们有一个服务器场,同样,我们使用 SignalR 将结果返回到浏览器,在该浏览器中,浏览器在初始请求后可能已连接或未连接到原始 IIS 实例。我们当时打了一个电话,让它轮询一个中心的“真相来源”,而不是试图强迫亲和。在我们的情况下,这对我们来说是正确的,我并不是说它适合你的情况,所以你应该做一些总结。
    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多