大规模NodeJS项目架构与优化

2017-12-14  本文已影响0人  mkv_me

聊聊大规模NodeJS项目架构

异步IO原理浅析


  1. 异步IO的是与非
  2. Node对异步IO的实现
  3. 几个特殊的API
  4. 函数式编程在Node中的应用
  5. 常用的Node控制异步API的技术手段

异步IO的好处

Node对异步IO的实现

node

几个特殊的API

async test(){
    console.log('1');
    await sleep(1);
    console.log('2');
}
sleep(time){
    return new Promise((resolve)=>{setTimeout(()=>{resolve()},time)})
}
test()
<script>
    // 哨兵变量
    var s = 0;
    var result;
    var arr = ['a.php','b.php','c.php'];
    for(var i = arr.length-1; i >= 0; i--){
        $.ajax({
            url:arr[i],
            success: function(){
                s = s + 1;
                if(s == 3){
                    alert(result);
                }
            }
        })
    }
    // 函数式编程
    $.ajax({
        url: arr[0]
    }).after()
</script>

函数式编程在node中的应用

app.use(function(){//todo});
var emitter = new events.EventEmitter();
emitter.on(function(){//todo});

常用的Node控制异步技术手段

内存管理与优化


  1. V8垃圾回收机制
  2. 常见内存泄露问题
  3. 内存泄露分析

大规模Node站点结构原理分析


  1. 经典的MVC框架
  2. NET多层架构
  3. JavaWeb多层架构

Node集群的应用


  1. 预备上线
  2. 多线程
  3. PM2
  4. 服务器集群

预备上线

多线程

PM2

  1. 内建负载均衡(使用Node cluster集群模块)
  2. 后台运行
  3. 0秒停机重载
  4. 具有Ubuntu和CentOS的启动脚本
  5. 停止不稳定的进程(避免无限循环)
  6. 控制台检测
  7. 提供HTTP API
  8. 远程控制和实时的接口API(Nodejs模块,允许和PM2进程管理器交互)
pm2
上一篇 下一篇

猜你喜欢

热点阅读