D2 前端大会总结
Preface
有幸参加大阿里举行的D2前端大会,今天看到知乎也有类似参加D2是什么体验
和你有什么收获?
之类的提问,
所以我也稍微总结一下,也对得起这来回的机票钱 :)
这次大会的主题是融合
, 知乎上的网友这么解读的, 说得真好,我这里把它引用过来。。
1 | 著作权归作者所有。 |
其实说直白了,主要涵盖了几个方面:
- react-native
- nodejs
- 一些轮子
此行目的也很简单:
- 关注nodejs在各个企业中的实践经验及技术架构
- 关注讲师们演讲风格/技巧
对我听过每个议题的内容做一下总结:
用 Node.js 构建海量页面渲染服务
这个是第一场演讲,干货非常多,比较惊喜的一场演讲,也很惊讶在阿里内部对于nodejs有如此广泛的应用
整个演讲可以听出,nodejs在手淘中,主要用于业务逻辑处理,html渲染
上,也就是
- nodejs替换了中间层(php),后端原来干嘛还是干嘛,该提供接口还是得提供接口
- 页面渲染还是在nodejs端,不是单页模式(SPA)
- 接口中转(私有协议代理等)
边听边记录一些实践上具体疑问,准备最后QA环节提问,后面主持人没看到我,坐山顶的同学比较吃亏!!!
不过大部分问题也都得到答案,这里列一下当时准备的一些问题,其中一些演讲过程中,就解答了这些问题。
不得不说,演讲者内容方面准备得非常充分。
问题列表:
- 架构模型是如何?
- 如何保证nodejs稳定性?
- koa中间件出现异常之后,会如何处理?
- 发布机制
- 日志记录
- CDN缓存机制
其中第2,3,6个问题,讲师在后面的演讲中都有提到,总结一下:
问题2,稳定性
- 单元测试,单元测试,单元测试
- 编写可测试代码
- 代码覆盖率
- cfork/graceful(这里也提到为什么不用pm2,跟我目前实践是一样的pm/graceful,有种原来他们也这么做感觉)
- 日志记录,错误预警(短信,邮件)
- 容灾机制
问题3:koa中间件异常
这个问题后面给出了答案,koa中间件的异常并不会导致挂掉,而是会在类似app.onerror
的函数中统一处理,
做一些日志记录,致命错误做告警之类的
问题6:CDN缓存机制
讲师提到他们用到了CDN缓存,一开始以为只是对js/css这些静态资源进行缓存,而实际上,不仅于此,他们还对实际的渲染出来
的页面进行缓存,而具体的推送/刷新机制,他们内部应该有一套比较成熟的CDN方案,后面有机会再去详细了解一下,这个已经也超出
前端解决的范围。
问题 1、4、5 这几个问题,本来想休息时候请教一下讲师,由于时间关系,一直到会议结束,才找了Qzone的同学问了相同的问题,(-__-)b~
手机淘宝Hybrid性能优化实战
这场有两个同学一起讲的,原以为会有react native相关的实践,其实主要是一些性能优化方面的建议以及他们hybird实现的方案,
优化的建议后面PPT出来之后都可以看到,这里就不赘述了,而hybird这一块挺有意思的,类似于,定义一些html标签属性,通过截获
这些属性,把原来的标签替换成原生组件。这里我就在YY,如果浏览器外壳能够支持这个功能,那么写出来的webapp交互体验上就非常棒了。
alinode与Node应用性能管理
下午场抱着膜拜大牛的心情, 听了朴灵
的alinode与Node应用性能管理
, 2年前就买过他的深入浅出nodejs
,这本书真心不错,通俗易懂,推荐一下。
听完整场的演讲,给我的印象是,腼腆的技术型奶爸
,没有很花俏的ppt,没有俏皮的话,甚至现场互动都有点尴尬,但是有全面准备的示例代码和演示。
分享的内容主要是围绕着alinode及阿里云提供的在线分析工具,主要功能就是在node端提供一个类似Chrome开发工具的Profiler,依赖于alinode,可以对
线上实时Profile,实时抓取堆快照,然后利用他们提供的在线分析工具,排查线上内存泄漏
和CPU异常飙升
的问题。
Node.js加速Qzone
这场分享后面才进来,演讲嘉宾感觉很有气场,也有一些互动,因为是nodejs相关,也听得比较认真,这里罗列了一些关键点:
- QQ nodejs装机量260台,qzone是80台服务+60台代理
- 砍掉nginx代理,node直接提供http
- 服务端渲染首屏(这个与手淘是一致的)
- 本地html快照缓存,提升css响应速度
- 服务端的fidller日志,实时日志下载
- 流水日志
Qzone在nodejs的使用上更加激进,直接把nginx这一层去掉了,他们如何做负载均衡的,会后跟这位同学了解到,
在他们的网络层,还有另外一层做这个事情,可以更完整的做流量控制。
上面提到的1,4,5 问题也在会后跟他沟通
问题1: 架构模型
这个其实是想问手淘那边的架构模型,后面找机会再去了解一下。Qzone 在这个问题上就是,直接让nodejs作为一层中转代理,也是他在演讲
说的接入层,同事也做html模板渲染,协议转换等
问题4: 发布机制
由于他们有260台nodejs服务器,所以我想到,这么多服务器,他们发布程序是怎么进行的
会后了解到,他分两部分解释,一个是nodejs的装机,另外一个是业务程序发布
- nodejs 发布是可执行文件和依赖包一起打包,统一发布到各个服务器
- 业务打包,业务代码与node_module一起打包,统一发布各个服务器
这里他还提到一点,node_module他们是直接提交svn服务器,然后打包时候,从svn拉取,打包,再发布
这里有点惊讶,难道他们是不知道npm shrinkwrap
?
问提5: 日志记录
对于线上的日志记录,他们有一套日志系统和流水系统,应该是有专门的团队做这个事情
- 日志系统用于记录服务器端的每次操作,执行的动作
- 流水记录则记录服务端收到的网络请求,完整的记录http请求的请求/回复,记录与其它接口的交互,并按照fiddler的文件格式进行存储
DataV数据可视化引擎
逼格颜值最高一场分享!分享嘉宾很会讲,在台上淡定自如,思路清晰,很喜欢这样的演讲风格。这里列一下一些关键点:
- 性能上 webgl > svg > canvas
- 大屏幕可以通过组合屏形式实现
- 静态内容可以使用canvas绘制