我有一个装有温度传感器的网络设备,可以采集牛奶混合罐的温度,并将该温度发送到另一台网络计算机。我有超过100000的储罐可以采集到5秒的data.Data,这是一种要求,不能改变5秒的间隔。
然后在任何时候,他们给出最多5*100000的温度值,我需要将数据发送到服务器(MSSQL),它有另一个软件,从DB获取数据并控制储罐的温度。
目前,我使用了同步TCP/IP套接字。当套接字编程时,它们会打开任意ports.Then,减慢系统的速度。这类场景有什么解决方案吗?
发布于 2016-06-28 12:54:47
听起来你的数据库在这个过程中来得太早了。
我会用一个简单的排队解决方案--也许是ZeroMQ?(不确定可以在设备上运行什么)
我认为关键是在将消息放入DB之前,“另一个软件”直接响应消息。
这将使您的数据库负载减少到仅插入,并允许您扩展侦听队列的“另一个软件”工作人员的数量,以处理负载和/或拆分传感器,以便它们向多个队列/服务器报告。

发布于 2016-06-28 10:42:25
所以,我想说的是:
一个储罐每5秒将其温度发送到存储在DB中的服务器,然后另一个服务器程序将读取此值并向储罐发送一条信息以调节其温度?
如果是这样的话,解决方案非常简单:直接将调整命令发送到控制温度的其他IoT设备,批处理临时数据并将其以更大的块发送到DB服务器以供报告。
否则,如果您试图保持数据到服务器的直接吞吐量,请使用UDP套接字将数据发送到套接字,而不需要所有TCP开销。您可能会发现,将接收到的数据存储在内存中或每个库中的一个平面文件比接收这么多更新的Server更容易管理。
https://softwareengineering.stackexchange.com/questions/323422
复制相似问题