我正在考虑在 Azure 中托管的 .NET 中构建一些 signalR 应用程序(自托管工作线程)。
我想使用 Azure Redis 进行扩展并设置背板,但是当我设置新的 Redis 缓存时,我对“最多 X 个连接”的实际含义感到困惑。
例如,“CO 基本 250MB 缓存”具有“最多 256 个连接”,“C1 标准 1GB 缓存”具有“最多 1,000 个连接”
为了确认,我可以使用“最多 256 个连接”来表示我可以(理论上)最多有 256 个工作线程同时推送 SignalR 消息...或者这是否意味着连接总数(用户)从我的网站连接到我的 SignalR 并反过来在 Redis 缓存中推送消息?
显然,如果这意味着 256 个工作人员,那就没问题 - 但如果这意味着来 self 的网站的不同连接总数,那就是一个交易破坏者
谢谢,如果这是一个愚蠢的问题,我们深表歉意!
最佳答案
从 SignalR 背板的角度来看,SignalR Websocket 连接与 Redis 缓存服务器的连接数量无关。
用户的 SignalR 连接与 SignalR Hub 服务器相连,在横向扩展时,SignalR Hub 服务器又充当 Redis 客户端。 signalr 中的 Redis 客户端使用标准 ConnectionMultiplexer 进行连接,该连接在内部处理与 Redis 的连接。指导意见是在整个应用程序中使用单个多路复用器,或者使用最少的数量。
Redis 客户端用于发送/接收消息,而不是为每个操作创建/访问 key ,因此打开单个 channel 并在该单个 channel 上交换所有消息是有意义的。
我不确定该连接复用器如何管理 Redis 连接,但我们确实使用 Redis 背板在 Azure 上为我们的应用程序进行 SignalR 横向扩展。
我们对应用程序进行了负载测试,大约 20 万个始终处于事件状态的 Signalr Websocket 连接扩展到 10 多个服务器,Azure Redis 缓存连接计数平均徘徊在 50 个左右,几乎从未超过 60 个。 .
我认为可以肯定地说,Azure Redis 缓存的连接限制并不是 SignalR 的限制因素,除非扩展到数百台服务器。
关于azure - 对 Azure Redis 连接限制(最多 X 个连接)感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42584460/