实战ES2015
- classes
- export&import 统一标准
- 使用rollup.js打包、HTTP/2
平台化运营实践
腾讯MTT对比pm2设计
- 进程管理
- 日志类型(按大小滚动,按时间滚动)
- 日志输出 时间|pid|级别|文件名:行号
- 可配置的服务(不重启)
- TAF协议与JCE规范(编解码,不动态解析方便debug)
- 调用监控(流量、耗时、超时率、异常率、服务+接口)与特性监控(自定义)
日常问题
- 时间计算
Date.now()
最快,process.uptime()
最好 - 内存与进程 虚拟核心与物理核心问题
- 用户环境 服务调用只在同环境中进行,服务转发??
染色应用 将整个服务调用链日志统一收集展示
push 类推送业务 (峰值流量->削峰)
用户访问相关业务 (越平滑流量越大)
定时拉取任务(持续资源使用->错峰)
process.setMaxListeners(Infinity)
隐患
load高、cpu不高 -> 查io(socket)、swap使用率
Nodejs广发证券:koa2与微服务
nodejs定位(实现API Server)
- Restful Extend(Filter&Sort,Bulk Inserts,Pagination,Optional-filds)
- Falcor @ Netflix
- 使用Koa2 async&await(异步,错误处理)koa-adapter
- 接口验证与数据验证 koa-validate&joi(数据验证)
日常
- es2015使用
- npm scripts(npm-check)
- 入库前检查 使用husky检查,
- 测试覆盖 (经常修改、复杂、多人合作)
npm run coverage:lab
plato(js源码可视化)
线上运行
- StrongLoop 性能优化系列文章
- 上线准备(Event Loop监控,通过环境变量与信号来调整log级别,异常重启比忽略好)
- 支持几千几万的流量(request-debug)
- docker运维,镜像部署方便,链路监控(Zebking)
TypeScript在Nodejs应用
techird.com