Nie*_*nch 4 .net c# asp.net azure signalr
我将创建一个无状态,可伸缩的Web应用程序.这是我的第二天性而不是问题.
但是,这个将使用SignalR,因此将建立到每个用户的WebSocket连接.
想象一下,我的Web应用程序扩展到5个不同的Web服务器,处理来自5000个并发用户的负载.这些用户将建立WebSocket连接,即使负载均衡器确保负载在5个Web服务器之间分配,每个用户也将连接到一个特定的Web服务器.
现在问题来了.如果发生事件并且我想将此事件发送给我的某个连接用户,我该如何做?
用户可以连接到任何Web服务器,所以我想我要么需要一些数据库来跟踪哪些用户连接到哪个Web服务器?或者我需要将所有消息发送到所有Web服务器,如果他已连接,它将把消息传递给用户?
后者似乎不具备可扩展性.第一个似乎就是我必须做的事情,除非这里有人能告诉我一个最佳实践方法来应对这一挑战.
您需要在您的应用程序中引入所谓的背板.背板基本上是应用程序中的一个额外消息层,它与SignalR集成并处理serverfarm的分布式特性.
目前,您可以使用多种技术,我建议您看看Redis,我已经设法在具有良好性能特征的大型项目中使用它:
https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-redis
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |