用 NodeJS 充分利用多核 CPU 的资源
|
根据PHP编程网_黄冈站长网 Www.0713Zz.Com报道 在本文中,我们将会用 Node.js 实现一个 ExpressJS HTTP 服务器,并在每个 CPU 内核上创建一个唯一的实例。这样,由于每个其CPU 核心实例都会提供可能的并发请求数,因此 HTTP 服务器的吞吐量将会大大增加。 创建 Express HTTP 服务器我们要做的第一件事是启动并运行 HTTP 服务器。如果你已经有了一个可用的 ExpressJS 服务器,则可以跳至下一部分:在多核 CPU 上运行服务器。 我们将用 ExpressJS 来快速创建一个高效而简单的服务器。如果尚未安装 npm 软件包,则可以用以下命令进行安装:,我们 require() 先前安装的 Express npm 软件包。 然后,我们创建一个 PORT 变量,该变量可以是当前的 process.env.PORT 的值,也可以是 5000。然后用express() 方法创建一个 express 实例,并将其保存在 app 变量中。 最添加 app.listen() 函数,用于启动 Express 程序,并告诉它侦听我们指定的 PORT。 通过命令行运行代码时,应该看到类似的内容输出到控制台:好!现在我们启动 Express HTTP 服务器。 在多个 CPU 核心上运行服务器在本节中,我们会把 Express 服务器运行在 CPU 的多个核心上! 为了帮助我们实现这一目标,我们将使用Node.js模块 OS 和 Cluster 。用 OS 模块来检测系统有多少个 CPU 核,用 Cluster 模块来创建多个子进程,我们的 HTTP 服务器可以并行运行这些子进程。 由于这些是核心模块,因此不需要安装任何 npm 包,并且可以将它们 require()到我们的代码中。 我将为你提供完整的代码,并在随后进行解释,因此,如果你看得一头雾水,也没有关系。 这是完整的代码:中做了很多事情,所以让我们解释它的每一个部分。 首先是 require() express 包以及 Node.js 的两个核心模块 os 和 cluster。 接下来,创建一个 PORT 变量,并为其分配当前 process.env.PORT 编号或 5000的值。我们稍后将在启动时用到它。 然后,我们创建一个名为 clusterWorkerSize 的变量来表示系统的 CPU 数量。可以用 os.cpus().length方法获得这个数字。有关 os.cpus() 方法的更多信息可查看 Node.js 文档。 我们创建一个了 if...else语句,用 clusterWorkerSize 值检查 CPU 是否有多个核。如果 CPU 数量大于 1,我们就继续创建集群。但是如果运行代码的计算机上只有一个 CPU 核心,则以本教程第一步中的方式启动 Express 程序。 假设我们的机器有多个 CPU 核心,那么就要创建另一个 if...else 语句,检查该语句是否为集群中已运行的第一个进程。用 cluster.isMaster() 方法检查是否返回 true或 false。
如果是第一个运行的进程,我们将用 cluster.fork() 为计算机上的每个 CPU 核产生一个新的工作进程。我们还添加了一个事件侦听器,该侦听器将在工作进程退出时输出一条消息,以便我们知道何时出现问题或意外。 (编辑:沧州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



