因此,无需轮询服务器,或提交针对更新的新 HTTP 请求,即可更新客户端。
Azure SignalR Service 的用途是什么?
需要将数据从服务器实时推送到客户端的任何方案都可以使用 Azure SignalR 服务。
通常需要轮询服务器的传统实时功能也可以使用 Azure SignalR 服务。
下面是适合使用 Azure SignalR 服务的一些示例:
- 高频率数据更新: 游戏、投票、轮询、竞拍。
- 仪表板和监视: 公司仪表板、金融市场数据、即时销量更新、多玩家游戏排行榜和 IoT 监视。
- 聊天: 实时聊天室、聊天机器人、在线客户支持、实时购物助手、信使、游戏内聊天,等等。
- 地图实时定位: 物流跟踪、交货状态跟踪、运输状态更新、GPS 应用。
- 实时定向广告: 个性化的实时推送广告和套餐、交互式广告。
- 协作式应用: 共同著作、白板应用和团队会议软件。
- 推送通知: 社交网络、电子邮件、游戏、行程通知。
- 实时广播: 实时音频/视频广播、实时字幕、翻译、活动/新闻广播。
- IoT 和互联设备: 实时 IoT 指标、远程控制、实时状态和位置跟踪。
- 自动化: 基于上游事件的实时触发器。
问题描述
Azure SignlaR 是否支持十万人同时在线,需要开多少个连接单位?
回答问题
如果是近十万人,那么至少会有十万的客户端连接,所以根据SignalR的文档计算,需要有100个单元。
(注:如果连接数进一步增加,将遭到连接限制。)
性能因素
理论上,Azure SignalR 服务容量受计算资源的限制:CPU、内存和网络。以下因素会影响入站和出站容量:
-
SKU 层(CPU/内存)
-
连接数
-
消息大小
-
消息发送速率
-
传输类型(WebSocket、Server-Sent-Event 或 Long-Polling)
-
用例场景(路由开销)
-
应用服务器和服务连接(服务器模式)
如何评估入站/出站容量或确定哪个层适合特定的用例?
那么,请检查每个层的最大入站和出站带宽。
如:十万)。
推算公式
#出站连接数计算
outboundConnections = outboundBandwidth * sendInterval / messageSize
#入站带宽
inboundBandwidth = inboundConnections * messageSize / sendInterval
#出站带宽
outboundBandwidth = outboundConnections * messageSize / sendInterval
-
例如,每条消息花费 0.5 秒意味着每秒可发送两条消息。
-
小于 1,024 字节的小型消息的性能影响与 1,024 字节消息类似。
-
outboundConnections:接收消息的连接数。
-
inboundConnections:发送消息的连接数。
快速参考表:
| 回显 | 单元 1 | 单元 2 | 单元 5 | 单元 10 | 单元 20 | 单元 50 | 单元 100 |
| 连接 | 1,000 | 2,000 | 5,000 | 10,000 | 20,000 | 50,000 | 100,000 |
| 入站带宽 | 2 MBps | 4 MBps | 10 MBps | 20 MBps | 40 MBps | 100 MBps | 200 MBps |
| 出站带宽 | 2 MBps | 4 MBps | 10 MBps | 20 MBps | 40 MBps | 100 MBps | 200 MBps |
| 广播 | 单元 1 | 单元 2 | 单元 5 | 单元 10 | 单元 20 | 单元 50 | 单元 100 |
| 连接 | 1,000 | 2,000 | 5,000 | 10,000 | 20,000 | 50,000 | 100,000 |
| 入站带宽 | 4 KBps | 4 KBps | 4 KBps | 4 KBps | 4 KBps | 4 KBps | 4 KBps |
| 出站带宽 | 4 MBps | 8 MBps | 20 MBps | 40 MBps | 80 MBps | 200 MBps | 400 MBps |
参考资料
https://docs.azure.cn/zh-cn/azure-signalr/signalr-overview
https://docs.azure.cn/zh-cn/azure-signalr/signalr-concept-performance#quick-evaluation