node.js – process.send是* nix / Windows上的sync / async吗?

前端之家收集整理的这篇文章主要介绍了node.js – process.send是* nix / Windows上的sync / async吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个分配N个子进程的Node.js进程(不是服务器).
在某些时候,可能会有超过50个CP.所以我开始认为如果process.send(IPC)真正阻塞,那么这可能是每个CP经历的重大惩罚.因为我的程序中发生的事情是每个CP使用process.send将消息发送到单个父进程,以便父进程进行日志记录,以便同步日志记录.但是如果process.send阻塞,那么父进程可能会成为瓶颈.

所以问题是 – 在nix和Windows上Node.js是IPC阻塞还是非阻塞?如果它是阻塞的,如果我或其他人真的想要异步IPC,我应该使用消息队列还是ZeroMQ?

解决方法

进程发送已设置为异步,请参阅 https://github.com/nodejs/node/commit/56d9584a0ead78874ca9d4de2e55b41c4056e502
"`ChildProcess.prototype.send()` and `process.send()` used to operate
synchronously but became asynchronous in commit libuv/libuv@393c1c5"

这是由于libuv代码的变化;它有一些缺点,但如果你担心父进程成为瓶颈,你可以改为使用管道进行通信.

50个CP不会出现问题,但可能会有500个,具体取决于您的体系结构和消息大小.那时我会推荐一个更有趣的消息队列. ZeroMQ或普通redis应该可以工作.

猜你在找的Node.js相关文章