youkun( 黄友昆 )
nodejs在朋友网的实践
选择 nodejs 的理由 nodejs 长连接架构 nodejs 与 erlang 数据对比 nodejs 优化
WWW.PENGYOU.COM
3
选择 nodejs 的理由
WWW.PENGYOU.COM
4
• 维护成本低1. 学习成本低2. 工作沟通成本低3. 复用 seajs 模块
选择 nodejs 的理由
WWW.PENGYOU.COM
5
• 快速开发原型1. 快速响应产品需求2. 混搭 server 快速给出解决方案3. 可编程的反向代理4. 准备就绪的异步 server
选择 nodejs 的理由
WWW.PENGYOU.COM
6
• 出众的性能1. 轻松解决 C10K 并发问题2. V8 变态的 JS 执行速度3. 5 台 C1 设备可支持 PV 上千万的朋友网长连接业务4. 并发能力和执行速度都接近 erlang
选择 nodejs 的理由
WWW.PENGYOU.COM
7
• 大团队的顾虑虽然 nodejs 不是性能最优,但其已经满足业务的要求,对于大团队,追求性能的极致没有错,但更看重的是稳定性、维护成本和对需求变更的响应速度。
选择 nodejs 的理由
WWW.PENGYOU.COM
8
• 如果长连接是“切西瓜”,那么:Nodejs:菜刀
选择 nodejs 的理由
WWW.PENGYOU.COM
9
• 如果长连接是“切西瓜”,那么:erlang:西瓜刀
选择 nodejs 的理由
WWW.PENGYOU.COM
10
• 如果长连接是“切西瓜”,那么:C/C++:屠龙刀
选择 nodejs 的理由
WWW.PENGYOU.COM
11
• 如果长连接是“切西瓜”,那么:Java/PHP:刮胡刀
选择 nodejs 的理由 nodejs 长连接架构 nodejs 与 erlang 数据对比 nodejs 优化
WWW.PENGYOU.COM
12
nodejs 长连接架构
WWW.PENGYOU.COM
13
长连接服务的应用场景
1. 统计用户在线时长2. webim(聊天 )3. 服务端推送其它消息
nodejs 长连接架构
WWW.PENGYOU.COM
14
连接数
1. 8核 8G 可维持 13万个长连接2. 理论峰值可到 50W
WWW.PENGYOU.COM
15
nodejs架构图
WWW.PENGYOU.COM
16
nodejs架构图
WWW.PENGYOU.COM
17
nodejs架构图
WWW.PENGYOU.COM
18
nodejs架构图
WWW.PENGYOU.COM
19
nodejs架构图
WWW.PENGYOU.COM
20
nodejs架构图
选择 nodejs 的理由 nodejs 长连接架构 nodejs 与 erlang 数据对比 nodejs 优化
WWW.PENGYOU.COM
21
nodejs 与 erlang 数据对比
WWW.PENGYOU.COM
22
连接数
nodejs 与 erlang 数据对比
WWW.PENGYOU.COM
23
CPU使用率
nodejs 与 erlang 数据对比
WWW.PENGYOU.COM
24
内存开销
选择 nodejs 的理由 nodejs 长连接架构 nodejs 与 erlang 数据对比 nodejs 优化
WWW.PENGYOU.COM
25
nodejs 优化
WWW.PENGYOU.COM
26
日志过滤器
nodejs 优化
WWW.PENGYOU.COM
27
不停机快速定位现网问题
nodejs 优化
WWW.PENGYOU.COM
28
防止 nodejs假死
1. 子进程向父进程发送心跳包2. 父进程通过心跳监控子进程 ,对假死进程自动重启
nodejs 优化
WWW.PENGYOU.COM
29
C++扩展验登录态
nodejs 优化
WWW.PENGYOU.COM
30
CPU绑定
优化后
nodejs 优化
WWW.PENGYOU.COM
31
CPU绑定
优化后