【Azure 应用服务】Azure SignalR 是否可以同时支持近十万人在线互动
什么是 Azure SignalR 服务?
Azure SignalR Service 简化了通过 HTTP 向应用程序添加实时 Web 功能的过程。 这种实时功能允许服务将内容更新推送到连接的客户端,例如单页 Web 或移动应用程序。 因此,无需轮询服务器,或提交针对更新的新 HTTP 请求,即可更新客户端。

Azure SignalR Service 的用途是什么?
需要将数据从服务器实时推送到客户端的任何方案都可以使用 Azure SignalR 服务。
通常需要轮询服务器的传统实时功能也可以使用 Azure SignalR 服务。
Azure SignalR 服务已在各种行业中使用,适用于需要实时内容更新的任何应用类型。 下面是适合使用 Azure SignalR 服务的一些示例:
- 高频率数据更新: 游戏、投票、轮询、竞拍。
- 仪表板和监视: 公司仪表板、金融市场数据、即时销量更新、多玩家游戏排行榜和 IoT 监视。
- 聊天: 实时聊天室、聊天机器人、在线客户支持、实时购物助手、信使、游戏内聊天,等等。
- 地图实时定位: 物流跟踪、交货状态跟踪、运输状态更新、GPS 应用。
- 实时定向广告: 个性化的实时推送广告和套餐、交互式广告。
- 协作式应用: 共同著作、白板应用和团队会议软件。
- 推送通知: 社交网络、电子邮件、游戏、行程通知。
- 实时广播: 实时音频/视频广播、实时字幕、翻译、活动/新闻广播。
- IoT 和互联设备: 实时 IoT 指标、远程控制、实时状态和位置跟踪。
- 自动化: 基于上游事件的实时触发器。
问题描述
Azure SignlaR 是否支持十万人同时在线,需要开多少个连接单位?
回答问题
如果是近十万人,那么至少会有十万的客户端连接,所以根据SignalR的文档计算,需要有100个单元。

