10月25日14:30迅雷前端团队在迅雷咖啡吧进行了一次《NODE在迅雷》的主题分享,此次技术分享共有三位讲师,分别是来自用户平台事业部的廖伟强同学、钱海龙同学和商业产品事业部的黄万昊同学,分别分享了他们在业务中使用Node.js的经验。
先来一场现场照片
第一场分享由廖伟强同学分享PC迅雷从0到1的web业务演进过程。主要分为3个部分:PC迅雷的架构演进、NODE在业务中的定位和NODE行业实践。
他首先介绍了PC迅雷web业务的背景:千万级日活,多版本多平台多内核,AB发版需求,服务器人员缺乏,诸多第三方业务接入等。然后给出了PC迅雷的架构演化图。并配合一系列的服务如直出/灰度服务、用户配置服务、API网关服务、测速服务、告警服务、线上bug跟踪服务等来保证每周1版本的快速迭代需求。
这部分他先从开发实践中遇到的问题如服务器接口签名、前端跨域支持等讲起,分析了服务趋于稳定与用户体验探索不稳定之间的矛盾,指出SOA/微服务架构下的企业开发困境,然后给出了BFF(BACKEND FOR FRONTED)的解决方案和技术体系。
然后他分别讲述了这种NODE体系中需要解决的四大问题:鲁棒性(健壮性)、可维护性、故障排查体系和研发效率。通过分层设计-灰度/直出服务、基准测试、压力测试和单元测试、自动化部署和mini页来保证鲁棒性。通过规范和文档来实现可维护性。接入日志、告警服务和监控体系进行故障排查。通过服务化和组件化来提高研发效率。目前进行服务化的有API网关服务、升级服务、告警服务、BUG跟踪服务、审核服务等。他还推荐了公司的XNPM组件库(
xnpm.repo.xunlei.com需内网访问)
这部分大伟同学介绍了国内外使用NODE较多的公司。国外的有GODADDY、IBM、YAHOO、微软、SAP和Uber。国内的有阿里、腾讯的玄武直出服务、大搜车的中间件长连接消息服务、饿了么的大前端NODE.JS进阶教程、美团点评的乐高后台服务系统等。
最后展望了NODE技术体系从1到100的发展路线。
第二场由黄万昊同学分享,主要从node的生态、核心、特性、内存控制和扩展来讲解Node.js。
首先万昊同学通过一系列的图表向大家展示了node极高的人气、丰富的生态系统和庞大的使用群体。然后又详细讲解了Node的核心-V8引擎的工作原理和编译过程。接着他结合Node的源码分析了Node的两个特性-异步I/O和事件循环。接下来他介绍了Node的内存控制的5种垃圾回收算法,文件读写流(Stream)。最后他介绍了Node c++扩展,以一个用node写的斐波那契函数和用C++扩展写的斐波那契函数执行时间对比展示了C++扩展的高性能。
听了两场干货满满的分享,大家需要时间消化一下了。暂且休息一会儿,这时贴心的行政MM早已为大家准备好了茶点。大家吃好喝好继续听第三场。
最后一场分享由钱海龙同学分享他在开发运营系统时的Nodejs实践经验。海龙同学从开发运营系统的生命周期设计-技术选型-编码-测试-部署、监控讲起。
为了让新人快速上手便于维护和联调,首先接口要文档化,最好附带实例,其次代码要模块化。技术选型方面他给出了运营系统的架构图,围绕着这张图展开。对比了四个web框架:express、koa、thinkjs、fastify。数据层选型对比了mysql、sequelize和mongoose,介绍了resque消息队列。
前端技术选型对比了三个js框架:react、angular、vue。我们的项目中vue用的比较多。UI框架对比了bootstrap、element-UI、ant-design。最后选了element-UI。
编码方面对比了各个编辑器/IDE,选的是微软的vscode。编码规范用的是standard.js,配合eslint使用。测试方面特性测试用的是Mocha测试框架,自动化测试部分用的是Gitlab CI。压力测试方面介绍了apache ab和loadrunner。
然后介绍了部署监控发布流程,大致和第一场大伟同学分享的类似。最后介绍了node进程管理软件pm2和监控告警框架PROMETHEUS。
接下来是Q/A环节。
至此《NODE在迅雷》主题分享就结束了。感谢三位同学的精彩分享,相信大家都学到了不少东西,期待大家的分享。
视频地址:
h5.xylive.tv/room_pc.htm…
资料汇总地址:github.com/xunleif2e/b…
来源: https://juejin.im/post/59f6abe15188252c224d46c2