node.js中可用的哪些值组合为node.js中每台服务器上的每个进程创建唯一的ID?现在,我只知道如何获取进程ID。
不确定您的要求是什么,但是您可以对(主机名+ pid +时间戳)进行哈希处理:
const crypto = require('crypto');
const os = require('os');
const parts = [os.hostname(), process.pid, +(new Date)];
const hash = crypto.createHash('md5').update(parts.join(''));
hash.digest('hex'); // "56f0dec9b403c5aa19827326555d6a5b"
Run Code Online (Sandbox Code Playgroud)
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 }
| 归档时间: |
|
| 查看次数: |
3487 次 |
| 最近记录: |