我知道我可以对此问题投反对票。但我的需求有所不同。我正在创建某种机制来处理远程服务器中的工作程序。从现在开始,我有两种方法:
首先:这是我从nodejs文档中使用的代码。对于Node.js团队而言,这很明显。
const {
Worker, isMainThread, parentPort, workerData
} = require('worker_threads');
if (isMainThread) {
module.exports = function parseJSAsync(script) {
return new Promise((resolve, reject) => {
const worker = new Worker(__filename, {
workerData: script
});
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', (code) => {
if (code !== 0)
reject(new Error(`Worker stopped with exit code ${code}`));
});
});
};
} else {
const { parse } = require('some-js-parsing-library');
const script = workerData;
parentPort.postMessage(parse(script));
}
但是我正在创建一个平衡器,该平衡器包含我要在其中运行工作程序的远程服务器地址。首先,如何告诉我这种平和的代码我的工作人员是远程的,而不是本地文件?
现在看完这张照片,您就可以得到我想要达到的目标。
第二:我没有找到任何用于负载均衡的软件包。我做了一些搜索,发现做这些事情的正确方法与网格计算系统有关。这样超出了我的能力。但是我发现我可以将我的工作程序和线程存储在某种数据库中。并在请求到达我的服务器平衡器后检查,以检查有多少个可用工作线程以及它们上正在运行多少个线程。我的问题是:这是正确的解决方案,还是我在这里做错了?请给我一些线索,我在这里迷路了。