11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2013-01-08
  • 本文字数:2603 字

    阅读完需:约 9 分钟

被采访人介绍:田永强,淘宝花名朴灵(微博)。就职于阿里巴巴数据平台产品部,资深前端工程师,参与淘宝指数、数据魔方等数据产品从前端到后端(纯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

2013-01-08 11:012602
用户头像

发布了 91 篇内容, 共 33.8 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

蓝桥杯·寒假百校真题大联赛(大学B组)(第3期)

上进小菜猪

9月月更

产品的帮助中心怎么建设?关于编辑帮助文档的几个小技巧~

Baklib

面试官问我 JS 中 foreach 能不能跳出循环

茶无味的一天

JavaScript js foreach for

第56届世乒赛团体赛开幕!三思近900㎡ LED显示点燃赛事激情

电子信息发烧客

(WebFlux)004、WebFilter踩坑记录

编号94530

Spring Boot WebFlux Reactor3 WebFilter

【蓝桥杯c++每日练习】每日刷题day8:乘积尾零,快速排序

上进小菜猪

算法 9月月更

Idea无法引入@Test 或@Test引入报错【BUG解决】

上进小菜猪

Java 9月月更

打破线上社交“不可能三角”,语音社交可以做到既要、又要、还要

擎声科技

音视频 sdk 语音社交 实时互动 擎声Qtt

工业4.0时代IIoT存储面临哪些挑战

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

【蓝桥杯c++(Python)每日练习】每日刷题day9:流浪的小灰,灰数,小灰分苹果

上进小菜猪

算法 9月月更

【ArkUI】对于Flex布局与基础组件&&声明式UI-组件封装&&父子组件相互绑定的运用【OpenHarmony/HarmonyOS】

上进小菜猪

9月月更

【蓝桥杯c++(Python)每日练习】每日刷题day7:第几天,明码

上进小菜猪

算法 9月月更

字符串哈希

留白的艺术

JavaWeb之利用Filter实现权限拦截小实战【过滤器】

上进小菜猪

Java 9月月更

JDBC复习(CURD)详细步骤以及原理剖析

上进小菜猪

9月月更

Javaweb对于JDBC事务回滚的实战与原理剖析详解

上进小菜猪

Java 9月月更

基于OpenHarmony/HarmonyOS操作系统的ArkUI框架深入学习——开篇1

上进小菜猪

9月月更

【蓝桥杯c++与Python每日练习】每日刷题day3:牌型种数,移动距离

上进小菜猪

9月月更

给你一本武林秘籍,和KeeWiDB一起登顶高性能

腾讯云数据库

redis 腾讯云 NoSQL 数据库 腾讯云数据库 KeeWiDB

leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)

okokabcd

LeetCode 数据结构与算法

OptaPlanner场景和示例

OptaPlanner中文

无线网络安全技术中的王牌标准:WPA到底是个什么东东?解决了什么问题?

wljslmz

网络安全 无线技术 9月月更 WAP

Spring Security 在 Servlet 的作用区域

HoneyMoose

大数据开发应用场景解读&需求产品初探

Jackchang234987

大数据 数据开发

Databricks Data Science&Engineering模块介绍

Jackchang234987

大数据 数据产品经理 数据产品 大数据开发 Databricks

【蓝桥杯c++与Python每日练习】每日刷题day2: “格子中输出“,“九数组分数“,“加法变乘法“

上进小菜猪

算法 9月月更

新品速递|海泰边缘安全网关护航工控数据采集

电子信息发烧客

微信架构图

Johnny

#架构实战营

「产品运营」研发效能之DevOps平台如何运营?

laofo

DevOps cicd 研发效能 持续交付 工程效率

【蓝桥杯c++与Python每日练习】每日刷题day4:煤球数目,生日蜡烛,凑算式

上进小菜猪

算法 9月月更

【蓝桥杯c++(Python)每日练习】每日刷题day6:拯救甘雨

上进小菜猪

算法 9月月更

叩首问路,码梦为生——QCon北京2013 Node.js专题出品人朴灵专访_JavaScript_彭超_InfoQ精选文章