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应该可以工作.

相关文章

现在的js代码都是这种高级点的方式语法 , 就是ts语法 ,要使用ts语法那就要先安装一下 先安装nodejs最...
nvm是node版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版...
1、安装nodejs 2、在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 3、打开命令...
1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串。要连接...
简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个...
定义 Object.keys 定义:返回一个对象可枚举属性的字符串数组; Object.getOwnPropertyNames 定义:返回...