阿里淘系所有程序員一整年的內(nèi)部技術(shù)總結(jié),都在這里了
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
“淘寶雙十一網(wǎng)絡(luò)穩(wěn)定性,背后由哪些關(guān)鍵技術(shù)支撐?”
“淘系高難度壓測,具體實行方案是什么?”
上面是淘系程序員,在開發(fā)這些關(guān)鍵項目時留下的內(nèi)部技術(shù)總結(jié)。
單個技術(shù)崗?當(dāng)然不。
前端、后端、客戶端、音視頻技術(shù)……
我們想辦法,搞來了整個淘系這一年,所有程序員的技術(shù)分享。
對這些資料進(jìn)行整理后,我們得以窺見淘系過去一年的核心技術(shù)進(jìn)展。
一起來看看。(文末附傳送門)
過去一年,淘系的技術(shù)進(jìn)展
這些技術(shù)進(jìn)展,既有各個技術(shù)崗單獨的研究成果,又有整個大型項目的迭代升級 (如天貓雙11)。
其中技術(shù)崗,又主要包括前端、后端、算法、客戶端、測試、音視頻與圖像、端智能與MNN……
以關(guān)注度最高的2020天貓雙11項目為例。
在這一大型項目中,測試、前端、后端、客戶端等技術(shù)崗的研究人員,都總結(jié)了各自崗位最新的技術(shù)成果。
先來看測試崗。
2020年的雙11,訂單創(chuàng)建峰值達(dá)到58.3萬筆/秒,涉及近20條業(yè)務(wù)線,100多個場景,400+鏈路。部分業(yè)務(wù),甚至深度融入在導(dǎo)購、交易鏈路中。
為了讓系統(tǒng)不癱瘓,測試崗?fù)ǔP枰M(jìn)行全鏈路壓測。
往年,壓測只針對C端用戶場景進(jìn)行,因為商家端場景結(jié)構(gòu)龐雜、且涉及諸多三方系統(tǒng)。
但如果不進(jìn)行壓測,一旦出現(xiàn)故障,對用戶、商家都將造成極大的體驗傷害。
這是淘系首次針對B端(商家端)場景進(jìn)行壓測。

從總結(jié)來看,壓測場景,包括IM消息體系端到端、三方服務(wù)商、三方小程序的全鏈路壓測三種。
在壓測實施過程中,需要解決各種問題。為此,淘系基于NIO,開發(fā)了長連接瘦客戶端。
這個客戶端能夠打通全鏈路消息業(yè)務(wù)、進(jìn)行訂單推送全鏈路壓測,并基于歷史訂單數(shù)據(jù),生成壓測模型、自動收集壓測結(jié)果。

例如,由于IM系統(tǒng)與服務(wù)端會建立長連接,因此用戶A發(fā)消息給B時,B會被動收到服務(wù)器的推送,而非主動拉取數(shù)據(jù)。
而瘦客戶端在收到消息推送后,則會加上一個“ACK”的消息回復(fù),表示消息已收到。
這樣,就可以根據(jù)已讀比例,對消息進(jìn)行已讀設(shè)置。
最新的技術(shù)要點,測試技術(shù)人員在這次總結(jié)中,都進(jìn)行了詳細(xì)的分析和回顧。
……
而對于前端來說,今年的雙11,同樣是一場挑戰(zhàn)。
這次的雙11流量高峰期,由一個變成了兩個,期間包括預(yù)售、預(yù)熱等活動,大幅增加了前端的研發(fā)工作量。
面對暴增的工作壓力,前端的程序員這次將設(shè)計稿生成代碼(D2C)平臺Imgcook,進(jìn)行了全面升級,用于智能生成代碼。

這其中,包括對UI多態(tài)、直播視頻組件、循環(huán)智能識別增強(qiáng)等技術(shù)的升級。
相比于去年的78.94%,今年雙11會場,D2C平臺Imgcook承擔(dān)了90.4%的新模塊代碼智能生成,大量降低了前端的工作壓力。
目前,前端技術(shù)人員也已經(jīng)對這次技術(shù),進(jìn)行了詳細(xì)總結(jié)。
……
對于后端來說,雙11最大的挑戰(zhàn),來源于不確定流量的互動消息。
如何將不確定性的流量,轉(zhuǎn)化為確定性流量,并將互動消息,更有序地呈現(xiàn)在用戶面前?
這其中,分優(yōu)先級保障不同的消息QoS能力,是核心技術(shù)。

在這樣的基礎(chǔ)上,通過QoS分級機(jī)制承諾消息服務(wù)SLA,才能做到隔離/優(yōu)先級/差異化處理,保證整體的消息順滑體驗。
……
除了這些,還有客戶端的技術(shù)人員,分析總結(jié)了今年手淘雙11中,最新的技術(shù)實踐——
PopLayer彈層領(lǐng)域研發(fā)模式升級。

