繁体   English   中英

在 IBM iSeries 上使用 node express,我们应该使用工作线程还是集群?

[英]With node express on IBM iSeries, should we use worker threads or a cluster?

我已经了解了 node express 和集群,并且能够在 Windows 操作系统上成功实现它。 Windows 上的 cpu 内核的概念很容易掌握,因为我了解操作系统。 我们还计划在 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,我们应该使用工作线程还是集群?”

请注意,该特定文章讨论的是 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 中的工作是在单线程或多线程作业(基本上是一个进程)中完成的。 但是这些作业在一个子系统中运行,该子系统分配了特定的 memory 池,并且对该子系统/内存池中一次可以活动的线程数量有一个定义的限制。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM