使用场景:

  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(前端打包)

大型NodeJS项目架构与优化的更多相关文章

  1. nodeJS(2)深了解: nodeJS 项目架构详解(app.js + Express + Http)

    简略了解:nodeJS 深了解(1): Node.js + Express 构建网站预备知识 环境: 环境: win7 + nodeJS 版本(node): 新建 nodeJS 项目: 名称为: te ...

  2. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  3. 15套java互联网架构师、高并发、集群、负载均衡、高可用、数据库设计、缓存、性能优化、大型分布式 项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  4. java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

    15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...

  5. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  6. Java 架构师+高并发+性能优化+Spring boot大型分布式项目实战

    视频课程内容包含: 高级 Java 架构师包含:Spring boot.Spring cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.Zer ...

  7. 大型网站技术架构(3):WEB 前端性能优化

    上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类 这次来说一下 web 前端性能优化,一般来说,web 前端就是应用服务器 ...

  8. Spring 05: 用DI(依赖注入)优化Spring接管下的三层项目架构

    背景 用注解改造前面Spring博客集里(指 Spring 02)Spring接管下的三层项目架构 对前面Spring博客集里(指 Spring 04)@Controller + @Service + ...

  9. .net 大型分布式电子商务架构说明

    .net大型分布式电子商务架构说明 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便 ...

随机推荐

  1. PHP去调用jenkins

    背景说明:目前公司用到 jenkins(持续集成开源工具)更多情况下,通过配置,可以在gitlab上通过webhooks去调度jenkins 或者通过 jenkins管理后台,去手动执行“立即构建”去 ...

  2. AIC和BIC

    一.模型选择之AIC和BIC 人们提出许多信息准则,通过加入模型复杂度的惩罚项来避免过拟合问题,此处我们介绍一下常用的两个模型选择方法 赤池信息准则(Akaike Information Criter ...

  3. FastDFS整合nginx后,nginx一直报错

    FastDFS整合nginx后,nginx一直报错: 报错内容: [2018-06-11 09:41:21] ERROR - file: ../common/fdfs_http_shared.c, l ...

  4. .net MVC使用NPOI读取Excel模板,再写入数据

    NPOI其实已经介绍的差不多了,再贴一个方便以后复制粘贴. 亮点其实是 Server.MapPath 这个东西,可以找到MVC工程下的文件夹,找路径还是很方便的. /// <summary> ...

  5. Hystrix介绍以及服务的降级限流熔断

    (dubbo熔断,Hystrix问的少) 无论是缓存层还是存储层都会有出错的概率,可以将它们视同为资源.作为并发量较大的系统,假如有一个资源不可用,可能会造成线程全部 hang (挂起)在这个资源上, ...

  6. POJ 2127 Greatest Common Increasing Subsequence

    You are given two sequences of integer numbers. Write a program to determine their common increasing ...

  7. Spring RedisTemplate操作-序列化性能测试(12)

    @Autowired @Qualifier("redisTemplate") private RedisTemplate<String, String> stringr ...

  8. AsciiMorph - 新奇的 ASCII 字符画生成工具&插件

    AsciiMorph 是一个新奇的 ASCII 字符画生成工具和开源插件.字符画(ASCII Art)的历史可以追溯到几十年前,起初是用在图形显示功能受限的设备上,用ASCII字符集里的可打印字符来拼 ...

  9. 20155204 2016-2017-2 《Java程序设计》第6周学习总结

    20155204 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 一切皆对象,输入输出也是类,线程也是 String对象的trim方法去掉首尾空格和空字符 f ...

  10. sql 分页row_number() over(order by key)

    select * from ( select row_number() over(order by BD008_001) as row ,* from (select * from bd008)t ) ...