大型NodeJS项目架构与优化
使用场景:
- proxy(API冗余,跨域)
- vue ssr(服务端渲染)
- socket(大并发,通讯)
- 区块链(创业公司,新兴行业)
讨论什么?
- NodeJS异步IO原理及优化方案
- NodeJS内存管理及优化方案
- 大型项目Node站点结构原理
- 服务器集群与Node集群应用
- UV过千万的Node站点真身
一.NodeJS异步IO原理及优化方案
- 异步IO消除UI阻塞
- EventLoop LIBUV(事件通知) EVENT QUENE事件队列 回调CALLBACK WORKER THREADS(线程池)
- setTimeout setInterval(线程池不参与 ) setImmedate优先级比 process.nextTick低
- 函数式编程 app.use(fun) 高阶函数 EventEmitter
- 异步手段 step wind Bigpipe Q.js(老项目express推荐) promise(promise.all并发) async await(新项目koa 记得引入polyfill)
- IO昂贵,分布式IO更昂贵
- 适用于IO密集 不适用于CPU密集(书写方式不舒服回调async await,银行处理大量计算,导致卡死)
二.NodeJS内存管理及优化方案
- 闭包使用不得当,CPU爆满
- 垃圾回收机制
- 新生代(存活时间短)scavenge算法(from to交换位置) marksweep标记清除 内存不连续,用mark-compact合并内存
- 老生代
三.大型项目Node站点结构原理
- MVC经典框架(Yii标准MVC)
- .NET多层 BLL 业务逻辑 DALFactory SQLDAL DLLibrary DBUtil
- Java action dao po service common
四.服务器集群与Node集群应用
- 前端工程化压缩打包合并CDN
- 单测 压测 性能分析工具发现BUG
- 编写nginx.conf实现负载均衡和反向代理
- pm2(cluster)集群启动应用,小流量灰度上线 发现BUG
- 服务器集群 nginx lvs->pm2(CDN)->varnish(缓存)->Node->Java->DB->write(read)->BACK
- 上线前的不眠夜
五.UV过千万的Node站点真身
- docs(文档)
- nodeuii(node)
- scripts(项目启动脚本bin)
- webapp(前端页面)
- webapp.build.sh(前端打包)
大型NodeJS项目架构与优化的更多相关文章
- nodeJS(2)深了解: nodeJS 项目架构详解(app.js + Express + Http)
简略了解:nodeJS 深了解(1): Node.js + Express 构建网站预备知识 环境: 环境: win7 + nodeJS 版本(node): 新建 nodeJS 项目: 名称为: te ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- 15套java互联网架构师、高并发、集群、负载均衡、高可用、数据库设计、缓存、性能优化、大型分布式 项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...
- java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘
15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...
- 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...
- Java 架构师+高并发+性能优化+Spring boot大型分布式项目实战
视频课程内容包含: 高级 Java 架构师包含:Spring boot.Spring cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.Zer ...
- 大型网站技术架构(3):WEB 前端性能优化
上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类 这次来说一下 web 前端性能优化,一般来说,web 前端就是应用服务器 ...
- Spring 05: 用DI(依赖注入)优化Spring接管下的三层项目架构
背景 用注解改造前面Spring博客集里(指 Spring 02)Spring接管下的三层项目架构 对前面Spring博客集里(指 Spring 04)@Controller + @Service + ...
- .net 大型分布式电子商务架构说明
.net大型分布式电子商务架构说明 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便 ...
随机推荐
- NO.8:绝不在构造或者析构过程中调用virtual函数
在构造和析构执行期间不要调用virtual函数,因为这类调用从不会下降至derived class(比起当前执行构造函数和析构函数) 如果在base class 构造函数或者析构函数调用virtual ...
- zoj 3195(LCA加强版)
传送门:Problem 3195 https://www.cnblogs.com/violet-acmer/p/9686774.html 题意: 给一个无根树,有q个询问,每个询问3个点(a,b,c) ...
- H3C配置FTP服务器
H3C配置FTP服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.FTP协议简介 1.FTP协议是互联网上广泛使用的文件传输协议 FTP文件传送协议(File Transf ...
- Python基础【day01】:初始模块(五)
本节内容 1.标准库 1.sys 2.os 2.第三方库 1.for mac 2.for linux Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的P ...
- Linux命令之grep
grep命令 用处:文本搜索工具 用法:grep + ‘查找关键字的名字’ + 文件名 示例: 还在profile里面查找then 干净利落强大,有关then的信息显示
- js正则表达式【原】
js正则表达式 http://www.w3school.com.cn/js/js_obj_regexp.asp js常用正则表达式 我的自测样例 <HTML> <HEAD> & ...
- 出栈顺序 与 卡特兰数(Catalan)的关系
一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3 ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2 ...
- python标准库 - 数学库和随机数库
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包 ...
- Database学习 - mysql 数据库 表操作
mysql 数据库 表操作 创建数据表 基本语法格式: 创建数据表: create table 表名( 字段名 datatype 约束, 字段名 datatype 约束, ...... ) 修改表名 ...
- nginx入门二
反向代理: proxy_pass server { listen 80; location /n { proxy_pass http://127.0.0.1:8000/test; } location ...