🍂落页
登 录

《Node.js 实战》笔记

  • Node.js
  • 协议
  • 扩展
  • 可观测性
🍂落页
TALAXY
扩展
🍂落页
TALAXY

扩展

扩展
  • 集群模块
  • 反向代理
  • 负载测试

运行多个服务副本主要避免两个场景:服务器崩溃 & 高吞吐量。

集群模块

Node.js 内置了 cluster 模块,可以用来生成子进程,运行多个服务器实例。最好保持主进程简单。

当面临多个请求时,主进程会将请求循环地分配给工作进程(在 Windows 中会根据繁忙程度)。

集群的缺点

cluster 本质是网络的第 4 层(即 TCP/UDP 的同层)运行。当建立 HTTP 长连接时,主进程会始终将请求分配给原工作进程。

如果服务器是单核 CPU ,启用集群可能会更加消耗资源,实例之间可能会出现抢占 CPU 资源的情况。

反向代理

书中使用的 HAProxy 来作为反向代理,但我应该会去用 Ngnix ,所以我只从书中摘了些共同的概念。

  • 负载均衡 & 健康检查;
  • 压缩;
  • 终止 TLS 会话;
  • 限速(最大连接数);

Node.js 中 http.Server 也可以设置最大连接数,但是处理方式是直接阻止请求。如果反向代理也设置了最大连接数,则需要小于在 Node.js 中设置的最大连接数。

负载测试

对于软件即服务(Software as a Service, Sass),通常需要确定服务等级协议(Service Level Agreement, SLA),来协定服务质量。

SLA 会包含多个服务等级目标(Service Level Objective, SLO),比如正常的运行时间需求、API 请求延迟、故障率等。

可以用 Autocannon 来进行负载测试,同时应当在生产环境中做最后的测试。

TALAXY 落于 2024年4月13日 。