Node.js
文章平均质量分 95
我乐了.
这个作者很懒,什么都没留下…
展开
-
内存检查:多种类型的内存泄漏分析方案
只需要 2 个工具就可以分析出内存泄漏的问题:heapdump 内存快照的工具chrome dev tools 中的 Memory Profilesheapdump`));在代码中的第 5 行引用了这个库,然后调用 dumpFun 从 10 点 53 分开始,每隔 60 秒打印一次内存快照。这个库如何实现的细节,你可以自己去GitHub 源码中的 lib 目录下查看,主要是做了一层封装,能够更好地适用我们的应用场景。打开 Chrome 浏览器的控制台,在图 1 界面可以找到该工具。原创 2024-02-22 10:45:31 · 916 阅读 · 0 评论 -
系统稳定:如何监控和保护Node.js进程安全?
图 3 是一个最简单的层级结构图,具体每个层级设计其实是非常复杂的。图 3 监控告警平台简单流程图自动定时采集进程的指标数据;接口被调用或者访问后主动上报的信息。以上的两部分信息都会异步地发送给本地一个采集服务,落地到本地临时缓存中,然后定时地将本地临时缓存的上报信息发送给监控数据处理服务。触发告警,根据告警平台的设置,当数据落入后判断是否满足告警机制,满足则调用告警模块触发告警;查询视图,这部分就是一个前端可交互的界面,用户可以在这个平台查询监控信息;API 接口。原创 2024-02-22 10:43:49 · 277 阅读 · 0 评论 -
缓存与应用:多级缓存策略介绍与应用要点
这个概念和缓存雪崩有点类似,但不是大面积的缓存过期失效,而是某个访问频次较高的数据失效了,从而导致这一刻高并发的请求全部穿透到了数据库,从而数据库并发压力较高,响应较慢,也进一步导致数据库异常,影响其他业务。,空数据按理不属于访问频繁较高的数据,所以经过了缓存,但是并没有缓存该空数据,而是直接穿透进入了数据库,虽然数据库查询也是空数据,但是还是需要经过数据库的查询,这种现象就是击穿了缓存直接前往了数据库查询。这里我已经申请了一个,具体信息如下,你可以使用以下云服务配置,由于是免费的,也可以自行去申请试用。原创 2024-02-22 10:41:41 · 977 阅读 · 0 评论 -
优化设计:在 IO 方面应该注意哪些要点?
I/O(Input/Output)意思是输入输出,其实就是数据传递的一个过程,作为后台服务需要更多地与外部进行数据交互,那么就免不了 I/O 操作。I/O 的类型也是非常多的,我们应该掌握常用的一些 I/O 模型分类。I/O 分为以下 5 种模型,在介绍分类之前,我们先了解 I/O 在系统层面会有 2 个阶段(以读为例子):第一个阶段是读取文件,将文件放入操作系统内核缓冲区;第二阶段是将内核缓冲区拷贝到应用程序地址空间。原创 2024-02-22 10:22:28 · 654 阅读 · 0 评论 -
CPU 过载保护设计:如何在服务层面确保系统稳定?
这个词最早出现是在电路方面,在出现短路或者电压承载过大时,会触发电源的过载保护设备,该设备要不熔断、要不跳闸切断电源。在服务端也是相似的原理,首先我们需要设计一个过载保护的服务,在过载触发时,切断用户服务直接返回报错,在压力恢复时,正常响应用户请求。原创 2024-02-22 10:21:17 · 819 阅读 · 0 评论 -
哪些因素会影响 Node.js 性能?
在实际开发过程中,遇到一个问题,由于我们所用机器是一个 96 核以上的服务器,因此启用了比较多的 worker 进程,而主进程只有一个,从而在单机高并发时(2 万以上的每秒并发请求)会导致 master 进程处理瓶颈,这样就影响到了服务性能,并且这时候你会发现 worker 进程的 CPU 并没有任何压力。中已经非常详细地讲解了),无论是主线程逻辑,还是回调处理逻辑,最终都是在主线程处理,那么如果该线程一直在处理复杂的计算,其他请求就无法再次进来,也就是单个用户就可以阻塞所有用户的请求。原创 2024-02-22 10:19:26 · 948 阅读 · 0 评论 -
多进程解决方案:cluster 模式以及 PM2 工具的原理介绍
综上所述,PM2 通过命令行,使用 RPC 建立 Client 与 Daemon 进程之间的通信,通过 RPC 通信方式,调用 God,从而应用 Node.js 的 cluster.fork 创建子进程的。,也就是轮询调度分发给空闲的子进程,处理完成后回到 worker 空闲池子中,这里要注意的就是如果绑定过就会复用该子进程,如果没有则会重新判断,这里可以通过上面的 app.js 代码来测试,用浏览器去访问,你会发现每次调用的子进程 ID 都会不变。,可以帮助你管理和保持应用程序在线。原创 2024-02-22 10:17:21 · 674 阅读 · 0 评论 -
大主流系统框架:由浅入深分析 Express、KoA和 Egg.js
目前比较流行的 Node.js 框架有ExpressKOA和Egg.js,其次是另外一个正在兴起的与 TypeScript 相关的框架——Nest.js,接下来我们分析三个主流框架之间的关系。在介绍框架之前,我们先了解一个非常重要的概念——洋葱模型,这是一个在 Node.js 中比较重要的面试考点,掌握这个概念,当前各种框架的原理学习都会驾轻就熟。无论是哪个 Node.js 框架,都是基于中间件来实现的,而中间件(可以理解为一个类或者函数模块)的执行方式就需要依据洋葱模型来介绍。原创 2024-02-22 10:14:51 · 1149 阅读 · 0 评论 -
如何构建一个简单的 RESTful 服务?
在源代码中有一个 index.js 文件,在没有架构模式时,基本上处理了所有的业务,但是根据当前架构模式,如表 1 所示,只适合处理 url 路径解析、路由判断及转发,因此需要简化原来的逻辑,和第一部分代码一样,我们就不再列举了,主要看路由判断。以上就实现了一个简单 restful 服务的功能,你可以看到代码都堆积在 index.js 中,并且代码逻辑还比较简单,如果稍微复杂一些,这种架构模式根本没法进行团队合作,或者后期维护,因此就需要 MVC 和 MVCS 架构模式来优化这种场景。原创 2024-02-22 10:12:55 · 644 阅读 · 0 评论 -
应用场景:Node.js作为后台可以提供哪些服务?
这 3 个功能都是基于缓存来处理业务逻辑的,大部分都是网络 I/O ,并未涉及 CPU 密集型逻辑,这也是 Node.js 的优势,其次异步驱动的方案能够处理更高的并发。在这些分层中,我们需要寻找网络 I/O 较多,但是 CPU 计算较少、业务复杂度高的服务,基于这点我们可以分析出 Node.js 应用在业务网关、中台服务及运营系统几个方面。随着公司应用越来越多,需要将一些通用的业务服务进行集中,这也是中台的概念。,处理业务相关的逻辑,比如一些通用的协议转化、通用的鉴权处理,以及其他统一的业务安全处理等;原创 2024-02-22 10:10:06 · 826 阅读 · 0 评论 -
Node.js事件循环:高性能到底是如何做到的?
再执行宏任务队列,根据宏任务插入先后顺序执行 setTimeout 再执行 fs.readFile,这里需要注意,先执行 setTimeout 由于其回调时间较短,因此回调也先执行,并非是 setTimeout 先执行所以才先执行回调函数,但是它执行需要时间肯定大于 1ms,所以虽然 fs.readFile 先于 setTimeout 执行,但是 setTimeout 执行更快,所以先输出 setTimeout ,最后输出 read file success。执行微任务或者宏任务的回调函数。原创 2024-02-22 10:07:12 · 414 阅读 · 0 评论