devise一个Nodejs WebApp

我目前正在构build一个web应用程序来显示远程机械的实时仪表板。 我正在尝试使用Nodejs来实现这个系统,我希望能够对如何实现它的想法进行批评。

该应用程序将有两个主要目标:

1.)实时显示机器状态,每分钟左右更新一次

2.)每15分钟将机器的状态保存到数据库。

为了访问数据,我需要向第三方供应商提出API请求,以便从他们的数据库中提取数据。 每台机器需要大约6个请求,到今年年底,我一次只能支持大约20台机器。 综合考虑,我需要每分钟提出约120个请求,以获得有关机器的最新信息。

正在使用webapp的用户只能在login时看到机器的一个子集。 但是,有些机器将在不同的用户之间共享,所以我不想同时在同一台机器上复制API调用,而宁愿build立一个每分钟刷新一次的所有机器数据的caching,然后只向每个用户发送与他们相关的部分数据。 而且,这对于数据logging的目的是很方便的,因为当我想保存数据时,我只需要保存整个caching。

我所关心的一个问题就是能够及时完成数据获取API请求,以便重新显示数据。 我知道我可以使用asynchronous库在并行调用中收集数据,但是我担心这些请求不会及时完成,然后再生成第二个更新,从而导致请求build立。 一种select是我可以让每个API请求独立于其他请求发送其数据到前端,但我希望能够批量更新所有内容。

我在构build系统时遇到的另一个问题是socket.io是否会成为我需要的有用资源。 我知道该库可以帮助您生成实时应用程序,这正是我所需要做的,但是从我读到的内容来看,socket.io似乎是为所有用户共享所有更新而devise的,而不是仅仅向每个用户发送部分更新。 而不是使用socket.io来发送服务器驱动的更新,我可以在我的应用程序的前端添加一些代码来定期请求更新。 使用这个解决scheme意味着我可以让每个客户简单地请求他们需要的数据。 不过,我仍然对图书馆能否提供任何可能有助于开发这个项目的事情感到好奇。

我最后的担心与扩大应用程序有关。 在今年年底之后,我将需要监视越来越多的机器,每增加一台机器,我需要抓取和存储的数据量也会增加。 如果任何人有什么build议,如何尽早开始devise系统的规模好,我想听到它。

我很欣赏任何反馈。 谢谢。

无法解决所有提出的问题,但我会…

1 – 使用socket.io

它允许数据从客户端“发射”到服务器,反之亦然。 服务器可以向所有客户端或特定客户端广播数据。

我会研究如何socket.io缩放。

注意NGINX在socket.io上工作良好

2 – 如果可以接受,我会推荐一个dockerised解决scheme。 Docker允许你容纳你的解决scheme。 例如你的docker容器将容器的Web服务器和文件被提供。 这给了一个完全分离的担忧。 您也可以轻松地将您的解决scheme推送到Docker(考虑推送和拉动VM)。

从容器中的任何位置拉取解决scheme使部署变得如此简单。

请注意,docker是令人惊叹的缩放。 你可以创build一个基本的图像 – 例如一个无状态的web服务器 – 然后从这个图像提出3个独立的docker集装箱。 在它们前面加载一个负载平衡,只需要添加更多的容器。

希望这可以帮助

@ danday74的好答案…

现在重新启动,我会:

  • 使用像Meteor或Feathers.Js这样的实时,rest启用,可扩展的基础。

  • 使用JWT进行authentication,因为它很容易移植,testing和扩展。

  • 使用易于扩展的平台提供商,易于部署,如DigitalOcean,Azure,Heroku等。DigitalOcean上的Dokku特别有效!