使用场景:

  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. ztree更换节点图标

    首先需要注意一点,如果有研究过树形菜单,就会发现实现删除和修改功能特别简单,但是增加却有一点复杂.造成这个现象是ztree树形菜单的历史遗留问题.大概是之前的版本没有增加这个功能,后来的版本加上了这个 ...

  2. mysql 在linux下的启动

    启动与停止 1.启动 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可. [root@test1 init.d]# /etc/init.d/mysql ...

  3. Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  4. ​python高级数据可视化视频Dash1

    在谷歌浏览器输入http://127.0.0.1:8050/后,回车,看到下图可视化结果 # -*- coding: utf-8 -*- """ Created on S ...

  5. 20190311 Windows上ZooKeeper伪集群的实现

    1. 复制并修改conf/zoo.cfg文件 以zoo1.cfg为例: dataDir=E:\\Develop\\zookeeper\\3.4.6\\zookeeper-3.4.6\\data1 da ...

  6. centOS7环境下安装jdk1.8

    首先下载jdk1.8  去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...

  7. JAVA记录-Mybatis介绍

    1.什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyB ...

  8. pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用

    pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用 量化交易里, 需要进行大量的分组和统计, 以方便自己处优势的位置/机会. 比如对股价进行趋势分析, 波动性分析, 量 ...

  9. Extmail 批量添加邮箱用户

    Extmail  设置批量添加邮箱用户 需要修改  userctl.pl  文件 修改 userctl.pl 文件 cd /var/www/extsuite/extman/tools 编辑 userc ...

  10. python的特殊方法介绍

    __repr__.__str__ __len__.__getitem__.__setitem__.__delitem__.__contains__ __iter__.__reversed__.__ne ...