3

我正在开发 SignalR 应用程序。我的应用程序的多个实例将在负载均衡器后面的不同服务器上运行。我阅读了背板,发现它主要用于服务器故障并处理多个服务器之间的请求跳跃。(可能还有其他好处)。

请考虑以下情况并建议我是否仍需要背板。

我正在使用粘性负载平衡(即来自客户端的所有后续请求都发送到同一台服务器)?所以在好的情况下没有请求跳跃的机会。

我如何处理服务器宕机场景 - 当服务器宕机时。客户端尝试重新连接并收到“404-not found”错误。此时客户端启动新连接并且它可以工作。

4

1 回答 1

1

开发应用时有背板的主要原因SignalR来自以下场景:

  • 假设您有 2 个 Web 服务器托管您的应用程序,serverA并且serverB
  • 您有 2 个客户端连接到您的应用程序,client1分别由谁提供服务serverAclient2由谁提供服务serverB

开发应用程序时的一个很好的假设SignalR是您希望这 2 个客户端相互通信。于是client1发消息给client2

client1在发送消息的那一刻,他的请求由 完成server1。但server1在内存中保留连接用户的映射。它寻找client2,但client2保存在 的内存中serverB,因此消息永远不会到达那里。

通过使用背板,基本上进入一个服务器的每条消息都会广播到所有其他服务器。

一种解决方案是使用称为背板的组件在服务器之间转发消息。启用背板后,每个应用程序实例都会向背板发送消息,而背板会将它们转发给其他应用程序实例。

取自SignalR Introduction to scaleout

请务必使用 SignalR 文档中的 Redis 检查此背板

希望这可以帮助。祝你好运!

于 2015-09-10T07:02:44.590 回答