【问题标题】:Does SignalR (v2+) work with Sticky Sessions without a Backplane?SignalR (v2+) 是否适用于没有背板的粘性会话?
【发布时间】:2014-10-28 04:42:15
【问题描述】:

使用粘性会话是否是受支持的横向扩展方案?有没有人使用 Sticky Sessions 部署 SignalR,是否有任何意外问题?

我们正在研究 SignalR 的负载平衡、基于广播的项目(类似于股票行情),其中消息延迟是一个重要因素。在阅读了 Scale Out 文档之后,似乎背板模型可能会在消息中引入显着的延迟,尤其是在消息速率很高的情况下。

我发现一些参考资料暗示它会产生一些副作用,但不会影响可靠性和性能。

谢谢!

【问题讨论】:

  • 完全可以接受的问题。赞成将不公平和未评论的反对票归零。

标签: signalr load-balancing


【解决方案1】:

如果您在没有背板的情况下使用 SignalR,则任何客户端方法调用都只能到达直接连接到进行调用的服务器的客户端。

如果你只使用Clients.Caller 这可能没问题,因为调用者应该总是回到同一台服务器给定粘性会话。如果您使用Clients.AllClients.OthersClients.Client(connectionId)Clients.User(userName)Clients.Group(groupName) 等,这可能会成为一个问题...在这些情况下,任何连接到不同于执行Clients...无论客户端是否连接到同一个Hub,是否有正确的connectionId等,代码都不会收到调用...

【讨论】:

  • 谢谢,所以如果我们的场景是服务器向(大多数)SignalR 用户组广播更新(类似于股票行情),我们应该可以吗?例如,如果我们有一个 Windows 服务连接到每个 SignalR 服务器并通过每个集线器进行广播。
  • 假设您正在从每个服务器广播完全相同的消息,这可能会起作用。请记住,如果没有背板,您将无法与连接到另一台服务器的 SignalR 客户端通信。
猜你喜欢
  • 2016-12-09
  • 1970-01-01
  • 2018-05-19
  • 2017-05-17
  • 2020-02-25
  • 2022-06-12
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
相关资源
最近更新 更多