【亿级交易平台效能关键大公开】阿里巴巴Node.js技术专家袁锋揭露后端效能关键
2017-09-03 07:08:17 | 来源:ithome | 投稿:小唯 | 编辑:dations

原标题:【亿级交易平台效能关键大公开】阿里巴巴Node.js技术专家袁锋揭露后端效能关键

阿里巴巴为了要监控Node.js系统的效能,自行开发一套效能监控工具Alinode,可以追踪CPU用量和记忆体泄漏问题。(图片来源/袁锋)

淘宝网在2012年拥有4.5亿用户、600万个卖家,当年12月12日举行的双十二活动,就有超过200万名卖家参与,淘宝还推出专属个人的消费历程“淘宝时光机”,呈现过去10年的个人化专属购买历程,为了快速地从10年间的庞大消费记录中,分析出个人的消费历程,Node.js技术专家袁锋袁锋指出,当天此应用流量创下历史新高,远远超过其他分析数据类型的产品。

所幸,早在前一年,阿里巴巴后端就改用Node.js开发,才能撑住这次暴增的流量,也因为淘宝经常举行一次性的特别活动,像是双11和双12等促销活动,需要更高效能的架构,来因应流量暴增的问题。

阿里巴巴在2011年开始导入网站开发框架Node.js,“测试完发现Node.js比PHP快至少5倍以上,就开始用了!”袁锋表示,当时的技术负责人发觉Node.js技术,看中了简单的特性,只有测试性地建了一个分析数据类型的产品,当时实测后发现后端采用Node.js的效能比PHP快,就开启了阿里巴巴与Node.js的旅程。

袁锋在蚂蚁金服负责所有用Node.js技术开发的专案,他同时也是中文Node.js技术社交CNode.org的核心成员,由于他所属的部门都是从事开发分析数据类型的产品,“数据产品属于高I/O流量!”他表示,原本用PHP撰写而成的架构,因为I/O流量持续增加,让原本的架构不堪负荷。

阿里巴巴在2011年应用开发端导入网站开发框架Node.js,看准Node.js快速开发的特性,用Node.js开发应用展示层所需要的功能。图片来源/袁锋

Node.js最适合创造I/O密集型的应用

由于分析数据类型的产品属于I/O密集型应用,为了要解决流量暴增的问题,非同步(Asynchronous)I/O就变成应用开发端重要的课题之一,系统必须可以同时处理多个 I/O△要求,来分散流量,但是,以往用PHP开发应用,很难达到这样的目标。

他表示,从PHP改用Node.js的转折,团队当时尝试建立一个分析数据类型的产品,效能提升许多,开发人员的接受度也很高,在正式发布第一个对外的公开产品前,阿里巴巴内部经过许多较小规模的试验,最后,确定没问题之后,才正式推出“淘宝指数”,之后又陆续推出数据魔方等数据型产品。

采用Node.js开发可从全新的创新应用着手

淘宝指数是全新的应用,袁锋表示,一开始用Node.js来开发适合从全新的应用开始着手,“新手很容易就可以用Node.js写出一个应用!”他一语点出Node.js的优点,由于Node.js拥有许多套件,开发功能的过程,可以省去不少时间,让开发人员快速地从0到1打造出全新的应用,因此,Node.js适合配合创新,快速开发新应用。

一开始导入Node.js时,开发应用的IT团队对Node.js都还不了解,过去只有用Python、Java和PHP建置应用服务的经验,在团队IT人员初步研究过后,都觉得Node.js简单易上手。

Node.js快速开发的优势,不只有利于前端的应用,对于内部开发人员的开发效率也有帮助,“Node.js对阿里巴巴而言,刚好是填补前端团队人力不足的问题,”袁锋解释,以往,开发人员在开发应用的过程中,会用Java、Python等不同的语法,建立自己的开发工具,改用Node.js之后,开发人员在写工具的效率上,大幅地提升,他认为,Node.js让IT团队有一个更好的合作模式,创造开发工具。

不过,他也坦言,当初天真地认为导入Node.js会是个简单的工作,开始摸索之后,才发现困难重重,首先面临的问题就是,Node.js如何融入阿里巴巴的原有Java生态系,袁锋表示,当初为了要写Node.js,却整天都在研究Java的程式码,他采用hessian.js和java.io两项序列化协议,来串接Node.js和Java,跨语言的开发他则建议使用序列化资料结构方法Protocol△Buffers。

技术瓶颈解决之后,还有另外一个问题,就是缺乏Node.js的工程师,“2011年时,Node.js还太新了!”他表示,当时就连资深的人事都没有听过Node.js,要招聘工程师更是难上加难,这也是袁锋当初在CNode.org极力推动Node.js的原因,他认为要主动创造一个环境,让更多人可以投入这个生态圈。

阿里巴巴Node.js技术专家袁锋表示,Node.js非常适合用于开发I/O密集型的应用场景,不适合复杂且大型的应用。摄影/洪政伟

