0

SignalR 文档说,在服务器广播类型的负载/实现的情况下,横向扩展/背板工作得很好。但是,我怀疑在纯服务器广播的情况下,它会导致向客户端发送重复的消息。考虑以下场景:

  1. 我有两个集线器实例,位于我的网络场的负载均衡器后面的两台网络服务器上。
  2. 每个服务器上的集线器实现了一个用于数据库轮询的计时器,以获取一些更新并以组的形式广播给客户端,按主题 id 分组。
  3. 组/主题的客户端可能在两个服务器之间划分。
  4. 两个中心实例都将从数据库中获取相同或重叠的更新。
  5. 现在,当每个集线器通过背板向客户端发送更新时,会不会导致向客户端发送重复更新?

请建议。

4

1 回答 1

0

问题不在于 SignalR,而在于您的数据库轮询存在于您的集线器内。背板可以正确处理广播复制,但如果您向集线器添加其他职责,那就是另一回事了。那是复制消息的部分,而不是 SignalR,因为现在您有 N 个轮询器在所有服务器实例上进行广播。

例如,您可以将该逻辑从集线器中删除到其他东西中,并让您的服务器应用程序的一个实例使用这个新部分,以便通过轮询来生成消息,可能使用一个配置来决定哪一个. 这样,您只能从那里发送消息,而 SignalR 的背板将负责复制。这只是一个非常基本的建议,可以用不同的方式完成,但关键是您的轮询器不应该被复制,这与 SignalR 没有直接关系。

轮询可能不是处理您的情况的最佳方式也是事实,但 IMO 将回答一个不同的问题。

于 2015-04-05T17:06:27.310 回答