搭建物联网(IoT)云平台没有统一的“标准配置”,因为推荐配置完全取决于你的业务场景、设备并发量、数据留存策略以及架构设计。
一个连接 100 台设备的 Demo 和一个连接 100 万台的商业平台,所需的服务器资源相差几个数量级。为了给你提供具有实操价值的建议,我们需要分场景和架构层级来拆解:
1. 核心决定因素
在选型前,请先评估以下三个关键指标:
- 设备连接数(Concurrency):同时在线的设备数量(TCP/MQTT 长连接)。这是最消耗内存的指标。
- 消息吞吐量(Throughput):每秒产生的消息条数(TPS/QPS)。这决定了 CPU 的处理压力。
- 数据存储需求:需要存储多久?是否做实时分析?这决定了数据库和磁盘 IO。
2. 不同阶段的推荐配置方案
阶段 A:POC 验证 / 小规模演示 (设备 < 5,000)
适用于内部测试、原型开发或小型项目。通常采用单体架构或简单的微服务。
- CPU: 4 核 – 8 核
- 理由:处理轻量级的 MQTT 协议解析和基础业务逻辑足够。
- 内存: 16 GB – 32 GB
- 理由:主要开销在于 JVM(如果使用 Java/Go 等语言)维持大量 TCP 连接。
- 存储: 100 GB SSD
- 典型架构: EMQX (单机版) + Redis + MySQL/InfluxDB。
- 注意: 此时单台服务器可能同时承担网关、应用服务和数据库,需预留足够的冗余。
阶段 B:中型生产环境 (设备 5,000 – 100,000)
适用于正式商用初期,开始有真实用户数据。此时强烈建议解耦,将网关层与应用层分开。
- MQTT 接入层 (Broker):
- 配置: 8 核 – 16 核 / 32 GB – 64 GB
- 理由:高并发连接主要吃内存。EMQX 或 HiveMQ 等 Broker 每个连接约占用几 KB 到几十 KB 内存。10 万连接可能需要 10GB+ 内存。
- 策略: 建议使用集群模式(如 3 节点),避免单点故障。
- 应用服务层 (App Server):
- 配置: 4 核 – 8 核 / 16 GB – 32 GB (可多实例部署)
- 理由:负责业务逻辑、规则引擎、API 接口。
- 数据存储层:
- 时序数据库: 独立部署,根据数据写入量调整(通常 8 核 + 32GB 起步)。
- 关系型数据库: 4 核 + 16 GB。
阶段 C:大规模生产环境 (设备 > 100,000)
适用于成熟商业平台。绝对不能使用单台服务器,必须采用分布式架构。
- 接入层 (Gateway Cluster):
- 配置: 至少 3-5 台 机器,每台 16 核 – 32 核 / 64 GB – 128 GB。
- 理由:通过横向扩展(Scale-out)来分担连接数。内存是瓶颈,CPU 用于网络包转发。
- 计算与业务层:
- 配置: 弹性伸缩组,根据负载自动增加节点。
- 数据层:
- TSDB (如 InfluxDB, TDengine, TimescaleDB): 需要独立的存储集群,重点优化磁盘 IO 和内存缓存。
- 消息队列 (Kafka/RocketMQ): 用于削峰填谷,通常需要 3 节点以上集群。
3. 硬件资源分配的关键原则
内存 (RAM) 是 IoT 平台的命门
IoT 的核心是长连接。
- 计算公式参考:
- 假设每个 MQTT 连接占用内存为 5KB(仅控制块)+ 缓冲区。
- 10 万个连接 ≈ 500MB – 1GB 纯连接开销。
- 加上操作系统、JVM/Go Runtime 堆内存、Redis 缓存、数据库缓冲。
- 结论:对于百万级设备,内存通常不是按“核”算的,而是按"GB"算的,且往往需要 64GB 甚至 128GB 起步。
CPU 的瓶颈在哪里?
- 加密/解密:如果启用了 TLS/SSL 加密传输(生产环境必选),CPU 消耗会显著增加。
- 规则引擎:如果需要在云端进行复杂的数据过滤、报警触发,CPU 是主要瓶颈。
- 建议:优先选择主频较高的 CPU,或者多核低主频(取决于并发模型)。
网络带宽
- IoT 设备通常上行流量小,但下行控制指令密集。
- 公网带宽:如果是 SaaS 平台,需购买弹性带宽或按流量计费。
- 内网带宽:集群内部通信(如 Kafka 同步、Broker 间复制)对带宽要求极高,建议选择 VPC 内网互通 且带宽不低于 1Gbps 的架构。
4. 总结与建议
如果你正在从零开始规划,请参考以下决策路径:
| 场景 | 推荐初始配置 (单机/最小集群) | 关键技术组件建议 | 预算预估 (月租参考) |
|---|---|---|---|
| 学习/Demo | 4 核 8G | EMQX + Node.js/Python + Redis | ¥100 – ¥300 |
| 初创项目 | 8 核 32G (3 节点集群) | EMQX Cluster + Go/Java App + TSDB | ¥1,500 – ¥5,000 |
| 企业级交付 | 16 核 64G (N 节点弹性伸缩) | 分布式 Broker + Kafka + 云原生数据库 | ¥10,000+ (随规模线性增长) |
最终建议:
- 不要一开始就买大服务器:使用云服务商(阿里云、AWS、腾讯云等)的容器化部署(Kubernetes/Docker),这样可以实现资源的弹性伸缩。
- 先测后定:使用压测工具(如
emqtt_benchmark或jmeter)模拟你的目标设备数量,观察 CPU 和内存的使用率曲线,再确定最终规格。 - 关注成本结构:IoT 平台中,存储成本(历史数据)和流量成本往往比计算资源更贵,务必做好冷热数据分离策略。
如果你有具体的设备数量预期(例如:预计首批接入 5 万台设备),我可以为你提供更精确的架构图和资源清单。
CLOUD技术博