PopLayer,在今年提出了名為“低研發(fā)搭投模式”的方案,具有快速搭建+可視化+多端多場景通用的特點,實施效果也非常好:
這一方案,直接讓彈層業(yè)務(wù)的上線成本,從3天+,降低到2小時,且保證線上0故障。
而技術(shù)的覆蓋率,甚至達(dá)到雙11大促期間的75%。
……
除了技術(shù)進(jìn)展,這一年,也有不少程序員總結(jié)了自己在崗位上的所見所想。
頂尖人才水平、評價同行項目、研究新的小眾技術(shù)……
例如,阿里p6,憑什么拿到35萬年薪?阿里程序員,如何看待華為云?小眾直播技術(shù)WebRTC,錢途怎么樣?
“阿里p6到底是什么水平?”
在總結(jié)中,一位阿里大牛,對前端p6/p6+的JD (職位描述)進(jìn)行了親自解讀。
這里的每一條要求,都對應(yīng)具體標(biāo)準(zhǔn),水平分為“初、中、高”,以此判斷面試者的能力。

例如,對于“熟悉react生態(tài)常用工具”最初級的要求,主要是知道react-router、redux、redux-thunk、react-redux、immutable、antd或同級別社區(qū)組件庫,以及它們的版本差異、基本使用方法。
而如果分析過全家桶源碼、知道核心實現(xiàn)原理和底層依賴,能直接說出原生js和redux怎么結(jié)合,以及從數(shù)據(jù)驅(qū)動角度說清楚redux,就算是達(dá)到了中級要求。
至于更高級的要求,就是基于全家桶構(gòu)建過復(fù)雜應(yīng)用了。例如,說出微前端和這些類庫結(jié)合時的注意事項、掉過的坑,以及解決方案。
表面上,就是知道用法、讀懂源碼,再到項目實踐。但其實在面試官眼中,這幾個階段的要求,都非常具體。
同樣的,還有“熟練掌握J(rèn)avaScript”這條崗位要求。
它背后的初級目標(biāo),僅僅是“了解”某些原理和方法。如組合寄生繼承、event loop、ES6數(shù)組相關(guān)方法、基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)……

中級目標(biāo),則需要在“了解”的基礎(chǔ)上“融會貫通”。除了知道原理,還要能舉例說明、類比差異,如class繼承與組合寄生繼承的區(qū)別。

……
其余每一條職位描述,也都有詳細(xì)解讀,并給出了“初-中-高”的提升路線。
對于阿里p6來說,初級要求100%達(dá)成;中級要求,至少覆蓋60%;高級要求,則起碼覆蓋20%。當(dāng)然,對于p7來說,高級要求必須覆蓋80%以上。
類似這樣的技術(shù)崗解讀,還包括算法崗(推薦算法標(biāo)準(zhǔn))、后端(業(yè)務(wù)拆分)、測試(自動化)、圖像音視頻(WebRTC)……
除了這些內(nèi)部資料,也有人對比了不同的熱門項目。
例如,一位阿里程序員,分析了華為的技術(shù)。
這個問題是這樣的:

原本大家只想吃個瓜,沒想到,這位程序員真的對兩個項目進(jìn)行了分析總結(jié)。
華為云Cloud IDE,是基于eclipse-theia項目搭建的在線IDE服務(wù);而gitpod,是最早基于Theia搭建的在線IDE服務(wù)。
早期Theia內(nèi)核,繼承了Node.js、Java等主流語言的語言服務(wù)及調(diào)試器實現(xiàn)。
但在Theia架構(gòu)支持VS Code插件后,可以無縫繼承大部分VS Code語言的相關(guān)插件了。
……
除了這些項目對比,還有人專門研究了一些“小眾”技術(shù),如WebRTC。
在低延遲直播技術(shù)中,它以復(fù)雜度高、上手困難出名,因此研究的人也很少。
這樣的技術(shù),究竟值不值得學(xué)習(xí)?會不會被其他技術(shù)所取代?
有人專門對比了Quic和WebRTC這兩種方案,前者上手容易,復(fù)雜度低,看起來是比WebRTC更有潛力的技術(shù)。

然而,在對比過程中發(fā)現(xiàn),雖然Quic方案復(fù)雜度低,但如果想讓延遲更低,反而得引入更多的復(fù)雜度。
也就是說,短期采用Quic收益更大,但想要讓直播走得更長遠(yuǎn),這并不是一勞永逸的解決辦法。
……
更詳細(xì)的解讀,這本資料中還會呈現(xiàn)。
傳送門
1658頁,40萬字,耗費程序員們540小時寫成。
除了技術(shù)干貨,和淘系程序員經(jīng)驗分享,這本資料中還包含2020開源項目總結(jié)、學(xué)術(shù)論文。
最重要的是,免費。
【阿里淘系2020技術(shù)干貨:技術(shù)人的百寶黑皮書1500頁+】傳送門如下:
http://t.tb.cn/7hdjzMpWrTdcabI12ALi1E