淘宝朴灵谈Node.js的应用
nodejs吧
全部回复
仅看楼主
level 7

淘宝数据平台产品部资深前端开发工程师 朴灵。
CSDN:请先简单介绍一下自己及淘宝在Node.js上的实际应用现状。
朴灵:我是淘宝的朴灵,本名田永强。曾经是一个专职的前端工程师,曾在SAP做Mobile Web App的研究开发,2011年期间在上海组织CNode社区的线下分享会,2012年加入淘宝的数据产品团队专职参与Node的开发。曾在InfoQ上主持《深入浅出Node.js》专栏。
目前淘宝在Node.js的实际应用大致分为三类:
数据中间层团队开发了Itier、NodeFox这样的产品,用于分布式数据的读取,Node.js异步带来的并行IO,可以很好的压榨分布的数据库;
第二种属于我目前从事的部分,利用Node.js进行Web开发,向前融合前端JavaScript,向后享受异步IO并行的性能提升,形成了一个全JavaScript堆栈的产品团队,淘宝指数既是我们的代表作品;
第三类则是别的团队由于有着历史包袱,不能顺利将Node.js推进在产品中,多用它来写一些工具辅助开发。
CSDN:在Web开发方面,我们已经有PHP、JSP、ASP.NET等成熟的开发框架,为什么需要Node.js?Node.js旨在解决什么问题?
朴灵:Node.js设计之初就是用于面向网络的。它拥有小巧、无阻塞IO、异步的特点,具备很好的可伸缩性,利用它可以很容易构建大规模的网络应用,这是它作为网络平台的自身核心定位,Web开发其实是它的附加值。Node.js尽管不如PHP、JSP、ASP.NET成熟,定位也不尽相同,但是应用在Web开发上面,它并无副作用,而且结合前端JavaScript,可以形成前后端一致的上下文,这个优势是PHP、JSP、ASP.NET所不能给予的。过去因为前后端的语言不同,形成了独特的分工,前端工程师与后端工程师之间形成隔阂,随着Node.js在Web开发的崭露头角,前后端的隔阂将会消解,不再有上下文交换、也不再有前后端工程师沟通的成本存在。
CSDN:毫无疑问,Node.js也继承了JavaScript的灵活性,NPM为Node.js提供了灵活的扩展支持,优秀的JS库相当多,您如何选择这些JavaScript库?
朴灵:Node.js从2009年发布之后,Isaac Z. Schlueter为Node设计和开发了包管理器NPM,这一切的渊源来自于CommonJS规范制定的模块和包规范。这后续影响的是三年的时间内,激发了社区贡献了多达1万多的非官方模块,较短时期内就形成了一个完整的生态系统,这在所有的开源社区都是史无前例和值得羡慕的。除了沿着规范发展出的NPM外,也体现出Node自身的优秀,以及JavaScript社区潜藏多年的潜力。
但是由于NPM自身对模块的提交并未设置限制,挑选模块,就如同在大集市上找到称心如意的商品,这需要一定的技巧从良莠不齐的商品中找出来。而我主要采用的评估方法主要有以下几条:
市场口碑。NPM有一份依赖榜:http://search.npmjs.org/#/_browse/deps,它罗列了NPM上被依赖的模块排行。可以看到排在前面的明星模块,不关是否从众心理,这份数据是绝对真实的,选它们基本没问题,因为它们被依赖,被使用,实践价值极高。
说明书效应。对于没有成为明星的模块,评估它的准则可以从模块作者对于文档的重视程度可以看出他对待自己产出的模块的态度,没有API文档、demo的模块,基本可以考虑不采用。
质量认证。对于没有被市场认可的模块,具备一个质量认证的证书,是可以增加招徕顾客成功率的。模块项目如果自身不包含测试用例来保证自身的质量,它会被认为不靠谱的。利用GitHub与travis集成测试,绿色的pass图标是十分令人青睐的。
社区口碑。除了NPM反映的数据外,github也能从侧面反映模块的质量。从代码仓库的watcher数和fork数,可以鉴别模块的价值。
最下策。读源代码。
尽管目前NPM上的模块质量水平不一,但是由于它根植于开源社区,拥有着开放的姿态,背后有着CommonJS的理论成果,不同于jQuery插件的糟糕设计。基于这几个原因,以及Github带来的Social Coding,Node的模块们在一些优秀模块的引领下,整体会呈良性的发展。
CSDN:在大数据和云计算的大潮下,Node.js对云计算和分布式的支持如何?
朴灵:前文提到,Node.js是面向网络设计的。
网络应用中,Node.js带来的并行,在云计算和分布式环境中将会大有作为。淘宝ITier既是享用了它的好处。目前无论是从国内还是国外,Node在云计算厂商那里都是广受青睐的。Joyent本身既是看中Node.js的特点,赞助了这个项目,并应用在云计算产品中。
CSDN:您在本次SDCC大会上想分享的话题是?
朴灵:我将在SDCC会上分享全JavaScript技术堆栈的产品构建经验。
2012年11月13日 13点11分 1
level 8
好帖
2013年05月08日 12点05分 2
level 5
这样好呢,可以专注JS。[真棒]
2013年06月20日 03点06分 3
是啊是啊
2013年07月19日 00点07分
回复 Gloomyzerg :呵呵呵呵
2013年07月19日 00点07分
[汗]
2013年07月19日 01点07分
level 2
写的不错
2013年07月19日 01点07分 4
level 9
非常厉害啊
2013年12月01日 06点12分 5
level 9
加油
2013年12月10日 04点12分 6
level 8
书已经到手了
2013年12月17日 03点12分 7
1