Node.js的局限是复杂且大型的应用

袁锋表示,Node.js适合快速打造出全新的应用,相反地,Node.js的瓶颈点就是在产品发展的阶段很适用,但并不是产品持续发展的优先选项,依照他的观察,创新业务里面,要从0到1用Node.js非常适合,但是要从1到100,就很难全用Node.js,他解释,当应用慢慢壮大之后,必须切分成许多层,且业务逻辑会变得越来越复杂,而Node.js就不适合打造业务服务层。

举例来说,用Java就可以很容易处理分散式交易,但是Node.js就很难实现,因此,他建议,企业应该想清楚系统架构每一层工程师的分工和擅长的工具,找到适当的场景,用对工具才是最重要的。

袁锋举例,阿里巴巴在尝试用Node.js打造全新的应用后,也将目光转向既有的应用数据魔方,当时该应用流量持续上升,他预计原本的架构将会无法招架,因此开始将原有的PHP架构转成Node.js,但是,他就将系统架构分的很清楚,Node.js只负责应用展示层所需要的功能。

阿里巴巴打造自家的Node.js效能监测工具

由于阿里巴巴有许多流量大的应用,在几年前阿里巴巴预期将来会有许多用Node.js打造的应用,可能会遇到和Java应用一样的问题,于是,从原本的数据单位拆出一个团队负责开发效能监测工具Alinode。

他举例,过去没有效能监测工具,发布新的程式码时,CPU用量增加和记忆体的泄露问题,都无法准确追踪是哪一行程式码导致的问题,同一个应用发布两个版本,CPU用量从15%增加到30%,开发人员只能找出可能有问题的程式码来修改,再重新发布,若是CPU用量降下来,开发人员才可以确定是这行程式码有问题。

袁锋表示Google的开源JavaScript引擎V8所提供的监测工具也无法百分之百准确追踪程式码的问题,但是阿里巴巴开发的Alinode则是可以掌握8成以上的效能问题,可以自动提示某个函数使用的记忆体资源过多,也能直接显示哪一个行数的程式码需要修改。

袁锋过去在CNode.org社交积极推动Node.js,刚开始只是为了创造Node.js生态圈,以利招募Node.js工程师,不过经过许多年头后,他还继续坚持经营社交,“有了这些交流,让我们可以提前预防别的公司遇到的问题,”他表示,这是他认为最大的意外收获,因为大家会在社交中分享实际用Node.js遇到的问题,让其他人可以在遇到问题之前事先预防,形成良性循环。

袁锋曾经以为Node.js是万能的,慢慢地接触到更多后端技术后,才发觉,应该要想清楚每个开发框架的优势,善用它的优势提升研发效率,他表示,现在他花更多时间在思考如何提升开发效率,若有更好的方案,未来可能也不排除换成别种语言。

阿里巴巴为了要监控Node.js系统的效能,自行开发一套效能监控工具Alinode,可以追踪CPU用量和记忆体泄漏问题。图片来源/袁锋

tags:

上一篇  下一篇

相关:

和宥胜激吻惹怒黄子佼? 孟耿如首度回应“关键原因”

我酷网消息 艺人黄子佼日前自爆,拒绝和宥胜同台,还强调“不是一天两天的事!”宥胜也坦承“做了让佼哥生气的事”,外传2人决裂主因,是2014年宥胜和黄子佼女友孟耿如合作偶像剧《22K梦想高飞

最新O2O营业模式 阿里巴巴更新中国传统零售

记者/钟欣倚根据中国证卷网昨日消息,阿里巴巴集团28日宣布线上网购平台天猫,以品牌授权的方式进行线下天猫小店的展店,中国第一家天猫小店昨日在杭州正式开幕,预计今年底在中国境内覆盖量达到一万家的天猫小店。

【第一线机房IT专家实战经验】机房应变对策大公开

图片来源: iThome 台湾8月15日下午4点50分左右,发生了20年以来最大规模的全台大停电,全国高达668万户受影响,遍及全台17个县市,台电也紧急实施分区轮流停电来因应,甚至如彰化、高雄等部分地区还遇到两波或以上停

Autodesk让汽车3D设计也支援多人VR协作,虚拟实境、人工智慧是未来10年关键方向

图片来源: iThome 【中国上海现场直击】早一步开始应用VR(虚拟实境)的游戏娱乐行业,至今在不少对应VR装置的射击或运动类游戏上,已经可实现双人或多人VR游戏体验,但对于更专业级的工业应用来说,如制造业等,目前

小心bit.ly或t.cn连结的诈骗讯息,恶意广告程狂上脸书Messenger散播诈骗讯息的手法大公开

图片来源: David△Jacoby 这一阵子若有人通过Facebook△Messenger传送连结给你可要小心!研究人员发现近日Messenger散布诈骗连结,诱使用户下载广告程式。卡巴斯基研究人员David△Jacoby指出,这个经由Facebook△Mes

站长推荐: