深圳NodeParty 2016技术总结

周六参加了深圳NodeParty,主要是看到有专题会分享他们使用Node与微服务改造的经验,特别关注工业级运维node集群的经验。

第一场演讲是《实战ES2015》

主要是安利一下JS新语法标准ES2015的改进,展望一下所有浏览器都支持新语法后的未来。

首先的变化好处体现在class关键字,以语法糖的形式区分了类与函数;接着是使用export&import关键字来管理模块,统一标准结束了各种模块标准大战;最后是介绍了rollup.js打包工具,并畅想在HTTP/2标准计算的帮助下,浏览器端实现如rollup.js一样的自动模块引用与打包,彻底终结现在莫名奇妙引入的前端编译打包历史。

es2015

第二场演讲是来自腾讯的《Nodejs平台化运营实践》

来自腾讯superzheng同学的分享,明显干货比第一场多了,对平台监控产品设计很有指导意义,可惜没有更多分享技术实现方法与细节。幸好后面广发证券的同事补充了很多实现技术细节。

监控平台产品设计(对比pm2)

  • 进程管理(因为node单线程所以需要集群负载均衡,并可以自动重启)
  • 日志类型(按大小滚动,按时间滚动区分,可以远程动态改变级别)
  • 日志输出 (格式为:时间 | pid | 级别 | 文件名:行号)
  • 可配置的服务(不重启动态变更配置,名字服务可以查询)
  • TAF协议与JCE规范(编解码,不动态解析更方便debug)
  • 发布部署(分为编译与发布两个环节)
  • 调用监控(流量、耗时、超时率、异常率、服务+接口)与特性监控(自定义)

日常运维问题(这部分分享经验,非常好)

  • 时间计算问题:Date.now()最快,process.uptime()最好
  • 内存与进程:虚拟核心与物理核心问题
  • 用户环境:分为正式环境,灰度环境与测试环境,服务调用只在同环境中进行,根据用户所处环境自动进行服务信息转发
  • 染色应用:将整个服务调用链日志统一收集展示

看图说话环节很有意思

2

大家也猜一猜?都对应QQ啥业务类型(横轴是一天的时间)

 

 

答案揭晓:

A. push 类推送业务 (注意峰值流量,要考虑削峰策略)
B. C. 用户访问相关业务 (越平滑流量越大)
D. 定时拉取任务(注意持续资源使用,要考虑错峰策略)

其他问题:

process.setMaxListeners(Infinity)隐患,强调公用模块的质量与责任
现场提问:load高、cpu不高是啥异常,解答:  查io(socket)、swap使用率(磁盘io)

第三场演讲就是《Node.js在广发证券:koa2与微服务》

果然没有辜负我的期待,这场堪称本次信息量最大的分享。相比腾讯全是功能介绍,这个分享对实现技术细节的说明更没有保留。

大会ppt地址如下:nodejs在广发证券

广发证券引入nodejs来实现API Server部分,下图为引入Nodejs与微服务架构变化

14598838731799

目前数据交互技术有:

  • Restful Extend(Filter&Sort,Bulk Inserts,Pagination,Optional-filds)
  • 新方向:GraphQL@Facebook, Falcor @ Netflix (尚不好投入实战)

广发使用Koa2框架实现:

  • async&await(异步,错误处理优势)使用koa-adapter兼容旧语法
  • 接口验证与数据验证使用 koa-validate和joi 进行

日常开发注意

  • 使用es2015语法并用Babel编译,可以自动去除node已经支持的部分
  • 改用npm scripts构建(npm-check检查依赖)
  • 入库前检查 使用husky自动运行检查,包括各种测试
  • 测试覆盖 (一定要覆盖的部分包括经常修改的、复杂的、常被引用的)npm run coverage:lab plato(js源码可视化)jsinspect(找到代码结构类似的代码)

线上运行

  • 关注学习StrongLoop 性能优化系列文章
  • 上线准备(Event Loop监控避免复杂同步代码,利用confit与short handle通过环境变量与信号来动态调整log级别,异常重启比忽略好)
  • 系统仅需支持几千几万的流量(request-debug)
  • 上下流docker运维(无状态,随时扩容),镜像部署方便,链路监控(Zebking)

我提问:关于服务注册与发现如何实现的?得到回答:使用kubernetes并加强了监控功能

个人后来想到传统金融公司使用node技术会面临的最大问题应该是开发人员的招聘,毕竟本来比较靠谱的前端人员就不太好招,受限于薪资待遇,他们也不太可能兼顾node技术,后端java开发人员也不习惯使用node技术,不知道广发技术部门是怎么考虑这个问题的。其次在生产环境下使用docker容器进行部署,会不会有什么坑。感觉应该多和广发证券技术部门交流一下,特别是互联网架构这块的做法。

第四场关于typescript除了ppt做的非常好外,内容没啥可以说的。

打赏作者
提交看法

抢沙发

还没有评论,你可以来抢沙发