大型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大型分布式电子商务架构说明 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便 ...
随机推荐
- 初探ant-design(web版本二)
Dropdown下拉菜单 向下弹出的列表. 何时使用# 当页面上的操作命令过多时,用此组件可以收纳操作元素.点击或移入触点,会出现一个下拉菜单.可在列表中进行选择,并执行相应的命令. 最简单的下拉菜单 ...
- win+R快捷启动程序
win10: Win+R cmd:命令行程序 notepad:记事本 winword:word文档 calc:记事本 mspaint:画图 wordpad:写字板
- 中文参考文献如何导入到endnote中
比如我想在文献中插入“2型糖尿病患者并发脑卒中的前瞻性研究”这篇参考文献,在主题里面输入文献标题,勾选我们要找的文献,点击“导出/参考文献” 导出来以后,点击屏幕右下角界面的“导出/参考文献”,下图红 ...
- arm裸机通过uboot运行hello world程序测试结果
开发板EasyARM i.MX280A CPU:arm926ejs helloworld程序使用的编译器 (1)arm-fsl-linux-gnueabi-gcc version gcc4.4.4 ...
- vue router.push(),router.replace(),router.go()
1.router.push(location)=====window.history.pushState 想要导航到不同的 URL,则使用 router.push 方法.这个方法会向 history ...
- 面向对象【day08】:类的特殊成员(一)
本节内容 1.__doc__2.__module__和__class__3.__init__4.__del__5 .__call__6 .__dict__7 .__str__8 .__getitem_ ...
- linux 出现ping,错误提示:connect :network is unreachable
今天克隆Centos7后 修改IP地址 修改前: IP:172.16.0.198 默认网关:172.16.0.254 修改后: IP:172.16.1.100 默认网关:172.16.0.25 ...
- IntelliJ IDEA 界面介绍及常用配置
一:配置Maven File-->Settings-->搜索框输入maven -->配置maven home directory 跟 user setting file 二:配置JD ...
- postgresql 随机函数
随机函数 --function to get random number============================================================= -- ...
- centos7 redmine安装过程
mysql安装配置 redmine 部署过程 redmin官方文档写的太烂加上不熟悉ruby搞了半天,回到家后觉得还是记录下好,希望可以帮助有需要的人,少走弯路. 版本说明 下面的版本很重要re ...