第二章:运筹帷幄之中,决胜千里之外-Node.js APM (应用监控)的概念及实践
- APM(javadoop.com/post/apm)
- 火焰图(www.ruanyifeng.com/blog/2017/0…
- node-clinic && autocannon(juejin.cn/post/684490…
- QPS&TPS
- Graphite 和 Grafana 简介(yumminhuang.github.io/post/graphi…)
第三章: 进可攻,据可守-如何在生产环境部署一个稳定的 Node.js 应用
最终:
- 网关的主要作用:请求转发+ 请求过滤(javaguide.cn/distributed…
- 负载均衡 LVS vs Nginx 对比!还傻傻分不清
负载均衡
- 在第四层之后,开始传输数据了
- 如何理解lvs不需要握手,nginx需要
- LVS是工作在网络的第四层(传输层)的负载均衡服务器,它的主要功能是根据预定的策略将网络连接分发到后端的服务器上。在这个过程中,LVS并不会直接参与到TCP的握手过程中,实际上它只是“透明”的将客户端的连接请求转发到选定的后端服务器,然后由后端服务器完成TCP三次握手过程。换句话说,当一个TCP连接请求到达LVS时,LVS并不会创建一个新的TCP连接或者关闭一个已有的TCP连接,它只是将这个连接请求转发到后端的服务器。所以我们说LVS“不需要握手”。而Nginx则不同,它既可以工作在网络的第四层(如TCP负载均衡),也可以工作在网络的第七层(如HTTP负载均衡)。当Nginx作为一个反向代理服务器时(也就是工作在第七层),它需要接收客户端的TCP连接请求,完成TCP三次握手过程,然后再根据HTTP请求的内容,决定如何处理这个请求或者将这个请求转发到后端的服务器。因此,我们说Nginx“需要握手”。
服务负载均衡
RPC负载均衡
总结:
- nodejs服务端应用存在服务负载均衡和RPC负载均衡两个概念
- 服务负载均衡使用Nodejs cluster模块进行管理,分布式RPC负载均衡有许多相关算法
node应用优雅退出
一般模式下优雅退出:juejin.cn/post/723248…
// 监听信号
process.on('SIGTERM', ()=>{
// 关闭http连接
server.close(()=>{
if(err){
// 退出nodejs进程
process.exit(1)
}
process.exit(0)
})
})
这样就,即使服务停掉,已接收的http会继续响应,不会立即报错
集群模式下优雅退出
大厂如何发布一个版本
健康检查
健康检查和apm监控的区别:健康检查检查的数据很少
pm2
不使用pm2: 当nodejs代码有一部分逻辑错误的时候,用户访问会导致服务挂掉,此时即使再走正确的逻辑,服务挂了也不会有返回了
使用pm2: 当nodejs代码有一部分逻辑错误,被用户访问,返回报错,但是不会导致应用挂掉,其他用户走正确逻辑的时候,是能正常访问的
pm2可以用于python、nodejs等应用,eggjs不推荐使用pm2