关于如何降低从我的NodeJS后端服务器上的数据库中获取和处理大量iot时间序列数据的延迟的一般性问题。有时即使我将超时设置为15秒,我也会超时。
我当前的设置使用Google Datastore作为流数据的数据库,NodeJS后端服务器用于在将数据传递到前端之前与数据存储进行交互。我还在后端服务器上本地托管的MongoDB作为缓存层。
1请求的数据检索工作流程大致如下:从MySQL数据库查询设备mac地址并用于查询请求时间范围的缓存,然后从数据存储区检索时间间隔(未被缓存覆盖)的数据,以及聚合到请求的时间分辨率,并且如果需要,对某些类型的数据进行额外的解析。
我能想到的一些提高性能的策略包括。欢迎对以下策略提出任何其他建议/意见。
您希望专注于减少延迟,但是从我的角度来看,您使用的是太复杂的系统,涉及无法有效使用的技术。你说你的工作流程是这样的:
MySQL - > Cache(使用MongoDB)/ Datastore - > NodeJS - > FrontEnd
首先,看看您使用的是三种不同的数据库解决方案。我知道它们是用于不同的任务,但它似乎并不是最有效的方法。我会说Datastore + MongoDB的组合似乎也不自然。你为什么不使用以下其中一种?:
无论你选择第一个还是第二个选项:你不能使用MySQL吗?
如果您使用Google App Engine使用任何这些解决方案,您将更容易回答有关群集和增加服务器CPU / RAM的问题。您可以尝试使用different configurations of your app.yaml来检查最适合您的内核和RAM的数量。
关于异步和压缩策略,我没有其他任何想法。根据Streams,您可以使用@MichałCzapracki关于使用scramjet的建议。