gpt4 book ai didi

node.js - Node JS 与 CouchDB 进行大量解析

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

我和我的团队正在使用 NodeJS(使用 jsdom/jQuery)并解析存储在 CouchDB 中的大量 HTML 文档。 NodeJS 是单线程的,因此在一个服务中拥有 8 个核心最初对我们没有任何帮助,这就是我想知道如何最好地创建子进程(也许是工作进程?)来处理从 CouchDB 中提取的单个文件的地方?

这是我的思考过程:

  1. 主 NodeJS 脚本循环通过 CouchDB View ,每 X 分钟从文档获取 HTML 文件
  2. 生成一个进程来解析(jsdom/jQuery)并存储每个 HTML 文件的结果

我们根本没有运行网络服务器来处理这些(所有命令行),所以我不确定如何在通用的“设置 CRON 来单独运行每个解析作业”之外处理这个问题。看来工作人员通常用于处理来自网络服务器的请求。

想法?

最佳答案

使用cluster

var cluster = require("cluster");
var numCPUs = require('os').cpus().length;
var htmlDocs = [...];

if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}

cluster.on('death', function(worker) {
console.log('worker ' + worker.pid + ' died');
});
} else {
for (var i = process.env.NODE_WORKER_ID; i < htmlDocs.length; i+=numCPUs) {
couch.doWork(htmlDocs[i]);
}
}

这是一个经典案例,即对数组中的成员进行工作,然后通过让每个进程执行数组的子集来将工作分配给多个进程。

注意我们如何将 i 增加进程数。这意味着工作人员 1 执行第 1、第 5、第 9 等操作,工作人员 2 执行第 2、第 6、第 10 等操作。

关于node.js - Node JS 与 CouchDB 进行大量解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398766/

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