Node.js 在双十一中有哪些应用,表现如何?

如果node.js在双十一中的表现足够亮眼,对国内node.js的发展会有何影响?
关注者
2,759
被浏览
134,023
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

利益相关,负责淘系业务会场支撑系统的架构设计和开发。

一句话概括:你们根本不知道现在大促(包括日常、双十一)是多么依赖Node.js。

(后文用Node、node、nodejs、NodeJs均指Node.js)

Node在阿里内部的当前背景

两年前,你可以说node在阿里内部就像是玩具一样,仅仅被一些了解node前端用在淘系部分业务,进行着“前后端分离”的事情。内部也有一些优秀的node开发者,如淘系代表的苏大师、朴大师,纯技术流代表则有原云OS团队的各种大神。

但是从去年开始,天时地利人和,node在阿里内部已经遍地开花。

从业务划分上来分析:

  • 支撑业务线上产品:包括淘宝、支付宝、1688,有大量系统已经使用node直接面向终端用户
  • 支撑内部日常工作的内部在线系统:各种内部工具系统,这块本来就是适合用node来敏捷开发的
  • 本地开发工具:阿里体系内各BU都有完整的toolchain,尤其是前端团队,用脚趾头想都是用node实现的

从技术架构上来分析,有两种形态:

  • 所谓的“前后端分离”:目前在基础产品线已经比较流行了,未来还会继续推广
  • 全栈应用:目前利用node完成所有业务逻辑的系统在阿里内的确不多,但其原因并不是node不够稳定(后面会继续分析)。但是随着组织架构的进化、对前端岗位职业规划的优化,完全使用node开发的关键应用会越来越多

大促相关

扯了这么多,回到问题本身。只说一个最直接的,大家今年访问到的所有www域页面(包括首页、频道、会场等)全部是一个全栈node应用支撑的。相比以往大促使用的技术方案,已经被证明的优势如下:

  • 节省了巨大的服务器资源
  • 提供页面安全性、稳定性
  • 对业务个性化需求的支持更好

(括号1:具体实现细节只能憋着不说……)

(括号2:评论有问技术细节的。只能简单说。前端技术:以前cdn+php+rsync,现在cdn+node+xtemplate +redis+oss;后端:以前java,现在node+java,本财年内会全部全部node。前端部分以前QPS低的可怕,XSS数量感人,整个体系没人敢去扩展。)

表现?我们之前是出过一次严重故障,后果大家都可以猜到了。但是,正式那次故障,让PE体系和老板们知道了,原来我们的这么多页面都是node支撑的。

大促当天,我们的系统没有出现过任何投诉,来自运营、前端的答疑竟然比日常还少。系统各项指标正常,符合之前的预期。大家最后都是在买买买。

而之前提到的其它node应用,都不同程度上直接或间接的支撑了大促。

node应用对比java应用的表现?

题主的问题,似乎我已经回答完毕了。但是我自己在扩展一下吧。那些质疑node的人,也多半会不由自主的把node和java进行对比。

目前java仍然是阿里的根基,基础产品线(交易、detail、购物车等)目前看不到迁移到别的语言的可能。因为实在太稳定了,相关的容灾方案也跑了这么多年。没有明显的收益,人家为何要换技术?

从已经官方公布的本次支付数据来看,峰值8.59万每秒。位于上游的应用,是什么数字?我这里只能憋着不能讲。面对如此巨大的TPS,不是说JVM多牛逼就可以解决的。这里主要有三方面:

  • 基础设施:应用监控与日志、流量分配、流量降级、企业级中间件等,都需要语言框架级别的配套设施,这些node都没有。虽然朴大师主导的alinode已经开始beta了,虽然内部也有一些node中间团队(例如支付宝的苏千大师出品的各种东西),但和java比起来,还相差甚远。
  • 生态促进:这是比第一条更要命的。如果说稳定业务已经长期用java,不更换技术是正常的。那么新业务的开发,大家发现上下游全是java应用,那么就开始纠结自己为何要不走寻常路了。现在阿里内不的全栈node业务都没有关联性,不如java应用拥有如此强大的关系网。这一点也决定了,这个java开发即使转岗,也是使用的同一套技术和框架,对接类似的配套业务。
  • 人才储备:java发展了多年,有众多的研究员级别的大神为java体系撑腰,并直接参与java和jvm的开发。反观node体系,阿里内部并无一个能全方位托底之人(考虑复杂架构设计、性能与稳定性分析、运维等各角度)。node本身的contributor名单中,目前也还为有阿里的人(据说马上有)。

这些差距,毫不夸张的说,需要5年甚至10年的追赶。就现在的状况,就算老板让我去用node重写一些交易业务,我也不敢去做。

所以,目前核心的交易链路,是没有任何全栈node应用的。node在这块的表现自然没法评价。硬要评价,也是“无表现”。

总结

node的应用场景在阿里内部还没有完全铺开。node社区本身已经进入了指数期,剩下的是我们node开发在自己企业内部进行落地。

但是在其已经应用的领域,其表现是非常好的。

PS

最后软文一把,希望对node感兴趣的Javascript开发、C/C++、Java开发加入我们团队,探索node在淘系业务的未来。

咨询邮箱: long.qul@alibaba-inc.com

团队博客:

Taobao FED | 淘宝前端团队