本文将介绍如何使用Node.js和ssh2模块实现一个简单的部署脚本,将本地的项目文件上传到远程服务器上。我们将使用dotenv模块来管理环境变量,以及child_process模块来执行命令行操作。...首先,我们需要安装ssh2和dotenv模块:npm install ssh2 dotenv --save然后,我们需要在项目根目录下创建一个.env文件,用来存放一些敏感的配置信息,例如服务器的IP地址...Node.js内置的文件系统模块,用来读写文件;Client是ssh2模块提供的一个类,用来创建SSH连接;dotenv模块是用来加载.env文件中的配置信息到process.env对象中。...,使用密码登入也是可以的,两种配置项可以并存,其中一个失败了ssh2会则尝试另一个方法};// 本地目录路径和远程目录路径const localDir = __dirname;const remoteDir...= '/www/wwwroot/img-service';其中,我们使用了process.env对象中的属性来获取环境变量的值,如果没有定义,则使用默认值。
它还支持应用程序日志记录,群集和负载平衡,以及许多其他有用的流程管理功能。 另请参阅:2019年为开发人员提供的14个最佳NodeJS框架 包管理器尤其适用于在生产环境中部署Node.js应用程序。...在本文中,我们将回顾Linux系统中Node.js应用程序管理的四个进程管理器。 1. PM2 PM2是一个开源,高级,功能丰富,跨平台和最流行的Node.js生产级流程管理器,内置负载均衡器。...它允许您列出,监视和处理所有已启动的Nodejs进程,并支持群集模式。...应用程序日志始终是生产环境中的关键,在这方面,PM2允许您轻松管理应用程序的日志。它提供了分别处理和显示日志的不同方式和格式。您可以实时显示日志,刷新日志,并在需要时重新加载日志。...最后但同样重要的是,如果您使用Docker容器,PM2允许容器集成,并提供允许您以编程方式使用它的API系统。 2.
本文希望通过读 p-limit、pm2 和 worker_threads 的一些代码,来了解 Node.js 的并发能力。...以 I/O 操作为主的应用,更适合用 Node.js 来做,比如 Web 服务中同时执行 M 个 SQL,亦或是离线脚本中同时访问发起 N 个 RPC 服务。...因为对于 Node.js 来说,同时发送 10 个 RPC 请求和同时发送 100 个 RPC 请求的成本差别并不大,都是“发送-等待”的节奏,但是下游的“供应商”是会受不了的,这时你需要限制并发数。...启动子进程 Node.js 使用 Cluster 模块来完成多进程,我们可以通过 pm2 的代码来了解多进程,可以先从下面两个文件入手: lib/God.js 和 lib/God/ClusterMode.js...:Worker Threads 如果想要共享内存,就需要多线程,Node.js 引入了 worker_threads 模块来完成多线程。
当一个 Node.js 的应用启动的同时,它会启动如下模块: 一个进程 一个线程 事件循环机制 JS 引擎实例 Node.js 实例 一个进程:process 对象是一个全局变量,可在 Node.js...JavaScript 和 Node.js 不会有多线程,理由如下: 所以,人们可能会认为添加一个创建和同步线程的 Node.js 核心模块就可以解决 CPU 密集型操作的需求。...Worker_threads 模块允许使用多个线程来同时执行 JavaScript 代码。...使用下面这个方式引入: const worker = require('worker_threads'); Worker Threads 已经被添加到 Node.js 10 版本中,但是仍处于实验阶段。...worker_threads 是一个实验模块,如果你需要在 Node.js 中运行 CPU 密集型的操作,目前不建议在生产环境中使用 worker 线程,可以使用进程池的方式来代替。
Node.js 是一个基于 JavaScript 运行时的开源、跨平台的后端编程环境。Node.js 的模块系统是其核心功能之一,它提供了一种方便和模块化地组织和重用代码的方式。...本文将详细介绍 Node.js 模块系统的原理、使用方式和一些常见的应用场景。模块系统的作用模块系统的主要作用是将相似功能的代码封装在一个独立的文件中,使代码结构更加清晰、模块之间相互隔离。...模块系统的应用场景Node.js 的模块系统可以应用于很多场景,以下是一些常见的应用场景:构建 Web 服务器使用模块系统可以方便地组织和重用代码,构建出具有良好结构和可扩展性的 Web 服务器。...总结Node.js 的模块系统是其核心功能之一,它提供了一种方便、模块化和可重用的代码组织方式。通过导入和导出模块,我们可以将相关功能的代码封装在一起,提高代码的可维护性和复用性。...同时,Node.js 的模块系统还具有查找规则、缓存和解决循环依赖等特性。掌握 Node.js 模块系统的原理和使用方法对于开发高效、可维护的 Node.js 应用程序非常重要。
Node.js 进程创建 进程创建有多种方式,本篇文章以child_process模块和cluster模块进行讲解。...cluster内部隐时的构建TCP服务器的方式来说对使用者确实简单和透明了很多,但是这种方式无法像使用childprocess那样灵活,因为一直主进程只能管理一组相同的工作进程,而自行通过childprocess...Node.js进程通信原理 前面讲解的无论是child_process模块,还是cluster模块,都需要主进程和工作进程之间的通信。...如何实现进程守护 这里我只说一些第三方的进程守护框架,pm2 和 forever ,它们都可以实现进程守护,底层也都是通过上面讲的 child_process 模块和 cluster 模块 实现的,这里就不再提它们的原理...Node.js 线程创建 直到 Node 10.5.0 的发布,官方才给出了一个实验性质的模块 worker_threads 给 Node 提供真正的多线程能力。
Node.js 以多线程还是单线程方式运行? “单线程”是指只有一个执行线程的程序,允许它顺序执行任务,“多线程”意味着具有多个执行线程的程序可以同时执行任务。...使用事件循环和工作池实现异步操作 借助事件循环和工作池机制,能够在 Node.js 中编写有效处理异步操作的代码。 fs.readFile(path.join(__dirname, '....模块 worker_threads模块是一个包,它允许在单核上创建多个线程,下面是worker_threads的使用方法: type WorkerCallback = (err: any, result...这样就能够更加智能地处理任务,并提供高效的函数执行。 使用线程的主要优点是什么? 线程是一个强大的工具,可以极大地影响程序的性能、响应能力和整体效率。...这种设计可以吸引更多来自人工智能、机器学习和大数据等领域的开发人员和工程师开始在他们的项目中使用Node.js。因此,使用worker_threads模块是一种高效、便捷的方式来实现多线程编程。
接下来让我们探索一下其中的奥秘…… Node.js 是如何工作的 Node.js 使用两种线程:event loop 处理的主线程和 worker pool 中的几个辅助线程。...在需要对数据进行复杂的计算时(如AI、机器学习或大数据)无法真正有效地使用 Node.js,因为操作阻塞了主(且唯一)线程,使服务器无响应。...简介:worker_threads worker_threads 模块允许我们创建功能齐全的多线程 Node.js 程序。...还需要注意的是,以这种方式复制对象与使用 JSON 不同,因为它可以包含循环引用和类型化数组,而 JSON 不能。 由于能够复制类型化数组,该算法可以在线程之间共享内存。...人们倾向于用 PM2 这样的工具来集中管理他们的程序,而不是在自己的代码中手动执行,如果你有兴趣,可以研究一下如何使用 cluster 模块。
Node.js 的方式 Node.js 使用两种类型的线程: 通过事件循环处理主线程, 工作池中有许多辅助线程 事件循环负责获取回调或函数,并将其注册以供将来执行。...总而言之,工作池负责异步 I/O 操作,即与系统磁盘和网络的交互。像 fs 和 crypto 这样的模块是使用工作池的主要模块。...worker_threads 模块使多线程变得简单 Node.js v10.5.0 于 2018 年 6 月发布,引入了 worker_threads 模块。...要开始使用辅助线程,需要先导入 worker_threads 模块。之后需要创建 Worker 类的实例以创建工作线程。...这是因为 Node.js 提供了在 JavaScript 中使用多线程的变通方法,而 JavaScript 已经是“Web上最流行的编程语言”。
Node的多进程和多线程问题 我们知道Node.js是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核cpu的系统上创建多个进程,从而提高性能。...除了父子进程之间的通信,还有别的通信方式。大概有如下几种: stdin/stdout传递json。是最直接的方式,适用于关联进程之间的通信,无法跨机器。 node原生IPC。同样的约束。...开启多线程 worker_threads模块允许使用并行地执行JavaScript的线程。...worker_threads相对于I/O密集型操作是没有太大的帮助的,因为异步的I/O操作比worker线程更有效率,但对于CPU密集型操作的性能会提升很大。 线程间的通信方式有: 共享内存。...总结 开启多进程使用child_process模块或cluster模块,开启多线程使用worker_threads模块。 进程创建有四个方法spawn、exec、execFile、fork。
作为对此问题的解决方案,Node.js v10.5.0 通过 worker_threads 模块引入了实验性的 “worker 线程” 概念,并从 Node.js v12 LTS 起成为一个稳定功能。...本文将解释其如何工作,以及如何使用 Worker 线程获得最佳性能。 Node.js 中 CPU 密集型应用的历史 在 worker 线程之前,Node.js 中有多种方式执行 CPU 密集型应用。...其中的一些为: 使用 child_process 模块并在一个子进程中运行 CPU 密集型代码 使用 cluster 模块,在多个进程中运行多个 CPU 密集型操作 使用诸如 Microsoft 的 Napa.js...相反,worker_threads 通过运行应用使用多个相互隔离的 JavaScript workers 来实现并发,而 workers 和父 worker 之间的通信由 Node 提供。...使用 worker 线程承担并行 I/O 操作仍是不划算的,因为 Node.js 原生的 I/O 机制是比从头启动一个 worker 线程去做同样的事更快的方式。
restart app 5.pm2 常用的命令 pm2 start app.js # 启动,守护进程和自动重启应用程序(Node) # 群集模式(仅限Node.js...) pm2 start app.js -i 4 # 在群集模式下启动4个应用程序实例 # 它将负载平衡每个应用程序的网络查询...pm2 list # 列出PM2所有流程 pm2 monit # 显示每个应用程序的内存和cpu使用情况...# 生成名为[name]的示例模块 pm2 install pm2-logrotate # 安装模块(这里是一个日志轮换系统) pm2 uninstall pm2-logrotate...# 卸载模块 pm2 publish # 增量版本,git推送和npm发布
而工作线程,就好比在这个厨房里增加了多个大厨,他们能够独立工作,同时准备不同的菜肴(任务),这样效率自然大大提高。 下面的图片展示了两种情况:传统的单线程处理代码方式,以及引入工作线程后的处理方式。...如何开始使用工作线程 Node.js的worker_threads模块提供了一个简单的API,让你能够轻松创建和管理工作线程: const { Worker } = require('worker_threads...集群模块会增加应用架构的复杂性,所以需要根据具体需求评估它的益处与复杂性。 集群模块何时考虑使用: 高流量网站:当你的单线程事件循环达到极限时,通过集群进行水平扩展可以有效管理庞大的用户基础。...广泛的API:探索各种方法和事件来管理连接、流、推送机制和错误处理。 开始使用http2 Node.js的文档提供了详细的指南和示例,用于使用http2模块。...让我们来看一些实际的例子,来展示它的使用方式。
PM2 是一个守护进程管理器,可帮助您管理和保持应用程序在线。开始使用 PM2 很简单,它以简单直观的 CLI 形式提供,可通过 NPM 安装。...安装最新的PM2版本可与NPM或Yarn一起安装:npm install pm2@latest -g# oryarn global add pm2要安装 Node.js 和 NPM,您可以使用 NVM启动应用启动...、守护和监视应用程序的最简单方法是使用以下命令行:pm2 start app.js或者轻松启动任何其他应用程序:pm2 start bashscript.shpm2 start python-app.py...200基于终端的仪表板这是一个直接适合您的终端的实时仪表板:pm2 monitpm2.io:监控和诊断Web界面基于 Web 的仪表板,带有诊断系统的跨服务器:pm2 plus集群模式对于 Node.js...要在群集模式下启动应用程序:pm2 start app.js -i max在此处阅读有关群集模式的更多信息。生态系统文件您还可以创建一个名为生态系统文件的配置文件来管理多个应用程序。
安装 可通过NPM或Yarn安装最新的PM2版本: $ npm install pm2@latest -g # or $ yarn global add pm2 要安装Node.js和NPM,可以使用NVM...启动一个应用 启动,守护和监视应用程序的最简单方法是使用以下命令行: $ pm2 start app.js 或轻松启动任何其他应用程序: $ pm2 start bashscript.sh $ pm2...pm2.io:监视和诊断Web界面 基于Web的仪表板,带有诊断系统的跨服务器: $ pm2 plus ?...要以群集模式启动应用程序: $ pm2 start app.js -i max 在此处阅读有关集群模式的更多信息。 生态系统文件 您还可以创建一个配置文件,称为生态系统文件,以管理多个应用程序。...了解如何将应用程序的所有行为选项声明为JSON配置文件。 了解如何清理停止并重新启动以提高可靠性。 了解如何轻松部署和更新生产应用程序。 使用Keymetrics监视您的生产应用程序。
操作系统提供了线程的抽象,对应代码不同的执行分支,都是可以同时上不同的 CPU 跑的,这是利用好多核 CPU 性能的方式。...Node.js 在 10.5 实验性的引入(在 12 正式引入)了 worker_thread 模块,可以创建线程,最终用多个 CPU 跑,这是利用多核 CPU 的做计算的方式。...,因为异步计算和异步 IO 在使用方式上没啥区别。...Node.js 的 worker thread 和 浏览器 web woker 的对比 从使用上来看,都可以封装成普通的异步调用,和其他异步 API 用起来没啥区别。...从使用上来看异步计算、异步 IO 使用方式一样,但是异步 IO 只是让 cpu 不同阻塞的等待 IO 完成,异步计算是利用了多核 CPU 同时进行并行的计算,数倍提升计算的性能。
一、PM2是什么?...start app.js # 现在可用浏览器正常访问 node.js 项目了,且可以查看项目状态 pm2 list pm2 log 三、具体使用场景 1、PM2 常用命令 安装、启动、停止、查看进程信息等常用操作说明...4、提高 Node.js 性能 不用修改代码,就可以提高 Node.js 项目处理并发和响应速度的性能。详情,看这里!...5、远程自动化部署 一句命令,可以让多台服务器同时下载git仓库代码 并编译更新,自动发布 Node.js 项目。详情,看这里!...6、开发与生产环境的隔离 开发环境与生产环境差别很大,譬如使用的数据库就不同。环境变量可以完美隔离两个环境。详情,看这里!
有用的Node.js APIs 「Process」:检索有关环境变量、参数、CPU使用情况和报告的信息。 「OS」:检索Node正在运行的操作系统和系统相关信息。...「Clusters」:允许你跨核fork任何数量的相同进程,以更有效地处理负载。 Process process[1]对象提供有关你的Node.js应用程序以及控制方法的信息。...下面的例子模块使用stat和access方法返回一个有关文件系统对象的信息: // fetch file information import { constants as fsConstants }...在某些情况下,像Express这样的模块在引擎盖下使用流,但对你的复杂性进行了抽象。 你还应该注意到数据分块的挑战。一个块可以是任何大小,并以不便的方式分割传入的数据。...更简单和更强大的选择包括: 进程管理器比如PM2[22],它提供了一个自动集群模式 容器管理系统,如Docker[23]或Kubernetes[24] 都可以启动、监控和重启同一个Node.js应用程序的多个独立实例
领取专属 10元无门槛券
手把手带您无忧上云