大规模Node项目架构和优化

这节课我们要讨论什么

1、NodeJs异步IO原理浅析及优化方案

2、nodejs内存管理机制以及内存优化

3、大规模node站点结构原理分析

4、服务器集群管理和node集群的应用

5、UV过千万的Node站点真身

异步IO原理浅析

NodeJS异步IO原理浅析及优化方案

io就是输入和输出 input output

io密集型 一堆请求像你袭来 这个时候node全部接受 基于异步的处理机制

cpu要进行紧急运算

io是昂贵的

cup是昂贵的 因为运算特别快

cpu时钟周期  1/cpu 越

cpu分成两级缓存 一级缓存和二级缓存

内存缓存 member cache

缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。

Memcached是什么?

Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

js和java不在一台服务器上 分布式服务器 通过网络进行请求 并在硬盘上找到文件 但是对于取到js文件时间更加长了 a.xx.com js访问 b.xx.com java

ws同步处理的任务 wp异步的任务

异步io创建出文件描述符后,等待系统底层处理后在扔回去

app就是application就是应用程序的简称 通过js代码绑定到v8的进程中 浏览器和v8引擎不支持es6  v8引擎通过nodejs基础的api 电饭锅饭好了会叫 被node封装了一层libuv 也叫asynchronous io node封装的一种异步通知的机制,eventloop 事件从event queue(事件队列)中 交给worker therads(工作线程)执行完毕后告诉eventloop 交回eventqueue(看nodejs事件驱动机制)

AIO ( Asynchronous I/O):异步非阻塞I/O模型。异步非阻塞与同步非阻塞的区别在哪里?异步非阻塞无需一个线程去轮询所有IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。对应到烧开水中就是,为每个水壶上面装了一个开关,水烧开之后,水壶会自动通知我水烧开了。

BIO (Blocking I/O):同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。这里使用那个经典的烧开水例子,这里假设一个烧开水的场景,有一排水壶在烧开水,BIO的工作模式就是, 叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。但是实际上线程在等待水壶烧开的时间段什么都没有做。

NIO (New I/O):同时支持阻塞与非阻塞模式,但这里我们以其同步非阻塞I/O模式来说明,那么什么叫做同步非阻塞?如果还拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,从而进行下一步的操作。

从服务器上看node

Nginx负载均衡代理到lvs

 pm2负载均衡去启动node 可以帮助零秒热启

pm2 是一个带有负载均衡功能的Node应用的进程管理器.

帮助事件轮询的libuv库和v8不是一个线程 

libuv封装了两个东西在linux下叫custom threradpool 在windows 叫iocp

nodejs代码单线程 cluster启动多个服务 fork启动一个服务复制多个 主进程死了其余都崩溃 两种机制

哨兵变量

v8的垃圾回收策略基于分代式垃圾回收机制:新生代为存活时间较短的对象,老生代为存活时间较长的对象,gc是一种回收机制,来区分出新生代和老生代,scavenge算法,把内存一分为二,var a alert(a) var b ,此时b没有用到,把代码进行反转,var a alert(a),把a放到老生代空间内,老生代空间越来越多,也需要清理,a=null,把空间标记为星,把有用变量挪到一起,带星的删除。即先把变量放到老生态空间,在通过标记清除移动的方法,把老生态空间没用的内存干掉,跟磁盘碎片清理相似。

net多层架构

website 前端代码 html css js代码

webstieTest 单元测试文件夹

webService 外界提供接口

webControllers 路由

SQLServerDAL 数据库的一些具体的操作

Model 数据库对应的模型

IDAL 接口 不干活

DLLLlbraly 第三方的库

DBUtility 数据库封装的库

DataCache 一些缓存 

DALFactory 最重要

BLL 真正干活 把IDAL接口层和SQLServerDAl连接起来 真正的路由落到BLL上

JavaWeb多层架构

action 路由层

common 公共的类

dao 数据库的实现层

po 数据库的类

service 实现数据操作的

依赖注入 控制反转

pm2 0秒停机重启

服务器集群

NGINX LVS 

前端项目构建

dosc 前端项目

nodeuii node项目

scripts 运行脚本

webapp build脚本build到nodeuii中

nodeuii中包含

app.js 启动文件

bin 脚本

config 配置文件

controllers 路由

lib 常用的帮助库

middleware 中间件

models 和后端请求用的

nginx-conf  nginx配置文件

node_modules node包

package.json 包管理器

pm2.json pm2的配置文件

public 公共的前端资源配置文件

receiver-master  接收前端传过来的receiver

test 功能化测试

views 模板

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容