我们缺乏相当多的数据,但让我们运行一些数字。
如果每条消息大约 1000 字节,那么 10K * 1000 * 8 / 2 = 40 Mbit/s。甚至不考虑 Wi-Fi 部分,这是相当多的上行带宽。
如果每条消息接近 10 K 字节(如果您将每条消息作为其自己的 HTTPS 请求结束而没有保持连接或 TLS 会话缓存,则很有可能),那么我们将达到数百 Mbit/s。
如果您设法保持在 100 字节以下(如果您在现有套接字或 Websocket 中发送短消息,则可能会降低),降低到几 Mbit/s。更合理但仍然相当多的流量。
还要考虑那些每 2 秒发送 1 条消息的 10K 设备意味着您的服务器每秒接收 5K 条消息。如果服务器只是将它们转发到另一个连接,那很好。如果您存储在数据库中,我们说的是数千 IOPS。到目前为止,使用体面的 SSD 支持的存储并非不可能,但当然不是在普通的单个 HDD 上。
还请记住,如果每条消息的磁盘上的数据大约为 1 KB(如果您包含索引等,则很有可能,根据您的数据库架构可能更多),您每天写入 10K * 1024 * 86400 / 2 = 442 GB !
但是让我们考虑对上游和服务器部分进行排序。
您永远不会在单个 AP 上运行 10K 台设备。这是不可能的。大多数“消费者”接入点会阻塞几十个设备。在最好的条件下(在多个频段上使用多个无线电),最好的将停止在几百个。这只是为了维护状态、密钥等,我们甚至还没有讨论设备之间的通信。
ESP8266 仅在 2.4 GHz 频段运行。那个乐队很小,也很忙。我们将考虑“大多数国家”的情况(美国有更多限制)。您在 802.11b 中只有 3 个非重叠信道,在 802.11g/n 中只有 4 个非重叠信道,频率为 20 MHz。
我认为单个 AP 上的 2.4 GHz 设备不会超过 100 台。所以我们已经达到了 100 个 AP!
但是由于只有 2 到 4 个非重叠信道,相邻设备和 AP 之间的干扰风险可能太大而无法可靠运行。
请记住,Wi-Fi 引用的速度(ESP8266 最大为 72 Mbit/s)只是原始流数据速率。它们没有考虑开销、前导码、ACK、RTS/CTS 帧、保护间隔、帧间空间、冲突、重传……当发送非常短的帧时,开销可以很快使用绝大多数的通话时间,所以你无法将 72 Mbit/s 与上面引用的 40 Mbit/s 进行比较。
还要记住,您将(至少)拥有 TCP ACK,并且 802.11 是半双工的。
在这种规模下,我不确定正确的解决方案是什么。我的第一直觉是以太网(可能还有 PoE),但这是一个庞大的设置(需要相当多的交换机和相当多的电缆)。
一个可能更好的选择是让一个带有传感器的 ESP8266 用于多台机器以减少设备数量,但我不知道这是否适用于您的情况。