gpt4 book ai didi

node.js - 如何在 Meteor 应用程序中 "break up"长时间运行的服务器端函数?

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:46 24 4
gpt4 key购买 nike

作为 meteor 应用程序的一部分,我有一个服务器端,它获取信息的 POST 消息,通过插入/更新集合来提供给 Web 客户端。到目前为止,一切都很好。然而,有时这些更新可能相当大(一次 50K 记录,每 5 秒一次)。我很难跟上这一点,直到我开始使用batch-insert包,然后使用Mongo的低级batch.find.update()和batch.execute()。

但是,即使有 50K 条记录,仍然需要进行大量处理(它进行一些计算、分析等)。我希望能够“线程化”该逻辑,以便主事件循环可以继续下去。然而,我不确定是否有一种真正简单的方法可以在 Meteor 中为此创建“真实”线程。因此,我想知道至少“批处理”工作的最佳/正确方法,以便每 N 个(比如 1K 左右)记录我可以释放事件循环来处理其他事件(例如某些客户端 DDP)消息等)。然后再做 1K 条记录,依此类推,直到完成我需要的所有记录。

我认为解决方案在于使用 Fibers/Futures - 这似乎是 Meteor 方式 - 但我不确定这是正确的或低级想法,如“setTimeout()”和/或“setImmediate( )”更合适。

TIA!

最佳答案

Meteor 不是一种万能的工具。我认为你应该将 meteor 应用程序与批处理分离。设置一个单独的 Meteor 实例,或者更好的是设置一个纯 Node.js 服务器来处理这些请求和批处理。它看起来像这样:

mongo中的更新将很快反射(reflect)在meteor中。我遇到了类似的情况,并使用 Node 服务器进行一些批量数据收集,然后将其传递到 cassandra 数据库中。然后我使用 pig latin 对这些数据运行一些批处理操作,然后将其插入到 mongo 中。我的 meteor 应用程序几乎会立即 react 性地显示新数据。

关于node.js - 如何在 Meteor 应用程序中 "break up"长时间运行的服务器端函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com