Vit*_*lii 6 worker shared-memory node.js service-worker
我的应用程序从外部源接收数据并将其分组(匹配组项目并将结果显示为 HTML 表格,高达 20k 消息/秒)。
问题是共享内存:应用程序实时工作,我收到带有“创建、更新、删除”标志的消息,因此我将所有内容存储在 RAM 中,不需要任何数据库。但是,当我尝试集群时,某些集群会丢失我的应用程序消息(我尝试使用pm2进行集群)。
因此,现在我尝试使用 WorkerThreads 扩展我的应用程序,但是通过通信parentPort.postMessage/worker.postMessage需要对应用程序进行大量更改。所以现在我尝试通过共享内存SharedArrayBuffer,但我不明白如何在主机和工作人员之间共享对象数组。
const {
Worker, isMainThread, parentPort, workerData
} = require('worker_threads');
if (isMainThread) {
const sab = new SharedArrayBuffer(1024);
sab[0] = {foo: 'bar'};
const worker = new Worker(__filename, {
workerData: sab
});
setInterval(() => {
console.log( sab[0] ); // always {foo: 'bar'}
}, 500);
} else {
let sab = workerData;
sab.foo = false; // changing "foo" value at worker but not in main thread
}
setInterval(() => {}, 1000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |