客户服务器连接

时间:2018-05-25 22:31:12

标签: database socket.io

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

我想知道这个监控桌面应用程序(不是Web应用程序)的更好的设计是什么

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

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

1 个答案:

答案 0 :(得分:1)

这可能有争议,但我会推荐

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

有几个原因:

  1. 您可以使用UDP(无状态即发即弃)从客户端收集数据,以获得更好的性能和可伸缩性。无论您是让客户每隔3秒重新连接数据库还是保持连接打开,它都不会有效。
  2. 中间服务器基本上是一个中间件。这意味着,如果更改了数据格式(客户端)或数据库结构,则只需更新中间服务器,而不是所有客户端。
  3. 如果需要,您可以通过添加更多中间服务器来扩展和添加冗余(使用缓存)。如果您使用数据库执行此操作,则必须以某种方式使它们保持同步。
  4. 在安全性方面,最好将数据库置于应用程序服务器(3层体系结构)之后并配置防火墙,以便只有应用程序服务器可以连接到它。