国产特级全黄一级97毛片,今天最新中文字幕mv高清,天堂av免费在线,日韩av黄,粉嫩av绯色av性色av蜜臀av,日韩福利视频在线,一区二区美女视频

您當前的位置是:  首頁 > 新聞 > 文章精選 >
 首頁 > 新聞 > 文章精選 >

阿里巴巴Node.js技術專家袁鋒揭露后端效能關鍵

--億級交易平臺效能關鍵大公開

2017-09-04 14:09:08   作者:   來源:CTI論壇   評論:0  點擊:


  看中網站開發(fā)框架Node.js簡單的特性,阿里巴巴在2011年導入Node.js,成功支撐了淘寶網2012年舉行的雙十二活動產生的龐大流量
  淘寶網在2012年擁有4.5億用戶、600萬個賣家,當年12月12日舉行的雙十二活動,就有超過200萬名賣家參與,淘寶還推出專屬個人的消費歷程「淘寶時光機」,呈現過去10年的個人化專屬購買歷程,為了快速地從10年間的龐大消費記錄中,分析出個人的消費歷程,Node.js技術專家袁鋒袁鋒指出,當天此應用流量創(chuàng)下歷史新高,遠遠超過其他分析數據類型的產品。
  所幸,早在前一年,阿里巴巴後端就改用Node.js開發(fā),才能撐住這次暴增的流量,也因為淘寶經常舉行一次性的特別活動,像是雙11和雙12等促銷活動,需要更高效能的架構,來因應流量暴增的問題。
  阿里巴巴在2011年開始導入網站開發(fā)框架Node.js,「測試完發(fā)現Node.js比PHP快至少5倍以上,就開始用了!」袁鋒表示,當時的技術負責人發(fā)覺Node.js技術,看中了簡單的特性,只有測試性地建了一個分析數據類型的產品,當時實測後發(fā)現後端采用Node.js的效能比PHP快,就開啟了阿里巴巴與Node.js的旅程。
  袁鋒在螞蟻金服負責所有用Node.js技術開發(fā)的專案,他同時也是中文Node.js技術社群CNode.org的核心成員,由於他所屬的部門都是從事開發(fā)分析數據類型的產品,「數據產品屬於高I/O流量!」他表示,原本用PHP撰寫而成的架構,因為I/O流量持續(xù)增加,讓原本的架構不堪負荷。
  阿里巴巴在2011年應用開發(fā)端導入網站開發(fā)框架Node.js,看準Node.js快速開發(fā)的特性,用Node.js開發(fā)應用展示層所需要的功能。
  Node.js最適合創(chuàng)造I/O密集型的應用
  由於分析數據類型的產品屬於I/O密集型應用,為了要解決流量暴增的問題,非同步(Asynchronous)I/O就變成應用開發(fā)端重要的課題之一,系統(tǒng)必須可以同時處理多個 I/O 要求,來分散流量,但是,以往用PHP開發(fā)應用,很難達到這樣的目標。
  他表示,從PHP改用Node.js的轉折,團隊當時嘗試建立一個分析數據類型的產品,效能提升許多,開發(fā)人員的接受度也很高,在正式發(fā)布第一個對外的公開產品前,阿里巴巴內部經過許多較小規(guī)模的試驗,最後,確定沒問題之後,才正式推出「淘寶指數」,之後又陸續(xù)推出數據魔方等數據型產品。
  采用Node.js開發(fā)可從全新的創(chuàng)新應用著手
  淘寶指數是全新的應用,袁鋒表示,一開始用Node.js來開發(fā)適合從全新的應用開始著手,「新手很容易就可以用Node.js寫出一個應用!」他一語點出Node.js的優(yōu)點,由於Node.js擁有許多套件,開發(fā)功能的過程,可以省去不少時間,讓開發(fā)人員快速地從0到1打造出全新的應用,因此,Node.js適合配合創(chuàng)新,快速開發(fā)新應用。
  一開始導入Node.js時,開發(fā)應用的IT團隊對Node.js都還不了解,過去只有用Python、Java和PHP建置應用服務的經驗,在團隊IT人員初步研究過後,都覺得Node.js簡單易上手。
  Node.js快速開發(fā)的優(yōu)勢,不只有利於前端的應用,對於內部開發(fā)人員的開發(fā)效率也有幫助,「Node.js對阿里巴巴而言,剛好是填補前端團隊人力不足的問題,」袁鋒解釋,以往,開發(fā)人員在開發(fā)應用的過程中,會用Java、Python等不同的語法,建立自己的開發(fā)工具,改用Node.js之後,開發(fā)人員在寫工具的效率上,大幅地提升,他認為,Node.js讓IT團隊有一個更好的合作模式,創(chuàng)造開發(fā)工具。
  不過,他也坦言,當初天真地認為導入Node.js會是個簡單的工作,開始摸索之後,才發(fā)現困難重重,首先面臨的問題就是,Node.js如何融入阿里巴巴的原有Java生態(tài)系,袁鋒表示,當初為了要寫Node.js,卻整天都在研究Java的程式碼,他采用hessian.js和java.io兩項序列化協(xié)議,來串接Node.js和Java,跨語言的開發(fā)他則建議使用序列化資料結構方法Protocol Buffers。
  技術瓶頸解決之後,還有另外一個問題,就是缺乏Node.js的工程師,「2011年時,Node.js還太新了!」他表示,當時就連資深的人事都沒有聽過Node.js,要招聘工程師更是難上加難,這也是袁鋒當初在CNode.org極力推動Node.js的原因,他認為要主動創(chuàng)造一個環(huán)境,讓更多人可以投入這個生態(tài)圈。
  阿里巴巴Node.js技術專家袁鋒表示,Node.js非常適合用於開發(fā)I/O密集型的應用場景,不適合復雜且大型的應用。
  Node.js的局限是復雜且大型的應用
  袁鋒表示,Node.js適合快速打造出全新的應用,相反地,Node.js的瓶頸點就是在產品發(fā)展的階段很適用,但并不是產品持續(xù)發(fā)展的優(yōu)先選項,依照他的觀察,創(chuàng)新業(yè)務里面,要從0到1用Node.js非常適合,但是要從1到100,就很難全用Node.js,他解釋,當應用慢慢壯大之後,必須切分成許多層,且業(yè)務邏輯會變得越來越復雜,而Node.js就不適合打造業(yè)務服務層。
  舉例來說,用Java就可以很容易處理分散式交易,但是Node.js就很難實現,因此,他建議,企業(yè)應該想清楚系統(tǒng)架構每一層工程師的分工和擅長的工具,找到適當的場景,用對工具才是最重要的。
  袁鋒舉例,阿里巴巴在嘗試用Node.js打造全新的應用後,也將目光轉向既有的應用數據魔方,當時該應用流量持續(xù)上升,他預計原本的架構將會無法招架,因此開始將原有的PHP架構轉成Node.js,但是,他就將系統(tǒng)架構分的很清楚,Node.js只負責應用展示層所需要的功能。
  阿里巴巴打造自家的Node.js效能監(jiān)測工具
  由於阿里巴巴有許多流量大的應用,在幾年前阿里巴巴預期將來會有許多用Node.js打造的應用,可能會遇到和Java應用一樣的問題,於是,從原本的數據單位拆出一個團隊負責開發(fā)效能監(jiān)測工具Alinode。
  他舉例,過去沒有效能監(jiān)測工具,發(fā)布新的程式碼時,CPU用量增加和記憶體的泄露問題,都無法準確追蹤是哪一行程式碼導致的問題,同一個應用發(fā)布兩個版本,CPU用量從15%增加到30%,開發(fā)人員只能找出可能有問題的程式碼來修改,再重新發(fā)布,若是CPU用量降下來,開發(fā)人員才可以確定是這行程式碼有問題。
  袁鋒表示Google的開源JavaScript引擎V8所提供的監(jiān)測工具也無法百分之百準確追蹤程式碼的問題,但是阿里巴巴開發(fā)的Alinode則是可以掌握8成以上的效能問題,可以自動提示某個函數使用的記憶體資源過多,也能直接顯示哪一個行數的程式碼需要修改。
  袁鋒過去在CNode.org社群積極推動Node.js,剛開始只是為了創(chuàng)造Node.js生態(tài)圈,以利招募Node.js工程師,不過經過許多年頭後,他還繼續(xù)堅持經營社群,「有了這些交流,讓我們可以提前預防別的公司遇到的問題,」他表示,這是他認為最大的意外收獲,因為大家會在社群中分享實際用Node.js遇到的問題,讓其他人可以在遇到問題之前事先預防,形成良性循環(huán)。
  袁鋒曾經以為Node.js是萬能的,慢慢地接觸到更多後端技術後,才發(fā)覺,應該要想清楚每個開發(fā)框架的優(yōu)勢,善用它的優(yōu)勢提升研發(fā)效率,他表示,現在他花更多時間在思考如何提升開發(fā)效率,若有更好的方案,未來可能也不排除換成別種語言。
  阿里巴巴為了要監(jiān)控Node.js系統(tǒng)的效能,自行開發(fā)一套效能監(jiān)控工具Alinode,可以追蹤CPU用量和記憶體泄漏問題。
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題