大型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大型分布式电子商务架构说明 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便 ...
随机推荐
- Boost filessystem...
CMakeList.txt: cmake_minimum_required(VERSION 3.8) project(Demo) ) set(SOURCE_FILES main.cpp) //需要添加 ...
- “==”运算符与equals()
“==”运算符,比较内存地址 equals(),比较内容(值) public class Book { public static void main(String[] args) { String ...
- Machine Learning Netsite
Google: Machine Learning
- 部署高可用keepalived组件
本文档讲解使用 keepalived 和 haproxy 实现 kube-apiserver 高可用的步骤: keepalived 提供 kube-apiserver 对外服务的 VIP: hapro ...
- 虚拟机下安装ubuntu后root密码登录失败的问题
问题描述: 在虚拟机下安装了ubuntu中要输入用户名,一般情况下大家都会输入一个自己的网名或绰号之类的,密码也在这时设置过了. 但是当安装成功之后,使用命令#su root,然后输入刚才设置的密码, ...
- git使用详细过程
1. Git概念 1.1. Git库中由三部分组成 Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而 ...
- HITS算法--从原理到实现
本文介绍HITS算法的相关内容. 1.算法来源 2.算法原理 3.算法证明 4.算法实现 4.1 基于迭代法的简单实现 4.2 MapReduce实现 5.HITS算法的缺点 6.写在最后 参考资料 ...
- DOM-Document对象
一. 整体介绍 这里介绍DOM对象中的Document对象. 何为Document对象?每个载入浏览器的HTML文档都会成为Document对象,Document对象可以帮助我们对所有的HTML ...
- outlook关闭时最小化工具
outlook本身不能支持设置点击关闭按钮时最小化,而是直接退出.需要借助一个加载项实现: Keep Outlook Running. Keep Outlook Running主页:https://s ...
- springboot+rabbitmq整合示例程
关于什么是rabbitmq,请看另一篇文: http://www.cnblogs.com/boshen-hzb/p/6840064.html 一.新建maven工程:springboot-rabbit ...