确定信号器背板是否必要

时间:2016-01-11 17:31:28

标签: websocket signalr

我无法确定在我的场景中是否需要使用Signalr背板。不幸的是,我无法得到我需要自己测试的测试环境所以我来这里;)

在我的场景中,我们使用signalr与特定客户端(使用连接ID)从服务器应用程序(这是一个Windows服务)进行通信。当客户访问某个页面时,我们会挂钩信号器OnConnected事件并注册用户以在我们的数据存储中接收通知。现在我们存储连接ID,它们来自的服务器的IP以及一些其他特定于应用程序的信息。

当服务器进程运行并确定它需要向客户端发送消息时,它使用在客户端连接/订阅(代理缓存,顺便说一句)时捕获的IP构建代理并发送消息。

现在工作正常。但是,我担心这在负载平衡的情况下不起作用。我在想如果使用网络套接字没有问题,但是让我们说它回归到长轮询。不可能发生这种情况:

  • 用户A访问该页面并通过来自Web服务器X的信号器使用IP 1.1.1.1
  • 进行注册
  • 另一个长轮询请求来自用户A,但它通过带有IP 2.2.2.2的Web服务器Y
  • 服务器进程运行并确定它需要发送消息,但它使用用户连接的服务器的IP - 1.1.1.1
  • 无法将消息发送到客户端

我对这种想法有所了解吗?我正在努力避免使用背板,因为每个横向扩展选项都会给我们带来问题。

1 个答案:

答案 0 :(得分:3)

简短回答是,在负载平衡环境中总是需要背板

较长的版本,您有2台服务器A和B负载均衡。用户可以连接到A,用户可以自愿断开连接,也可以通过网络超时,或者通过signalR刷新(有几个错误打开,这是一个特定的回归,但仍然可以在以后的版本中重新合并,与使用的通信无关)但基本上用户有时可以找到他自己" suddnely"连接到服务器B.现在服务器A将无法向用户发送数据。