直接给结论:必须用云服务器,而且对于物联网(IoT)平台来说,云原生架构几乎是标配。
别去搞什么本地机房自建了,除非你是国家电网或者大型央企有特殊的合规红线要求,否则中小企业甚至中大型互联网公司,上云是性价比和运维效率的最优解。
下面从“为什么选云”和“怎么配配置”两个维度,掰开揉碎了说。
一、 为什么部署 IoT 平台首选云服务器?
很多人纠结要不要买物理机,其实 IoT 平台的特性决定了它天然适合云:
- 连接数爆发式增长:IoT 设备上线往往是脉冲式的。今天接了 100 台设备,下个月可能突然接入 10 万台。物理服务器扩容需要采购、上架、布线,周期以周计;云服务器弹性伸缩,分钟级生效。
- 高并发与长连接压力:MQTT 协议基于 TCP 长连接,一个活跃设备占一个连接。万级并发看似不多,但考虑到心跳包、消息重传、TLS 握手开销,对 OS 的文件描述符限制、网络栈优化要求极高。云厂商的负载均衡(SLB/ALB)和内核参数调优能力远强于普通运维团队。
- 数据湖与分析解耦:IoT 产生的时序数据量巨大,写入后通常要进大数据平台做分析。云上的对象存储(OSS/COS/OBS)和时序数据库(TSDB)服务化,让你不用自己维护 Hadoop/Spark 集群,按需付费。
- 全球/区域覆盖:如果你的设备分布在全国甚至全球,云的多地域部署能力能保证低延迟接入。
避坑提示:国内主流云厂商(阿里云、腾讯云、华为云、AWS 中国等)都有专门的 IoT Hub / IoT Core 产品。建议优先使用这些 PaaS 层产品处理设备接入、认证、路由,而不是自己从头写 MQTT Broker(如 EMQX、Mosquitto)。自研 MQTT 集群在稳定性、安全性(证书管理)、高可用架构上投入巨大,容易踩坑。
二、 配置怎么选?(实战指南)
假设你选择自建或托管 EMQX/Mosquitto 集群,并搭配业务后端(Java/Go/Python),以下是按场景划分的配置建议。
1. 核心原则:分离架构
不要把 MQTT Broker、业务逻辑、数据库全塞在一台机器里。
- 接入层:负责协议解析、连接管理(轻量、高并发)
- 应用层:负责业务逻辑、规则引擎执行(中等负载)
- 数据层:存储设备状态、历史数据(I/O 密集型)
2. 具体配置推荐(以国内主流云厂商为例)
A. 小规模试点/初创项目(< 5,000 在线设备)
- 接入节点:2 台 ECS/CVM
- 规格:4 vCPU / 8 GB RAM
- 系统盘:100G SSD
- 数据盘:200G ESSD(用于日志和临时缓存)
- 说明:两台做主备或集群模式,防止单点故障。
- 应用服务器:1-2 台
- 规格:4 vCPU / 8 GB RAM
- 用途:运行业务 API、规则引擎转发逻辑。
- 数据库:直接使用云 RDS(MySQL/PostgreSQL)
- 规格:2 vCPU / 4 GB RAM 起步,根据查询频率升级。
- 缓存:云 Redis(标准版即可)
- 用途:设备在线状态缓存、热点数据。
B. 中型规模(5,000 – 50,000 在线设备)
- 接入节点:至少 3 台(集群必需奇数个节点以保证仲裁)
- 规格:8 vCPU / 16 GB RAM
- 带宽:关键!每台实例需绑定公网 IP 或内网 SLB,确保带宽充足。MQTT 小包多,带宽不是瓶颈,但 QPS 和每秒新建连接数 才是。
- 注意:开启 TCP Keepalive,调整内核
net.core.somaxconn和fs.file-max。
- 应用服务器:3-4 台
- 规格:8 vCPU / 16 GB RAM
- 配合 SLB 做负载均衡。
- 数据库:RDS 高可用版
- 规格:4 vCPU / 16 GB RAM 以上,启用只读副本分担读取压力。
- 时序数据库:云 TSDB 或 InfluxDB/TDengine 专用实例
- 规格:根据写入速率(points/sec)评估,初期可选 8 vCPU / 32 GB RAM + 大容量云盘。
C. 大规模生产环境(> 50,000 在线设备)
- 接入节点:5+ 台,横向扩展
- 规格:16 vCPU / 32 GB RAM 或更高
- 必须使用云厂商提供的 IoT 专有通道 或 VPC 内网通信,避免公网暴露。
- 考虑使用 GPU 实例进行边缘计算卸载(如果涉及视频流或 AI 推理)。
- 应用服务器:容器化部署(K8s/ECS 集群)
- 使用自动伸缩组(ASG),根据 CPU 使用率或自定义指标(如 MQTT 连接数)动态扩缩容。
- 数据库:分库分表 + 读写分离
- MySQL 集群,或使用 NoSQL(MongoDB/Cassandra)处理设备元数据。
- 消息队列:云 Kafka/RocketMQ
- 设备上报数据先入 MQ,再异步落库,削峰填谷。
3. 网络与安全配置(极易忽视但致命)
-
带宽策略:
- MQTT 消息体通常很小(几十到几百字节),所以 带宽大小不是主要瓶颈,瓶颈在于 每秒新建连接数(CPS) 和 每秒数据包数(PPS)。
- 选择支持高 PPS 的网络类型(如增强型网卡 ENI)。
- 如果使用 SLB,注意其最大连接数和 QPS 限制,大并发时 SLB 本身可能成为瓶颈,考虑直接让客户端直连接入节点 IP(需配合 DNS 轮询或 GSLB)。
-
安全组:
- 严格限制入站规则。MQTT 端口(1883/8883)只对特定的 VPC 子网或 IP 段开放。
- 强制 TLS 1.2+ 加密,禁用明文传输。
-
存储选型:
- 不要用本地磁盘存业务数据!务必使用云盘或 NAS。
- 时序数据量大,建议使用云厂商的 TSDB 服务,成本比自建 MySQL 存时序数据低 70% 以上。
4. 成本优化技巧
- 抢占式实例(Spot Instances):用于无状态的应用层服务和部分非核心的接入节点(需做好断线重试机制),可节省 60%-90% 成本。
- 预留实例券(RI):对于长期稳定的基础接入节点和业务服务器,购买 RI 比按量付费便宜很多。
- CDN/WAF:如果设备通过 HTTP/WebSocket 上报,且数据量大,可结合 CDN 提速;同时配置 WAF 防护 DDoS 和 SQL 注入。
总结建议
- 不要从零造轮子:先用云厂商的 IoT Hub 产品跑通流程,验证商业模式和技术可行性。
- 架构解耦:接入层与应用层分离,方便独立扩容。
- 关注 PPS 而非带宽:小消息高频次是 IoT 的特点。
- 监控先行:部署前就规划好 Prometheus/Grafana 或云监控,重点监控:MQTT 连接数、消息吞吐率、延迟、错误率。
最后提醒:国内云厂商对物联网的支持力度很大,尤其是阿里云 IoT 和腾讯云 IoT Explorer,文档和社区资源丰富。遇到问题先看官方文档,其次查社区,最后才考虑去 StackOverflow 或知乎提问。
云技术博客