直接回答

将 IoT 容量估算为一组独立受限的工作负载:并发和重连会话、认证速率、入站和出站消息、字节、规则、队列深度、存储写入、查询和积压恢复。分别建模正常运行和关联故障。仅从设备数或平均每秒消息数估算的平台通常会遗漏最先失败的组件。

有用的输出不是“支持一百万台设备”。而是一个与工作负载定义和服务目标关联的容量包络——例如,声明的连接会话数、p95 发布分布、突发配置、允许的队列时长和恢复截止时间。

范围与非范围

本指南涵盖从设备连接到接入、处理和持久化的面向消息的 IoT 平台容量估算。无论前端是 MQTT、HTTP 还是托管接入服务都适用。

不替代在选定代理、数据库、网络或云服务上的基准测试。也不提供通用的每连接字节数常数:TLS 实现、协议设置、订阅、持久会话状态、操作系统和代理设计都会实质性地改变资源使用。厂商配额和区域可用性限制须单独检查。

在计算之前定义工作负载

按行为对设备分段而非平均整个设备群。对每个群体,记录活跃数、连接比例、负载大小分布、发布间隔、订阅、QoS、保留消息、会话过期、离线队列策略、命令频率、固件流量和预期增长。在分布偏斜时保留 p50、p95 和最大值。

对于群体 i,入站发布速率的初步估算为 活跃设备数_i × 每设备每秒发布数_i。每秒字节数必须包括主题名称和协议、TLS、TCP/IP 及链路开销——不仅是负载字节。出站投递是单独的计算:一条被多个订阅匹配的发布可能产生大量扇出。

然后添加对齐设备行为的场景。供电恢复、蜂窝网络恢复、证书轮换、天气事件或固件活动可能使在正常运行期间独立的设备群同步。至少建模以下条件:

场景 容量问题
正常高峰时段 所有服务目标能否持续保持?
遥测突发 接入和规则能否吸收关联发布?
重连波 TLS、认证、会话恢复和订阅能否恢复?
下游中断 积压增长多快,在哪里受限?
服务恢复 积压能否在不饿死实时流量的情况下排空?
OTA 活动 控制和遥测能否与二进制分发共存?

分别评估每个瓶颈

连接容量取决于文件描述符、套接字和 TLS 内存、保活流量、会话记录和订阅索引。连接速率更依赖于握手、认证、证书验证和会话恢复。分别测试:一个集群可以保持 500,000 个已建立会话,却无法足够快地接受重连波。

消息容量包括解析、授权、路由、持久化、规则评估、序列化和扇出。测量每种消息类别的端到端延迟和每消息 CPU,而非仅代理入口。大负载和具有相同字节率的许多小负载对资源的压力不同。

队列容量是时间,不仅是字节。跟踪最旧有用消息的年龄,并估算 积压消息数 ÷ 可持续剩余处理速率 来确定恢复时间。如果实时到达速率为每秒 80,000 条消息而流水线可处理 100,000 条,则仅剩每秒 20,000 条用于积压。恢复可能比中断本身长得多。

存储估算需要写入放大、索引、复制、压缩、保留和延迟到达的更新。查询流量必须在接入测试期间被体现,因为运维仪表盘和事件调查通常在遥测高峰时也达到峰值。

可靠的容量评估流程

  1. 定义服务目标:连接成功率、发布到持久化延迟、命令延迟、允许丢失、最大队列时长和恢复时间。
  2. 从生产追踪或代表性设备构建群体分布。移除密钥但保留时序、主题长度、大小和扇出。
  3. 绘制端到端资源路径,识别硬配额、共享依赖和单区域限制。
  4. 为每个维度计算一阶包络,然后为增长、部署不平衡和单节点或单区故障预留余量。
  5. 创建保留关联性、会话行为、QoS、认证和订阅模式的负载生成器。均匀随机流量不够。
  6. 运行稳态测试足够长时间以暴露内存增长、压缩、保留作业和自动扩缩容延迟。
  7. 注入依赖故障并恢复。测量积压增长、实时流量延迟、排空速率和返回目标的时间。
  8. 在模式、规则、证书、客户端版本、索引或基础设施发生有意义变更后重复。

容量应以第一个被违反的服务目标为门禁,而非以进程存活为标准。一个不丢消息但将命令延迟从秒级提升到分钟级的测试已经失败。

需要暴露的故障模式

基于平均值的估算隐藏了关联峰值和重度群体。干净重连的合成客户端可能省略证书验证、会话重放或重新订阅,因此低估恢复成本。仅测试入口会遗漏规则、数据库争用和订阅扇出。

自动扩缩容可能因为会话状态无法即时迁移或控制平面在队列已老化之后才扩容而来不及。名义上冗余的集群在副本、领导者或分区重平衡时可能丢失超过一个节点的容量。存储可能在字节限制内但索引基数或写入放大耗尽 CPU 和 I/O。

最后,重试循环可能将一个慢速依赖转化为平台级重试风暴。使用指数退避、抖动、尝试限制、熔断和准入控制。为控制流量预留容量,使遥测积压不能阻塞撤销、配置或恢复命令。

实施清单

  • 设备按行为群体分段并附带分布。
  • 连接、连接速率、消息、字节、扇出和存储是独立维度。
  • 服务目标包括延迟、队列时长和恢复时间。
  • 重连、下游中断、恢复和 OTA 场景已负载测试。
  • 测试使用真实认证、会话、订阅、QoS 和负载形态。
  • 实时流量在积压排空时保持优先级。
  • 重试预算、队列限制和过载准入策略已执行。
  • 余量考虑增长和预期的基础设施容错。
  • 仪表盘报告饱和度和服务目标,而非仅 CPU 平均值。

主要参考来源

OASIS MQTT 5.0 规范是会话状态、QoS 流程、接收最大值、消息过期和相关协议行为的规范参考,这些行为影响代理负载。关于 TLS 握手和会话行为,参考RFC 8446。将这些标准与所选代理、数据库和云提供商的官方限制文档结合,然后在代表性负载下验证完整路径。