海南省住房公积金管理局网站,我要安装百度,建设银行官方网站-云服务,网络营销方式有哪些 各有什么特点每日前端夜话0xCA每日前端夜话#xff0c;陪你聊前端。每天晚上18:00准时推送。正文共#xff1a;1558 字预计阅读时间#xff1a;7 分钟作者#xff1a;Nick Major翻译#xff1a;疯狂的技术宅来源#xff1a;coderrocketfuel介绍单个 Node.js 程序的实例仅在一个线程上…  每日前端夜话0xCA每日前端夜话陪你聊前端。每天晚上18:00准时推送。正文共1558 字预计阅读时间7 分钟作者Nick Major翻译疯狂的技术宅来源coderrocketfuel介绍单个 Node.js 程序的实例仅在一个线程上运行因此无法充分利用 CPU 的多核系统。有时你可能需要启动 Node.js 进程集群来利用本地计算机或生产服务器上的每个 CPU 内核。在处理 API 或基于 ExpressJS 的HTTP服务器时这个问题尤其重要。幸运的是Node.js 有一个名为 Cluster 的核心模块它能够帮助我们在 CPU 的所有核心上运行 Node.js 程序。在本文中我们将会用 Node.js 实现一个 ExpressJS HTTP 服务器并在每个 CPU 内核上创建一个唯一的实例。这样由于每个其CPU 核心实例都会提供可能的并发请求数因此 HTTP 服务器的吞吐量将会大大增加。让我们开始吧目录创建 Express HTTP 服务器在多个 CPU 核心上运行服务器创建 Express HTTP 服务器我们要做的第一件事是启动并运行 HTTP 服务器。如果你已经有了一个可用的 ExpressJS 服务器则可以跳至下一部分在多核 CPU 上运行服务器。我们将用 ExpressJS 来快速创建一个高效而简单的服务器。如果尚未安装 npm 软件包则可以用以下命令进行安装1$ npm install --save express然后把下面的代码添加到要你的的 Node.js 文件中1首先我们 require() 先前安装的 Express npm 软件包。然后我们创建一个 PORT 变量该变量可以是当前的 process.env.PORT 的值也可以是 5000。然后用express() 方法创建一个 express 实例并将其保存在 app 变量中。最添加 app.listen() 函数用于启动 Express 程序并告诉它侦听我们指定的 PORT。通过命令行运行代码时应该看到类似的内容输出到控制台1Output:很好现在我们启动 Express HTTP 服务器。在多个 CPU 核心上运行服务器在本节中我们会把 Express 服务器运行在 CPU 的多个核心上为了帮助我们实现这一目标我们将使用Node.js模块 OS 和 Cluster 。用 OS 模块来检测系统有多少个 CPU 核用 Cluster 模块来创建多个子进程我们的 HTTP 服务器可以并行运行这些子进程。由于这些是核心模块因此不需要安装任何 npm 包并且可以将它们 require()到我们的代码中。我将为你提供完整的代码并在随后进行解释因此如果你看得一头雾水也没有关系。这是完整的代码 1代码中做了很多事情所以让我们解释它的每一个部分。首先是 require() express 包以及 Node.js 的两个核心模块 os 和 cluster。接下来创建一个  PORT  变量并为其分配当前 process.env.PORT 编号或 5000 的值。我们稍后将在启动时用到它。然后我们创建一个名为 clusterWorkerSize 的变量来表示系统的 CPU 数量。可以用 os.cpus().length方法获得这个数字。查看 Node.js 文档来获取有关 os.cpus() 方法的更多信息。我们创建一个了 if...else语句用 clusterWorkerSize 值检查 CPU 是否有多个核。如果 CPU 数量大于 1我们就继续创建集群。但是如果运行代码的计算机上只有一个 CPU 核心则以本教程第一步中的方式启动 Express 程序。假设我们的机器有多个 CPU 核心那么就要创建另一个 if...else 语句检查该语句是否为集群中已运行的第一个进程。用 cluster.isMaster() 方法检查是否返回 true 或 false。如果是第一个运行的进程我们将用 cluster.fork() 为计算机上的每个 CPU 核产生一个新的工作进程。我们还添加了一个事件侦听器该侦听器将在工作进程退出时输出一条消息以便我们知道何时出现问题或意外。值得注意的是主进程用于侦听 HTTP 服务器的端口并在工作进程之间平衡所有请求的负载。产生所有工作进程后我们将在创建的每个工作进程上创建一个程序的新实例。如果你的计算机有 2 个 CPU 核则将会创建该程序的 2 个实例。运行程序时应该能够在控制台上看到以下内容1Output输出将根据 CPU 核的数量而有所不同。现在你有了一个能够在多核 CPU 上运行的 HTTP 服务器结论cluster 模块使我们能够轻松创建子进程从而为 Node.js 提供了使用 CPU 所提供的全部功能所急需的功能。并且它还在后台为在主进程和工作进程之间进行通信做了大量工作。在读完本文之后你现在应该知道该如何使用这个模块在多个 CPU 核心上运行 Express HTTP 服务器。有了这些知识你将能够更好地管理和扩展你的应用。原文https://coderrocketfuel.com/article/run-a-node-js-http-express-js-server-on-multiple-cpu-cores 下面夹杂一些私货也许你和高薪之间只差这一张图2019年京程一灯课程体系上新这是我们第一次将全部课程列表对外开放。愿你有个好前程愿你月薪30K。我们是认真的 在公众号内回复“体系”查看高清大图长按二维码加大鹏老师微信好友拉你加入前端技术交流群唠一唠怎样才能拿高薪 往期精选 BootstrapVue 入门JavaScript的工作原理引擎、运行时和调用堆栈用 TypeScript 开发 Node.js 程序快速上手最新的 Vue CLI 3JavaScript 程序员可以从C 中学到些什么在同一基准下对前端框架进行比较Edge 拥抱 Chromium 对前端工程师意味着什么使你的 JavaScript 代码简单易读Node.js多线程完全指南deno如何偿还Node.js的十大技术债实战半小时写一个脑力小游戏CSS Flexbox 可视化手册世界顶级公司的前端面试都问些什么V8引擎内部机制及优化代码的5个技巧小手一抖资料全有。长按二维码关注前端先锋技术文章和业界动态。