Signalr 负载平衡:一个用户,多个设备到同一台服务器

Signalr 负载平衡:一个用户,多个设备到同一台服务器,signalr,load-balancing,sticky,affinity,Signalr,Load Balancing,Sticky,Affinity,我遇到以下情况:用户使用PC登录ASP.NET MVC4应用程序。此应用程序在负载平衡器后面的多个IIS服务器上运行。在此之后,在服务器和客户机之间建立信号机连接。当用户登录到此主应用程序时,可以使用平板电脑或手机(可以是不同的网络)添加第二个屏幕。在这里,用户还登录并获得信号器连接 在服务器上的应用程序中发生一种类型的事件,必须通过信号器将此事件发送到两个设备。因此,需要将两个设备连接到同一台IIS服务器 我根本没有使用负载平衡器的经验。 我是否可以强制一个负载平衡器让一个用户使用多个设备,始

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

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

我根本没有使用负载平衡器的经验。 我是否可以强制一个负载平衡器让一个用户使用多个设备,始终将其所有设备路由到同一台服务器?
如果是,建议使用哪种负载平衡器?

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

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

当我在共享缓存中写入需要发送到设备的事件时,每个服务器都必须轮询缓存,以查看是否有一些事件要发送到设备,这并不理想。确定。这是一种方法,你需要权衡成本/收益。几年前,我在一个项目中工作,我们有一个服务器场,类似地,我们使用signar将结果返回到浏览器,浏览器在最初请求后可能连接到原始IIS实例,也可能没有连接到原始IIS实例。我们当时打电话让它调查一个中心的“真相来源”,而不是试图强迫亲和力。在我们的情况下,这对我们来说是正确的,我不是说它符合你的情况,所以你应该做一些算术。