资源预览内容
第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
第9页 / 共34页
第10页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2015-6-3 2015-6-3 4 Nodejs与实时Baas云开发实践 野狗实时 谢乔 5 大纲 NodeJs 开发实践 长连接接入层架构 6 NodeJs 开发实践 服务端 Websocket 长连接 Long polling Rest API 网站前端 前后端分离 高效的上线发布 Grunt Bower 7 服务模型 统一接入层的实现 双向通信长连接 Long-polling,需要Session维持不稳定的长连接 8 为什么使用Nodejs 开发效率高、易维护 单进程高并发 线程安全,无锁 适合IO密集 减少CS,节省栈空间 适合请求分发、透传、轻业务逻辑 9 还不错的特性 异步编程的习惯 V8的垃圾回收 Incremental Marking 增量标记 Openssl AES-NI Debug,chrome profiles 10 需要克服的缺陷 单进程,进程崩溃,game over 不能充分利用多核 用户单线程执行,同步代码影响性能 可靠性差 11方案一 Nginx + NodeJs 优势 并发建连能力强 TLS 加解密优势 负载均衡 权重控制 健康检查 IP Hash 劣势 Port限制 长连接开销 x 2 方案二 虚拟机 + Nginx + NodeJs 优势 并发建连能力强 TLS 加解密优势 充分利用资源 劣势 单点故障 运维成本高 没有负载均衡 长连接开销 x 2 方案三 虚拟机 + NodeJs 直接建立连接 TLS建连实际表现不俗 问题依旧存在 方案四 NodeJs Master - Workers 优势 简单,运维成本低 TLS建连实际表现不俗 劣势 没有负载均衡 Master单点故障 解决方案 Client-Server负载均衡 Client 重连机制 Server可用性与伸缩性 15 16 Nodejs 集群 规模 12核24线程,16woker 单进程50K连接 集群内负载均衡 IP Hash Round-Robin + 外部全局cache 17 Nodejs 性能 使用WRK Connection:close 单进程Nginx的Https为6100Req/S 18 注意:延迟是包含TCP+TLS握手 19 Nodejs 垃圾回收 -min_semi_space_size=128 -max_semi_space_size=256 20Old space gc trace Nodejs Master accept tcp socket pauseOnConnect 处理IPC失败,关闭socket 23 Nodejs Worker 没有实际的listener 手动emit connection Nodejs 健壮性保障 Master 外部watchdog 检测Master进程是否存活 检测Master的端口是否存活 Worker Master监听woker事件 内部watchdog 向指定worker建立连接,模拟请求测试是否存活 注意有坑:遇到大量建立连接时,可能checkAlive的建连超时,误判为 worker已死。 25Socket 泄漏 每一层的socket都需要setTimeout 开发 Tips Master 只接收TCP socket TLS handshake 与 crypt 交给worker 将阻塞代码交给backend server payload内容的加解密 大数据的Json解析 Session resume 减少Long polling的消耗 每个worker进程内缓存 刷新缓存超时 定时回收长时间不使用的 OCSP stapling Asynchronous threads 本图出自 defualt 4 Max 128 UV_THREADPOOL_SIZE 31 使用uv_queue_worker node_zlib node_crypto AddOn 32使用实例池 lib/internal/ freelist 33 野狗科技官方订阅号野狗实时BaaS交流QQ群 34
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号