【发布时间】:2014-06-27 05:31:24
【问题描述】:
我需要一种使用 node.js 分发数据处理的策略。我想弄清楚 如果使用工作池并隔离这些工作人员中的任务组是最好的方法,或者 使用像http://strawjs.com/ 这样的基于管道/节点的系统是可行的方法。
我的步骤如下(针对单个工作):
- 提取包含 GIS ShapeFiles 的 zip 文件
- 使用 ogr2ogr 将文件转换为 GeoJSON
- 对 GeoJSON 文件中的数据进行非规范化处理
- 将数据转换为我在 MongoDB 中使用的格式
- 将数据插入到 MongoDB 集合中
主要问题是我真的不知道如何合并来自不同 GeoJSON 的数据 使用基于管道/节点的系统(如稻草)时的文件。
我了解如何在工作人员池中完成工作。但我不知道如何将工人分配到几台机器上。
我尝试过在单台机器上的单线程中使用 异步模块。这适用于小数据集。但在生产中我需要 能够以相当频繁的间隔支持数百万个文档。
使用 node.js 的原因是我们已经有一个坚实的基础设施 扩展 node.js 流程,我们在生产的几乎每个方面都使用 node.js 环境。
【问题讨论】:
-
我建议你去谷歌搜索“nginx + node.js 集群”,阅读一些文章,画一些 UML 部署,序列图(解决方案建议)并用它来让你的问题不那么广泛。问题太宽泛且未提供代码是反对票和关闭的原因。 Stack Overflow 已经回答了如何合并 JSON 对象或 JSON 数组,例如这里stackoverflow.com/questions/10384845/…
标签: multithreading node.js parallel-processing etl data-processing