Node.js 系统稳定:如何监控和保护进程安全 在开始之前,我们先了解一个特点,在前端因为某些用户的特殊性,导致的逻辑 Bug 会造成这个用户服务异常,但是在服务端如果没有做好异常保护,因为某个用户的特殊操作可能会导致整个进程退出,从而无法提供服务,因此如何做好监控和进程安全保护就显得尤为重要。 本讲我将介绍在 Node.js 代码层面应该如何降低异常出现的概率,其次会介绍当出现现网问题时,如何及时发现并通知相应的开发去处理。 Node.js 2021-08-27
Node.js 缓存与应用:多级缓存策略介绍与应用要点 在上一回中我们介绍了网络 I/O 的优化方案,也就是应用缓存来减少网络 I/O 或者用高性能网络 I/O 替换性能较低的网络 I/O。将缓存应用好,也并非一件简单的事情,需要详细地学习和掌握缓存的基础知识。其次在本讲中我会应用 Node.js 来实践开发一个多级缓存的库,让你进一步掌握缓存的应用要点。 缓存概念从我的理解上来介绍,缓存是临时的一块存储空间,用于存放访问频次较高的数据,用空间换响应速 2021-08-25
Node.js 优化设计:在 I/O 方面应该注意哪些要点 在《06 | 哪些因素会影响 Node.js 性能?》中我们有提到 I/O 不会影响整体 Node.js 服务的性能,但是会因为 I/O 影响服务器系统,从而侧面影响到 Node.js 性能。本讲就着重介绍磁盘 I/O 和网络 I/O 两个方面在研发过程中注意的要点。 I/O 基础介绍I/O(Input/Output)意思是输入输出,其实就是数据传递的一个过程,作为后台服务需要更多地与外部进行数据 2021-08-24
Node.js CPU 过载保护设计:如何在服务层面确保系统稳定? 上回介绍了影响 Node.js 服务性能的一个关键点,也就是 CPU 的密集型计算,通过例子,你可以看到只要出现这类请求,基本就会导致服务器瘫痪。那么是否有办法来保护我们的服务呢?比如说我们是否可以丢弃部分 /v1/cpu 的请求,但是可以正常响应 /v1/normal 的用户请求,这就是我们这一讲要介绍的知识点,也就是 CPU 过载保护机制。 过载保护假设一种场景,我们去银行办事,大家都知道需要 2021-08-21
Node.js 哪些因素会影响 Node.js 性能 Node.js 作为后台服务性能是非常关键的一点,而影响 Node.js 的性能不仅仅要考虑其本身的因素,还应该考虑所在服务器的一些因素。前面我们介绍的 Node.js 的事件循环机制和 cluster 模式就是一种 Node.js 潜在的内在因素,而网络 I/O 、磁盘 I/O 以及其他内存、句柄的一些问题则是因为服务器的资源因素导致的性能问题。本讲就详细地分析影响其性能的因素原因,以及部分的优 2021-08-19
Node.js 多进程解决方案:cluster 模式以及 PM2 工具的原理介绍 前面我们都使用了一种非常简单暴力的方式(node app.js)启动 Node.js 服务器,而在线上我们要考虑使用多核 CPU,充分利用服务器资源,这里就用到多进程解决方案,所以本讲介绍 PM2 的原理以及如何应用一个 cluster 模式启动 Node.js 服务。 单线程问题在《01 | 事件循环:高性能到底是如何做到的?》中我们分析了 Node.js 主线程是单线程的,如果我们使用 nod 2021-08-17
Node.js 3 大主流系统框架:由浅入深分析 Express、Koa 和 Egg.js 上一篇我们没有应用任何框架实现了一个简单后台服务,以及一个简单版本的 MSVC 框架。本讲将介绍一些目前主流框架的设计思想,同时介绍其核心代码部分的实现,为后续使用框架优化我们上一讲实现的 MSVC 框架做一定的准备。 主流框架介绍目前比较流行的 Node.js 框架有Express、KOA 和 Egg.js,其次是另外一个正在兴起的与 TypeScript 相关的框架——Nest.js,接下来我 2021-08-15
Node.js 如何构建一个简单的 RESTful 服务? 前面都是一些知识点的阐述,这里将应用前面讲到的知识点,来实现一个简单版本的 RESTful 系统架构,并在此架构上实现一些简单的应用。 基础技术点在学习时会涉及一些技术知识点: 什么是 RESTful 规范; 数据库的读写处理过程; 目前常用的 MVC 架构模式,以及后续文章所应用的一套新的、独创的架构模式——MSVC 架构模式。 RESTfulRESTful(Representational 2021-08-13
Node.js 应用场景:作为后台可以提供哪些服务? Node.js 是目前非常火热的技术,现已广泛应用于 Web 服务、工作流、客户端应用等诸多领域。 目前 Node.js 最常被用作前端工程化,导致大家误解为 Node.js 只适合作前端工程化工具,而忽视了其作为后端服务的特性。导致很少在后端研发中考虑使用 Node.js,认为没有任何优势,比如适用场景较少、性能较差等。为了消除这种误解,这里将介绍 Node.js 的特性,以及适合哪些后端应 2021-08-11
Node.js 事件循环:高性能到底是如何做到的? 在介绍 Node.js 的应用之前,我们先来讲解下 Node.js 中最基础也是最核心的部分:事件循环的原理。这一部分在面试过程中是必考的点,然而大家在网络上查找到的知识或多或少有些出入,会被误导。 所以本次就基于 Node.js 10+ 版本,讲解事件循环的原理,不过要注意这个事件循环原理和浏览器的原理是不同的,Node.js 10+ 版本后虽然在运行结果上与浏览器一致,但是两者在原理上一个是基 2021-08-08