Database 客户端-服务器连接

Database 客户端-服务器连接,database,socket.io,Database,Socket.io,我将要编写一个应用程序,该应用程序将连接大约30到60台IOT计算机,每个IOT计算机发送小数据包(每个IOT计算机每隔3秒发送数据,连续发送,但它们都是在稍微随机的时刻发送数据)。客户只会推送我需要收集的数据。他们不会从中央桌面请求数据 我想知道对于这个监控桌面应用程序(而不是web应用程序),什么设计会更好 让IOT 60计算机向套接字结构报告其数据,然后在应用程序中将其序列化(尽管网络数据已经序列化),并将其放入数据库(SQLite或MySQL) 让所有30到60个客户端自己直接连接到数据

我将要编写一个应用程序,该应用程序将连接大约30到60台IOT计算机,每个IOT计算机发送小数据包(每个IOT计算机每隔3秒发送数据,连续发送,但它们都是在稍微随机的时刻发送数据)。客户只会推送我需要收集的数据。他们不会从中央桌面请求数据

我想知道对于这个监控桌面应用程序(而不是web应用程序),什么设计会更好

让IOT 60计算机向套接字结构报告其数据,然后在应用程序中将其序列化(尽管网络数据已经序列化),并将其放入数据库(SQLite或MySQL)


让所有30到60个客户端自己直接连接到数据库,并找到一种方法来创建数据的实时视图。

这可能有争议,但我建议

第一个选项,使用中间服务器

有几个原因:

  • 您可以使用UDP(无状态火灾和遗忘)从客户端收集数据,以获得更好的性能和可伸缩性。无论是让客户端每隔3秒重新连接到数据库,还是保持连接打开,这都是无效的
  • 中间服务器基本上是一个中间件。也就是说,如果数据格式(客户端)或数据库结构发生更改,则只需要更新中间服务器,而不需要更新所有客户端
  • 如果需要,您可以通过添加更多中间服务器来扩展和添加冗余(使用缓存)。如果你在数据库中这样做,你就必须以某种方式保持它们的同步
  • 就安全性而言,最好将数据库放在应用服务器(3层体系结构)后面,并配置防火墙,以便只有应用服务器可以连接到它
    没有理由使用UDP,也不知道其可靠性。物联网只需启动http post即可发送数据。快速且支持良好,可扩展性强。60台设备不连续发送数据就不算什么了,在这种情况下,你可以使用一个连续连接,比如普通TCP和你自己的协议或webSocket。同意,使用TCP的RESTful接口将更加兼容,并且在性能方面做得很好——如果一天客户端的数量没有爆炸式增长的话。好吧,我从15个客户端开始,但是60个将在maxOh,我忘了告诉你,但是这些客户端只会推送信息(他们不需要问什么)@jfriend00每天24小时连续发送数据