c# - 使用 asp net core SignalR 应用程序进行水平缩放
问题描述
我的 docker swarm 配置中有一个带有 Redis 背板的 asp net core signalR 应用程序。
我需要获得与我的应用程序的所有连接
只有 1 个副本,我可以创建一个这样的列表:
public static readonly List<string> Connected = new();
我可以在连接/断开连接时从该列表中添加/删除用户;这种方法工作正常。但是,当我通过添加实例来扩大规模时,这将停止工作。
问题:我如何在水平缩放时检查用户是否已连接?
我阅读了这个信号器指南,我喜欢通过数据库实现,但我无法理解如何在服务器重新启动时验证连接。
例如:
2 台服务器,1 台 Redis,1 台带连接的数据库
一切正常,但如果 1 台服务器崩溃,它不会OnDisconnectedAsync
在集线器中触发,因此我将无法从数据库中删除连接。
解决方案
推荐阅读
- performance - NEO4J - 可选查询非常慢
- android - Javamail Transport.send(message) 在使用 kotlin 的 android 中不起作用
- git - GIT:跨多台机器工作时的分歧分支。`rebase false`、`rebase true` 和 `ff only` 选项有什么作用?
- outlook - Outlook Web 插件中的访问任务 (ToDo) 对象
- ruby - “初始化中的块:未初始化的常量”的红宝石错误,但与 irb 一起运行良好
- jquery - 如何在 Parcel 中使用 jQuery UI
- plot - 如何获得 RSI 峰值的绘图线?最后 x 个小节中的最高峰
- android - 尝试使用 glide 和 volley 从 URL 获取图像,得到错误 onResponse 方法
- node.js - 通过从流中添加文件来创建 .zip 存档
- r - R脚本,如何对因子值进行分组和最大值?