叩首问路,码梦为生——QCon 北京 2013 Node.js 专题出品人朴灵专访

  • 彭超

2013 年 1 月 8 日

话题:JavaScriptQConDevOpsNode.js语言 & 开发架构

被采访人介绍:田永强,淘宝花名朴灵(微博)。就职于阿里巴巴数据平台产品部,资深前端工程师,参与淘宝指数、数据魔方等数据产品从前端到后端(纯 JS 堆栈)的开发,探索 Node.js 产品化的最佳实践。同时作为 Node.js 布道者,活跃于 CNode 社区,主持 InfoQ 专栏《深入浅出 Node.js》,产出多篇 Node.js 深度解读文章。代码洁癖分子,热爱开源。叩首问路,码梦为生。

作为 QCon 北京 2013 大会“Server 端 Node.js”专题出品人,朴灵接受了 InfoQ 的采访,以下是采访内容。

InfoQ:能否先简单谈谈您在 Node.js 这个领域的从业经验,和您对此 Node.js 的理解?

朴灵:说起我在 Node.js 这个领域的从业经验,实际上并不算太久。最初是在 2011 年早期开始接触,因为从事前端的原因,最初认识到的 Node.js 也并不是高并发高性能,而是发现这个后端实现跟前端浏览器中的 JavaScript 十分亲缘,使得我很轻易的融入进来。那之前也曾接触过 Rhino 这样的后端 JavaScript,也写过不少服务端代码,总之开发过程中觉得是走在河的两岸。Node.js 的异步、事件都让作为前端工程师的比较兴奋,可以以自己习惯的思维去处理服务端的事情。

InfoQ:使用 Node.js 的优势和劣势都有哪些?

朴灵:我认为的 Node.js 的优势在于它以很低的门槛带来了很高的性能收益。我们写着写着 JavaScript,突然它就在后端高性能了。后端工程师较容易明白它的为什么,所以他们多会奔着高性能而来。而对于前端工程师而言,多出来的可能性和潜力值得去利用。

Node.js 的优势在于有较好的开发者基础、高性能和一个良性运转的 NPM 社区。

Node.js 至今市面上的诟病多体现在异步编程这一块上面。前端开发者擅长异步处理,但是缺乏深厚的服务端功底,后端开发者则在异步编程的喜好上多有争论。

InfoQ:Node.js 最适用的场景是什么?阿里巴巴在哪些产品里使用了 Node.js?

朴灵:过去我们讨论 Node.js 最使用的场景是什么,多半分在 IO 密集型和 CPU 密集型。Node.js 擅长在 IO 密集型的应用中这点基本是共识。但是 Node.js 真的不适合运算吗?随着 Cluster 的使用,V8 在脚本语言中的表现,值得拭目以待。

目前阿里巴巴主要将 Node.js 应用在中间层和前端产品层。对外的实际产品有:淘宝指数、数据魔方以及引来潮流的淘宝时光机。海量数据的产品化,离不开中间层(Itier)强有力的支持。

InfoQ:据您所知,业内还有哪些成熟的 Node 应用?

朴灵:国外的就不说了,实在太多,也令人汗颜。腾讯朋友网,利用 Node.js 的高并发,将长连接用得十分俊俏;新浪网将 Node.js 用作 MySQL 的代理层,在分布式场景中发挥很大的作用;雪球财经和花瓣网的前端工程师都是利用 Node.js 深度介入产品开发,效果不错。网易的 Pomelo 也挺赞,期待落地的游戏。

InfoQ:如果说 Node.js 的优势是解决高并发,那么请点评比较一下 Erlang、Go 和 Node.js?

朴灵:如果比较高并发,这三者之间有一定的差距,但是并不太大。 我对 Erlang 的了解并不多,尝试学习过几次,不得要领,学习门槛略高。从腾讯朋友网的例子可以知道 Erlang 的开发者人群太小,以至于找不到人维护,而 Node.js 提供了与 Erlang 不相上下的性能外,在腾讯内部优秀的 JavaScript 开发者唾手可得。不过 Erlang 与 Node.js 实际是对好基友,Node.js 引以为豪的 NPM 平台实际上搭建在 CouchDB 之上,而 CouchDB 是由 Erlang 写成。

