环境: .NET框架4.8后端。SignalR用于一些消息传递。
问题:应用程序在单个服务器上运行,需要扩展。有一个单一的故障点也是极其糟糕的可用性。需要更高的性能和可用性。
可能的解决方案:使用Redis背板。这允许多个服务器将/pub转到Redis背板上,允许至少以这种方式进行水平扩展。
问题的解决方案:如果我错了,纠正我:如果所有服务器在单个Redis背板上都是可靠的,那么单点故障问题仍然存在。此外,单背板的性能可能会在未来耗尽。
问题:,那么Redis背板是如何缩小的呢?如何使用多个背板并确保它们的数据保持同步?
https://learn.microsoft.com/en-us/aspnet/core/signalr/redis-backplane "Redis群集是一种通过使用多台Redis服务器来实现高可用性的方法。
https://learn.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-redis "SignalR扩展不支持Redis集群“。
在使用SignalR和多个Redis背板时是否存在一些困难?如果这是个糟糕的主意,那么还有哪些选项可以替代Redis或SignalR呢?
发布于 2022-11-30 22:17:42
SignalR for .NET框架不折旧。如果您想要“防未来”您的解决方案,我建议切换到SignalR for .NET核心。Core也支持Azure背板,但不再支持SQL背板。
一种方法是让每个服务器监视Redis背板是否是我们,如果不是,则切换到另一个服务器。在我的实现中,每个SignalR服务器通过背板向其他服务器发送消息,这样他们就知道有多少服务器在背板上,并且背板正在工作。
https://stackoverflow.com/questions/74616568
复制相似问题