在node.js中唯一标识一个进程

问题描述 投票:0回答:2

node.js 中的哪些可用值组合起来为 Node.js 中每个服务器上的每个进程创建唯一的 ID?目前我只知道如何获取进程id。

node.js unix
2个回答
7
投票

不确定您的要求是什么,但您可以执行(主机名 + pid + 时间戳)的哈希:

const crypto = require('crypto');
const os = require('os');

const parts = [os.hostname(), process.pid, Date.now()];
const hash = crypto.createHash('md5').update(parts.join(''));

hash.digest('hex'); // "56f0dec9b403c5aa19827326555d6a5b"

5
投票

node.js 是一个单线程服务器。它将仅使用一个 CPU 核心(生成的进程可以使用其他核心),并且

process.pid
足以识别系统上的节点进程。如果你运行多个node.js服务器,那么每个服务器都会有不同的process.pid。

如果希望单节点服务器利用多核CPU,则必须在集群中运行node.js。使用

cluster
http://nodejs.org/api/cluster.html.

它将主线程分叉为许多工作线程,这些线程使用IPC(进程间通信)相互通信。每个工作线程使用一个 CPU 核心。要获取每个工作人员的 ID,您可以使用

worker.id
http://nodejs.org/api/cluster.html#cluster_worker_id

编辑:从评论添加

答案取决于可能值的大小/范围。在 LAN 主机名上,IP 和 pid 可能就足够了。此外,每个服务器可以有多个可以监听的 NIC 和 IP。使用

app.address() { address: '192.1.168.5', family: 'IPv4', port: 3000 }

检查这一点
© www.soinside.com 2019 - 2024. All rights reserved.