Node.js 之所以是构建在 JavaScript,其中一个原因就是它在后端的历史包袱很轻。Go 姗姗来迟,也几乎没有包袱,吸纳了很多现有语言的精华,底蕴深厚。作为一个 Node.js 开发者,多少有些羡慕。我想也许它是未来。但是 Node.js 已经形成了它的生态圈和社区,史无前例的活跃度。

InfoQ:做为国内 CNode 社区的创始人,通过您的了解,现在的 Node 开发人员是前端工程师多,还是传统服务器端开发人员更多?

朴灵:其实我不是 CNode 社区的创始人,CNode 社区是由清笃、空无、玄澄他们发起,我是后来加入成为社区常委的。我目前看到的现象是 Node.js 开发人员中,前端工程师偏多,但是将 Node.js 用得好的,却是一些资深的后端工程师。

InfoQ:那 Node.js 能有今天的成就,您认为是 Javascript 成就了 Node 吗?为什么 Node 会选择用 Javascript 这门备受非议的语言来实现?

朴灵:还是回答下 Node.js 选择用 JavaScript 的原因:
  1. JavaScript 在服务端的发展几乎是空白,没有历史包袱。
  2. JavaScript 的执行机制贴合 Node 的理念:异步、事件驱动。
  3. V8 的高性能。

可以说 Node.js 的出现抓住了两个痛点,前端开发人员因为语言的隔阂导致创造力延展不顺畅,高性能。

在后续的发展中,也可以看到 luavit 这样的项目,采用 Node 的理念去利用 lua 语言上的一些特性。这样只能抓住一个痛点。受历史包袱的影响和丢失大量开发者基础,推广将会受到一定影响。

JavaScript 备受非议的原因在于它太灵活和不受重视。所幸有 Douglas Crocked 这样的人物提炼精华。随着 ECMAScript 规范的发展,JavaScript 自身的问题将会一步一步被解决掉。凭借目前不俗的表现和可期的未来,相信随着开发规范的建立和最佳实践的不断总结,社区和开发者都能走向良性的发展中。

InfoQ:Node.js 在 2012 年有哪些值得记录的进展?在未来又有怎样的挑战与展望?

朴灵:Node.js 在 2012 年主要有几个进展:
  • NPM 作为内部工具提供了
  • cluster 模块的提供,解决开发者对多核 CPU 利用的质疑
  • domain 模块的提供,提升应用健壮性
  • 0.8 发布,性能大幅提升

Node.js 让一些有创造性的前端工程师将他们的能力扩展到服务端,让服务端的开发者能力更低的成本得到更好的性能表现。

目前的状况是明知这个易用、高性能、人才资源丰富、有实际成功案例的技术,却让大家停留在争论和吵架的状态下,这不可谓不是挑战。

InfoQ:做为 QCon 中 Node.js 专题出品人,您希望通过此专题为大家带来哪些实践经验,从而解决哪些问题?

朴灵:我会尝试通过专题展现一些实际的成熟产品,让产品说出过程中的开发经验,尤其是落地产品化的经验,破除概念,直达事实。希望能呈现出 Node.js 成熟之路。让大家看看 Node.js 拿出来溜溜,到底是驴还是马。

InfoQ:感谢朴灵。再问最后一个问题,如果不做程序员,您最想做什么职业?

朴灵:如果不做程序员,我可能想做一个写作者。或者是教师。觉得骨子里有种将好东西分享出去的冲动。

关于此次 QCon 北京的详细信息,请移步至大会官网。现在购票正处在八折折扣期,团体报名,更有其他优惠。详情咨询qcon@cn.infoq.com

JavaScriptQConDevOpsNode.js语言 & 开发架构