直接用 egg ~
- nest 在 cluster 这块没有特殊定制,直接用 pm2 之类的启动 cluster 即可。
- 首先要看你的场景是否需要 agent? worker 之间一般不互相通讯的。
- 其次你需要在 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 容器来榨干性能。
@atian25 @MiYogurt @zuohuadong 感谢回答