当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 你如何在Meteor中进行重处理?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个流媒体应用程序,正在从twitter中提取数据,然后进行一些操作,然后将文档插入到集合中.假设我永远运行这个过程,但不想阻止事件循环,有什么解决方案吗? 注意:我知道node.js是
我有一个流媒体应用程序,正在从twitter中提取数据,然后进行一些操作,然后将文档插入到集合中.假设我永远运行这个过程,但不想阻止事件循环,有什么解决方案吗?

注意:我知道node.js是单线程的,meteor不支持集群等软件包,因为它需要粘性会话.我能想到的唯一解决方案是添加一个专用于处理来自twitter的数据并将请求转发到该服务器的服务器,但后来我不再需要使用Meteor或节点.

帮助将不胜感激.

这里的事实是,虽然 javascript / node / meteor可能能够进行处理,但你自己真的不想这样做.让我提出一些意见和个人的例子:

>您的应用程序是关于延迟的.如果您的一个请求需要很长时间才能完成,因为它处于紧密循环中,它会影响当时连接到服务器的每个其他客户端.如果发生这种情况,每个人的延迟都会增加. (这是确保您的代码中没有紧密循环的情况)
> Javascript(该语言)对数值有非常简单的支持. (你基本上得到一个双倍).像float,long,int,byte这样的东西都是为了让你尽可能快地做紧密的循环.如果你能用最接近匹配的原始类型表示一个值,那么你将获得很多改进. (这是将数据处理提取为适合数据处理的语言的情况)

我正在为一个必须对数据进行一些聚合的应用程序进行原型设计.我使用setInterval回调在meteor中将其解雇,每次完成大约需要2秒钟.在我自己的开发机器上,我并没有真正注意到它(因为meteor应用程序非常有效地隐藏了延迟问题).一旦我部署它并开始查看日志,我就意识到没有一个用户在4秒内的任何请求上都有延迟.这是一个糟糕的客户体验.

我将数字运算提取到一个小的clojure应用程序.所有集成都是通过从mongo db插入和读取的记录进行的,并且clojure代码有一些定时事件每隔几秒触发一次,完成与之前在meteor中完全相同的计算.

在clojure中,这些计算现在总共不到100毫秒(相比之下,流星中为2-4秒).

回到你的问题:听起来你的应用程序没有用户界面?如果确实如此,你最好将其保留在流星中,因为它非常适合网络用户界面.但对于无头应用而言,这不是正确的技术,它听起来就像你一样.

网友评论