我正在开发 SignalR 应用程序。我的应用程序的多个实例将在负载均衡器后面的不同服务器上运行。我阅读了背板,发现它主要用于服务器故障并处理多个服务器之间的请求跳跃。(可能还有其他好处)。
请考虑以下情况并建议我是否仍需要背板。
我正在使用粘性负载平衡(即来自客户端的所有后续请求都发送到同一台服务器)?所以在好的情况下没有请求跳跃的机会。
我如何处理服务器宕机场景 - 当服务器宕机时。客户端尝试重新连接并收到“404-not found”错误。此时客户端启动新连接并且它可以工作。
我正在开发 SignalR 应用程序。我的应用程序的多个实例将在负载均衡器后面的不同服务器上运行。我阅读了背板,发现它主要用于服务器故障并处理多个服务器之间的请求跳跃。(可能还有其他好处)。
请考虑以下情况并建议我是否仍需要背板。
我正在使用粘性负载平衡(即来自客户端的所有后续请求都发送到同一台服务器)?所以在好的情况下没有请求跳跃的机会。
我如何处理服务器宕机场景 - 当服务器宕机时。客户端尝试重新连接并收到“404-not found”错误。此时客户端启动新连接并且它可以工作。
开发应用时有背板的主要原因SignalR
来自以下场景:
serverA
并且serverB
client1
分别由谁提供服务serverA
和client2
由谁提供服务serverB
开发应用程序时的一个很好的假设SignalR
是您希望这 2 个客户端相互通信。于是client1
发消息给client2
。
client1
在发送消息的那一刻,他的请求由 完成server1
。但server1
在内存中保留连接用户的映射。它寻找client2
,但client2
保存在 的内存中serverB
,因此消息永远不会到达那里。
通过使用背板,基本上进入一个服务器的每条消息都会广播到所有其他服务器。
一种解决方案是使用称为背板的组件在服务器之间转发消息。启用背板后,每个应用程序实例都会向背板发送消息,而背板会将它们转发给其他应用程序实例。
取自SignalR Introduction to scaleout
请务必使用 SignalR 文档中的 Redis 检查此背板。
希望这可以帮助。祝你好运!