Wich架构可用于多个小型特定服务器和一台集中式服务器?

时间:2018-10-17 18:29:09

标签: database rest architecture distributed-computing distributed

首先:我是新手。这是我第一次在重要项目中工作。

这是我的计划:

enter image description here

现在如何工作:
锉刀的状态基于连接到同一计算机的其他锉刀。计算机具有一种算法来计算这些状态。
锉刀还会每秒生成一次数据,并使用http请求将其直接发送到服务器。
服务器根据锉刀属性向用户显示一个页面,用户希望在其中访问锉刀状态,内存负载,摄像机流以及发送命令。
每台新计算机都需要在服务器计算机上注册,每台计算机和Rasp属性也需要注册。
因此,如果我将新相机添加到锉刀,则需要有人更新服务器数据库。

这个方法不是很可扩展。我的目标是一个非常可扩展的解决方案。 所以,我正在考虑:

  • 每台计算机都有一个单独的数据库和一个回答http请求的api。该数据库包含锉刀信息,例如摄像机,当前状态等。
    • 在这种方法中,最好是计算机发送信息或服务器要求它?
  • 服务器可以通过数据库同步访问“计算机”数据库(我需要对此进行更好的研究)。因此,对于单个api而言,没有,只有与服务器同步的单个数据库。
  • 建议?

    OBS:在当前状态下,所有粗锉,计算机和服务器都在单个VPN内。

2 个答案:

答案 0 :(得分:0)

您为什么要打扰中间计算机/数据库?让Raspberry向中央服务器发出HTTP请求以“注册”自身,并使其定期将其内容发送到该中央服务器。

如果负载太大,则将该集中式服务器划分为应用程序/数据库层,并对应用程序层进行负载平衡。如果数据库上的负载仍然过多,请重新构建数据库。

拥有多个“真相”来源是应用程序设计最大的失败之一。不要尝试使您的问题与之同步,只需创建一个真相即可。如果您需要将集中式数据库扩展到更高的级别,请查看适合该解决方案的解决方案,例如NoSQL解决方案,而不是尝试将其分发给客户端。

答案 1 :(得分:0)

用这种方法,最好是计算机发送信息或服务器要求它?

让服务器在需要时……在可能的时候请求数据!如果计算机在感觉到数据时就发送数据,则服务器可能会出现性能问题。

服务器可以通过数据库同步访问“计算机”数据库(我需要对此进行更好的研究)。因此,对于单个API而言,没有,对服务器同步的只有单个数据库。

尝试仅使复制成为单向复制,因此请确定用于计算机数据的表,并且不要在服务器中写入这些表。 数据库复制可能是信息共享的解决方案,但是由于架构结构,它意味着系统之间的大量耦合。隔离共享表。

建议?

  • 使用支持复制的数据库(我认为mySql支持),不要编写自己的系统
  • 计算/汇总/调整计算机上的数据,以使服务器的工作更加轻松

每台新计算机都需要在服务器计算机上注册

  • 看看Consul之类的工具
相关问题