大型NodeJS项目架构与优化

使用场景:

  1. proxy(API冗余,跨域)
  2. vue ssr(服务端渲染)
  3. socket(大并发,通讯)
  4. 区块链(创业公司,新兴行业)

 讨论什么?

  1. NodeJS异步IO原理及优化方案
  2. NodeJS内存管理及优化方案
  3. 大型项目Node站点结构原理
  4. 服务器集群与Node集群应用
  5. UV过千万的Node站点真身

一.NodeJS异步IO原理及优化方案

  1. 异步IO消除UI阻塞
    1. EventLoop LIBUV(事件通知)  EVENT QUENE事件队列 回调CALLBACK WORKER THREADS(线程池)
    2. setTimeout setInterval(线程池不参与 ) setImmedate优先级比 process.nextTick低
    3. 函数式编程 app.use(fun) 高阶函数 EventEmitter
    4. 异步手段  step  wind Bigpipe Q.js(老项目express推荐)   promise(promise.all并发) async await(新项目koa 记得引入polyfill)
  2. IO昂贵,分布式IO更昂贵
  3. 适用于IO密集  不适用于CPU密集(书写方式不舒服回调async await,银行处理大量计算,导致卡死)

二.NodeJS内存管理及优化方案

  1.  闭包使用不得当,CPU爆满
  2. 垃圾回收机制
    1. 新生代(存活时间短)scavenge算法(from  to交换位置) marksweep标记清除  内存不连续,用mark-compact合并内存
    2. 老生代

三.大型项目Node站点结构原理

  1. MVC经典框架(Yii标准MVC)
  2.  .NET多层 BLL 业务逻辑  DALFactory  SQLDAL DLLibrary DBUtil
  3. Java action dao po service common

四.服务器集群与Node集群应用

  1. 前端工程化压缩打包合并CDN
  2. 单测 压测 性能分析工具发现BUG
  3. 编写nginx.conf实现负载均衡和反向代理
  4. pm2(cluster)集群启动应用,小流量灰度上线 发现BUG
  5. 服务器集群 nginx lvs->pm2(CDN)->varnish(缓存)->Node->Java->DB->write(read)->BACK
  6. 上线前的不眠夜

五.UV过千万的Node站点真身

  1. docs(文档)
  2. nodeuii(node)
  3. scripts(项目启动脚本bin)
  4. webapp(前端页面)
  5. webapp.build.sh(前端打包)

转载于:https://www.cnblogs.com/zt123123/p/10006741.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值