(注:每个层的 Azure SignalR 服务的承诺最大阈值。 如果连接数进一步增加,将遭到连接限制。)
性能因素
理论上,Azure SignalR 服务容量受计算资源的限制:CPU、内存和网络。以下因素会影响入站和出站容量:
SKU 层(CPU/内存)
连接数
消息大小
消息发送速率
传输类型(WebSocket、Server-Sent-Event 或 Long-Polling)
用例场景(路由开销)
应用服务器和服务连接(服务器模式)
如何评估入站/出站容量或确定哪个层适合特定的用例?
假设应用服务器足够强大,不会成为性能瓶颈。 那么,请检查每个层的最大入站和出站带宽。
如:对于单元 100,最大出站带宽为 400 MB。 对于 20 KB 消息大小,最大出站连接数应为 400 MB * 5 / 20 KB = 100,000(十万)。
推算公式
#出站连接数计算
outboundConnections = outboundBandwidth * sendInterval / messageSize
#入站带宽
inboundBandwidth = inboundConnections * messageSize / sendInterval
#出站带宽
outboundBandwidth = outboundConnections * messageSize / sendInterval
sendInterval:发送一条消息花费的时间。 通常发送每条消息需要 1 秒,即,每秒发送一条消息。 间隔越短,在一个时间段内发送的消息越多。 例如,每条消息花费 0.5 秒意味着每秒可发送两条消息。
messageSize:单个消息的大小(平均值)。 小于 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 |
参考资料
什么是 Azure SignalR 服务? https://docs.azure.cn/zh-cn/azure-signalr/signalr-overview
Azure SignalR 服务性能指南:https://docs.azure.cn/zh-cn/azure-signalr/signalr-concept-performance#quick-evaluation
【Azure 应用服务】Azure SignalR 是否可以同时支持近十万人在线互动的更多相关文章
- Azure 应用服务中的 API 应用、ASP.NET 和 Swagger 入门
学习内容: 如何通过 Visual Studio 2015 中的内置工具在 Azure 应用服务中创建和部署 API 应用. 如何使用 Swashbuckle NuGet 包动态生成 Swagger ...
- 不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序
一般我们写好了应用程序想要部署发布它,要么发布到物理机,要么发布到虚拟机,要么发布到容器来运行它.现在有了Azure应用服务,我们可以完全不用管这些东西,只管写好自己的代码,然后使用VisualStu ...
- 【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
欢迎使用 Blazor!Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的 ...
- 【Azure 应用服务】App Service 在使用GIt本地部署,上传代码的路径为/home/site/repository,而不是站点的根目录/home/site/wwwroot。 这个是因为什么?
问题描述 App Service 在使用GIt本地部署,上传代码的路径为/home/site/repository,而不是站点的根目录/home/site/wwwroot. 这个是因为什么? 并且通过 ...
- 【Azure 应用服务】备份网站时由于文件太大了,导致应用服务备份失败。如何解决?
问题描述 备份网站时由于文件太大了,导致应用服务备份失败.如何解决呢? 问题分析 App Service (应用服务)的备份功能有10GB大小的限制,超过了是无法备份成功的并且该限制是无法扩大的.查看 ...
- 尝鲜一试,Azure静态网站应用服务(Azure Static Web Apps) 免费预览,协同Github自动发布静态SPA
背景 最近在浏览微软的文档的时候发现,微软喜欢用Hugo这个文档框架,有些技术产品的文档页面就用Hugo来做的,同时搭配Github + Azure Static Web Apps Service这个 ...
- 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...
- Azure VM对远程桌面登录的支持-示例
我们在开发Windows Azure的应用程序,虽然在大部分的情况下都可以使用Azure Emulator模拟器来模拟在云端计算节点(Azure VM)的执行结果,但是并不能100%模拟真正在Azur ...
- 为 Azure 应用服务配置连续部署工作流
本快速入门介绍了如何将应用服务 GitHub 集成以实现连续部署工作流.在本教程中完成的所有操作均符合1元试用条件. 本快速入门介绍了如何将应用服务 GitHub 集成以实现连续部署工作流.在本教程中 ...
- Azure应用服务+Github实现持续部署
上次我们介绍了如何使用Azure应用服务(不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序).我们通过Visual studio新建一个项目后手动编译发布代码.然后通过F ...
随机推荐
- 用webpack给js添加上版本号
在网上查找了很多的资料. 都没有好的资源 因为我现在在项目是vuecli3.0 需要自己去创建文件 在项目的根目录下,创建一个文件vue.config.js 然后在该文件下写 const webpac ...
- KubeSphere2.1踩坑记
至少两台机器.推荐4X16.(完全安装KubeSphere会吃掉10G+内存) k8s安装(略1.14.8)可参考我上一篇文章或者基于kubeadmin快速安装 KubeSphere2.1前置条件 1 ...
- 【遇到一个怪异的问题】使用embed来加载模版,只要写在init()函数中就会导致HTTP服务出错
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 经过反复测试,只要换一个写法就能开启/重现这个怪异的问题. ...
- vim 从嫌弃到依赖(17)——查找模式
最开始介绍vim的时候,提到vim有普通模式.插入模式.可视模式和命令行模式,并且已经对这几个模式做了详细的介绍了.除了这几个模式以外,vim还有一个非常强大的模式--查找模式,为什么最开始没有将其列 ...
- MongoDB 选型介绍
什么是 MongoDB 前言 MongoDB 的主要特性 MongoDB 对比关系型数据库 MySQL 什么时候考虑 MongoDB 参考 什么是 MongoDB 前言 MongoDB 是一个开源.高 ...
- 驱动开发:运用VAD隐藏R3内存思路
在进程的_EPROCESS中有一个_RTL_AVL_TREE类型的VadRoot成员,它是一个存放进程内存块的二叉树结构,如果我们找到了这个二叉树中我们想要隐藏的内存,直接将这个内存在二叉树中抹去,其 ...
- 使用Docker单机部署Ceph
安装Docker过程参考:https://www.cnblogs.com/hackyo/p/9280042.html 1. 创建Ceph专用网络 sudo docker network create ...
- 【C++深度剖析】为什么C++支持函数重载而C不支持--C++程序编译链接过程--符号表生成规则【Linux环境超详细解释C++函数重载底层原理】
文章目录 前言 Linux环境g++编译器的配置以及一些准备工作 源文件的符号表生成以及分析 尾声 前言 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种 ...
- PHP中目录操作函数
PHP中目录操作函数 1.是否是目录 is_dir 判断给定文件名是否是一个目录 $path = dirname(__FILE___); echo is_dir($path) ? '目录' : ' ...
- 深入剖析Java中的反射,由浅入深,层层剥离!
写在开头 之前更新了不少Java的基础知识,比如Java的类.对象.基础类型.关键字.序列化.泛型.值传递等等,今天要上点深度了,来聊一聊Java中的 反射 ! 所谓反射,就是在运行时分析.检查和操作 ...