• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 新聞 > 文章精選 >
     首頁(yè) > 新聞 > 文章精選 >

    阿里巴巴Node.js技術(shù)專(zhuān)家袁鋒揭露后端效能關(guān)鍵

    --億級交易平臺效能關(guān)鍵大公開(kāi)

    2017-09-04 14:09:08   作者:   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


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

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 呼玛县| 合山市| 苍山县| 怀安县| 大田县| 浮梁县| 安丘市| 苏尼特左旗| 错那县| 汕尾市| 玉环县| 麟游县| 昌图县| 万州区| 阳高县| 株洲县| 姚安县| 黎城县| 游戏| 镇江市| 航空| 贡觉县| 翁源县| 徐闻县| 炎陵县| 余干县| 崇明县| 郎溪县| 长岭县| 开原市| 水城县| 乐昌市| 宁晋县| 绥江县| 汉川市| 安泽县| 仲巴县| 望江县| 平凉市| 义马市| 家居| http://444 http://444 http://444 http://444 http://444 http://444