0

我已经了解了 node express 和 clusters,并且能够在 Windows 操作系统上成功实现它。Windows 上 cpu 内核的概念很容易掌握,因为我了解 os. 我们还计划在 iSeries 上测试 Web 服务,这将获得大量并发量。当我搜索有关在 iSeries 上的集群中运行 nodejs 的信息时,我会看到这篇文章,它指的是“工作线程”。

https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/blog-entry1/2020/04/02/optimizing-your-workload-using-worker-threads-in-ibm-sdk- for-nodejs-zos-v12

这让我想到“在 IBM iSeries 上使用 node express,我们应该使用工作线程还是集群?”

4

1 回答 1

1

请注意,该特定文章讨论的是 z/OS 大型机上的节点,而不是 IBM i(又名 iSeries)中端系统。

话虽如此,Z/OS 或 IBM i 上的 nodejs 与 Windows / Linux 上的 nodejs 并没有什么不同。

看看这篇关于nodejs中单线程vs子进程vs工作线程vs集群的文章

结论
尽管 Node js 为多线程提供了很好的支持,但这并不一定意味着我们应该总是让我们的 Web 应用程序多线程。Node js 的构建方式使得默认的单线程行为优于 web 服务器的多线程行为,因为 web 服务器往往是 IO 绑定的,nodejs 非常适合以最少的系统资源处理异步 IO 操作Nodejs 以这个特性而闻名。另一个线程或进程的额外开销和复杂性使得程序员很难处理简单的 IO 任务。但是在某些情况下,Web 服务器会执行 CPU 绑定操作,在这种情况下,启动工作线程或子进程并委派该任务非常容易。所以,我们的设计架构真的归结为我们的应用程序'

鉴于 IBM i 是为 DB 操作定制的,nodejs 内置的对非阻塞 I/O 的支持是完美的。如果您收到的请求多于单个实例可以处理的请求,请务必设置一个集群。

如果您碰巧在 nodejs 中进行 CPU 密集型工作,那么请考虑使用子进程或工作进程。

IBM i(或 z/OS)的关键在于,与“单一应用程序”Window/Linux 系统相比,这些系统往往一次完成更多工作。在给定的 IBM i 系统(或逻辑分区)中,您可能有 64 个或更多内核,但我强烈建议不要尝试将所有内核都用于 nodejs。

IBM i 的另一个关键是与简单的 Windows/Linux 系统相比,它具有完全不同级别的工作管理。这就是它能够同时做这么多不同事情的原因。

IBM i 中的工作是在单线程或多线程作业(基本上是一个进程)中完成的。但是这些作业在分配了特定内存池的子系统中运行,并且在该子系统/内存池中一次可以激活多少线程有一个定义的限制。

因此,即使您告诉节点使用 4 个工作人员集群,它实际上也可能不会这样做,具体取决于您的作业运行的位置。

您需要与您的管理员一起确定在哪里运行您的 nodejs 应用程序,或者即使在他们自己的子系统/内存池中运行您的 nodejs 作业是否有意义。

于 2021-04-14T17:44:41.443 回答