node.js中可用的值为node.js中每个服务器上的每个进程创建一个唯一的ID?现在,我只知道如何获取进程ID。
答案 0 :(得分:4)
不确定您的要求是什么,但您可以执行哈希(主机名+ 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"
答案 1 :(得分:3)
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 }