nest如何实现多进程间通信和egg类似的agent机制
发布于 1 个月前 作者 yuu2lee4 445 次浏览 来自 问答
5 回复

直接用 egg ~

  1. nest 在 cluster 这块没有特殊定制,直接用 pm2 之类的启动 cluster 即可。
  2. 首先要看你的场景是否需要 agent? worker 之间一般不互相通讯的。
  3. 其次你需要在 bootstrap 的地方自己去 fork 个 agent,然后通过 ipc 去做通讯就好了,都是 Node 自己的 API,简单封装下即可。可以看 egg-cluster 源码。

不存在的 nest 根本就没用到 cluster 模块,https://github.com/nestjs/nest/blob/1be2ccdb0b80e8be169471582e6ef7ac183a0625/packages/core/nest-application.ts

而 egg https://github.com/eggjs/egg-cluster/blob/0a9adbed8aee42523764d7ab4ea06800cdcebb18/lib/master.js

要实现的话,首先要实现内部通信机制,之后再通过 cluster 启动。进程模型是通过 sdk-base 和 cluster-client 实现的。

@okoala 不好用。 nest.js 对 ts 支持更完善,也更像spring ,分层更好。

如果你只是为了榨干多核CPU性能的话 用 pm2 start xxx -i 核心数 即可。

node 的辅助线程实际上也利用了多核处理, 多进程的话一般会有进程间通信问题,实际提升不大,由于存在进程间通信,反而降低效率。

如果为了性能,将 nest 的底层框架从 express 换成 fastify ,能提升50% 以上。

我们实际在使用中,用到了微服务,通过启动多个 node 容器来榨干性能。

回到顶部