專訪阿里高級專家應答:一位技術人的思考

《沉澱》是雲棲社區展現專家風采的人物欄目。它呈現每一個專家獨一無二的人生經歷、認識和感悟的同時,也能幫助你沉澱技術,收穫對技術和人生的判斷。咱們的想法是:「若你想精進爲一個很厲害的人,不妨細細品味這些技術牛人背後的沉澱。」若是你想了解這些雲棲專家更多分享時,請點擊雲棲專家頻道,固然咱們也歡迎你往前走一步,成爲咱們的雲棲專家(https://yq.aliyun.com/expert),與技術大牛一塊兒「煮酒論英雄」。算法

  「這個沒啥好講的,找XX和XX技術Leader吧?」編程

  「爲何挑中我?」安全

  「時間點再考慮下吧,要不要等……」服務器

  ……微信

當雲棲社區發出雲棲專家風采展現邀請時,應答沒有直接答應。進一步溝通,你會發現推脫的背後,倒是一位實實在在技術大牛的低調和謙遜。架構

應答認爲,分佈式系統架構設計爲了知足20%高級用戶的需求,有可能要提供80%的接口(緣由見完整對話)框架

應答是阿里巴巴技術平臺事業部架構與專家諮詢的高級專家。架構與專家諮詢到底是什麼樣的一個崗位?應答作了剖析:本質上他們也是一線的開發工程師,只不過寫代碼之餘可能會花更多一點時間來思考——怎樣讓系統架構在知足當前需求的同時,同時具有必定的技術前瞻性,可以在未來的較長一段時間內保持技術領先性。機器學習

這位身處一線的「開發工程師「求學經歷頗爲完美。本科中科大,碩士在世界著名的常青藤大學布朗大學,而博士則在研究型學府理海大學完成。在保送到中科大的時候,這位學霸頗爲霸氣地選擇了電子工程專業,之因此說他霸氣,是由於他選擇電子工程專業的緣由讓人多少有點吃驚——居然是由於專業分數線最高,聽起來高精尖。編程語言

求學和畢業後,應答也在世界一流會議SIGMOD等以及一流期刊Transactions on Computer Systems等處發表多篇文章和論文,Google Scholar 上則有500多個citations。他對其中的一篇文章特別印象深入,那篇文章介紹了在一般的分佈式系統的資源調度器(好比YARN 或者 Mesos)之上,怎麼提供一個開發分佈式應用的通用框架,讓各類各樣的分佈式應用或者服務能儘可能避免與底層分佈式基礎設施打交道,同時經過這種隔離,使得其在不一樣的分佈式框架上都可以運行。探究印象深入的背後,是應答對研究可以真正轉化成生產力的成就感。分佈式

走上工做崗位後,他先是做爲微軟Azure機器學習平臺(AzureML)服務的核心開發人員。接着,參與了微軟開源大數據框架Apache REEF項目從最初的微軟內部項目到Apache incubator,再到成爲Apache top level project的過程。做爲PMC,在談到開發Apache REEF過程當中遇到的挑戰時,他說主要是在早期一些方向的選擇上,由於早期每一步的方向都決定了未來很長一段時間是在向正確的方向邁進,仍是在錯誤的道路上越走越遠。

後來,他加入阿里,參與搭建了超大規模數據和參數上的分佈式學習的高效平臺。進入計算平臺架構組後,應答又參與了阿里自研的核心計算平臺MaxCompute的更新換代。「新的計算平臺在更加易擴展的架構上,實現了性能的成倍提高,以及功能的豐富和計算數據生態的外擴。」一位阿里同事這麼積極評價這些工做。

阿里巴巴這種超大數據體量上纔會遇到的獨特挑戰,讓應答在技術上有了更清晰的認識,必定要夯實分佈式系統的基礎。「只有把基礎夯實了,才能支持上層各類計算場景在大致量上的實現,讓各類新的算法在‘阿里體量’上真正發揮潛力。」

對於如何夯實,他無私地分享了本身的寶貴經驗:底層系統的設計,必定要走在用戶前面,且越往底層走,這麼作的重要性就越高。這要求系統架構設計時要作到先發性和預見性,而作到這點,除了須要長期積累經驗,還要主動去了解上層用戶各類各樣的使用模式。應答強調:「系統的開發和架構不能只侷限在本身熟悉的領域,也不能只侷限在單一用戶場景上。」

在分佈式系統架構設計上,他指出穩定是分佈式系統的最基本要求。在知足穩定要求後,在分佈式系統靈活和易用的二者關係上,他很是認同二八原則。什麼樣的二八?三點,第一用20%的接口實現80%用戶的需求;第二80%的系統要爲20%的接口服務;第三,爲了能知足另外20%高級用戶的需求,咱們可能要提供80%的接口(筆者注:至於爲何,請見下面對話)。他表示,接口的「收」與「放」都是須要精心考量的。

對於分佈式系統架構的將來,應答有兩個思考:

第一個是怎樣在一個統一的計算平臺上,知足用戶多種多樣的計算需求:這包括兩個方面,一個是多種的計算模式,好比離線大規模運算,流計算,圖計算等;另一個是處理多樣的數據格式,好比關係式數據,文本數據,音視圖數據,甚至是用戶自定義特殊數據,好比基因,天氣數據等。

第二是多種硬件的使用以及統一:怎樣在一個集羣上實現多種硬件的混部,來知足一個系統上的多種計算需求,這會是一個頗有意義的問題。

總結過去的技術生涯,應答說:「近幾年在阿里其實總體的是一個逐步在系統堆棧上往下作的過程,從一開始的偏機器學習應用,逐漸轉移到分佈式系統基礎架構方面的工做。」他解釋,這個過程也是在堆棧上層開發中,能愈來愈切實的感覺到底層分佈式系統的穩定性和靈活度的重要性,從而往下探索的一個經歷。

在溝通的最後,筆者問起眼前的這位技術專家有什麼格言時,他說了一個以爲挺有道理的一句話——「people will choose tobelieve what he wants to believe.」

「爲何以爲它有道理?」

連續追問,他說出了本身的想法:「咱們不要動不動就想說服別入。從技術角度來看就是:作一個系統/產品,不要總是想着要說服別人用你的,不少時候每一個人是有一個預判的,也只會作出選擇符合他預判的決定。要讓別人相信你,首先要解決人家的問題,一個系統解決了用戶在其餘地方解決不了的問題,用戶纔會‘想要’相信你,在這種預判下,纔會更客觀的來審查整個系統方方面面的優點。」

至此,筆者也明白,爲何當發起雲棲專家風采展現時,應答是推卻的,由於他知道行動和拿到結果是最好的專家風采展現。

好一個低調和謙遜的技術大牛!

如下是更爲精彩的內容:

雲棲社區:請介紹下本身以及所從事的工做(架構與專家諮詢具體幹什麼)。

應答:虛一點來說,架構和專家諮詢組從負責上來講是計算平臺總體技術走向和大的架構設計。可是實際上,咱們本質上也都是一線的開發工程師,只是寫代碼之餘可能會花更多一點時間來思考:怎樣讓咱們系統架構在知足當前需求的同時,同時具有必定的技術前瞻性,可以在未來的較長一段時間內保持技術領先性。尤爲是在預期、在數據規模不斷增加和計算模式日益多樣化的趨勢下,怎樣作到上面幾點。

固然思考只停留在腦子裏和PPT裏是沒有用的,只要架構沒有實現都是空中樓閣。全部的想法最後須要轉化成包括咱們本身和團隊每一行代碼的實現,功能的設計,與團隊的Code Review交互以及開發計劃討論等等……

雲棲社區:你的求學經歷包括中科大、美國布朗大學(Brown University), 理海大學(Lehigh University),可否談下這三段求學生涯裏,分別有哪些讓你難忘或記憶深入的事。

應答:選擇科大是由於從初中起就對其嚴謹樸素學風的嚮往,當時是保送到中科大電子工程系。對於選擇電子工程這個專業,老實說,反而仍是比較懵懂的,基本上就是以爲分數線最高,並且聽起來比較高精尖。不過回頭來看這個選擇,那個時候對專業只知其一;不知其二,也並無產生什麼很差的後果,由於更重要的是,選擇學校的過程是理性的和有針對性的。我我的以爲學校選對了,具體的專業反而不是那麼重要了。在科大的求學過程當中,印象深入的事情已經很差羅列了。大部分時間都在學習,上自習,感受沒有太多波瀾。當時不少事情,咱們都以爲是平平淡淡。反卻是臨近畢業以及畢業之後,有了更多和來自其餘學校的朋友交流的機會,才能體會到一些學校的不一樣。好比最近在微信上刷屏的關於科大機智地爲貧困學生提供生活餐卡補助的事情,這個實際上是在我畢業後才大規模實行的,可是做爲科大畢業生,咱們看起來以爲學校會這樣作實際上是很是天然的。在科大你們都習慣了學生第一,學習第一,也相對單純一些,像補助學生這樣的事情,都以爲是理所固然的。另外還有,好比學校是淮河以南第一個爲學生提供冬季供暖的,而學生宿舍的供暖也早於教工宿舍,如今回想起來都有點身在福中不知福的味道。

到美國的第一站是布朗大學,其所在的Providence也是我到美國後居住的第一個城市。印象深入的事情不少,不少時候是體會另一個文化不一樣的地方。布朗是常青藤裏一個相對小的學校,但也由於小,因此係和系之間的邊界就沒有那麼嚴格清楚,不少本科生都是滿學校處處選課,而研究生也能有機會接觸到許多本專業之外的東西。印象比較深的是在各類研究生課程上作過的各類各樣的project。好比當時選的高級信號處理課,期末的project是生物信息學中的信號處理,歸納點說就是經過把怎麼基因數據中ATCG鹼基看待成一串時序信號,而後映射成一些時空域信號空間上的點,在這個基礎上作信號的頻譜分析。一個頗有趣的觀察就是在頻譜上的突出點,對應的信息若是轉換回時域,每每對應的就是基因裏帶有遺傳信息的基因段。頻譜轉換和分析其實都是本科在科大都學過的內容,可是把這些信號處理的知識,具體應用到基因數據分析上,仍是蠻有趣的。我以爲這段經歷對於之後本身從更加開闊的方向去思考問題也頗有幫助。

後來到了裏海完成了博士學業。博士期間的訓練和本科就有比較的的區別了。從研究方向上也有了更大的自由度。固然更大的自由也意味着更多的未知性,也要爲本身的選擇負責。讀博士期間,有拍腦殼想到一個想法最後變成很不錯的paper的經歷,也有仔細研究了半年的想法,結果最後真正搭建和模擬的時候,才發現結果不盡人意。但在探索的過程當中,無論是成功經歷,能讓人對處理各類工做學習生活的各類不肯定性有更豐富的經驗。

雲棲社區:你在世界一流會議SIGMOD等以及一流期刊Transactions on Computer Systems等上均有發表文章,Google學術搜索裏有500多個引用……在這麼多文章或論文中,你對哪一個最爲看重,請介紹下它,以及說明下看重的緣由。

應答:最看重的應該是在畢業後在工業界時,發在SIGMOD等處的文章。雖然這些文章並無我在學校發的一些文章引用來得多,但不一樣的是它並不僅是學術上的探討,而是對工做中研發系統的整理和總結。

這個文章介紹了在一般的分佈式系統的資源調度器(好比YARN 或者 Mesos)之上,怎麼提供一個開發分佈式應用的通用框架,讓各類各樣的分佈式應用或者服務能儘可能避免與底層分佈式基礎設施打交道,同時經過這種隔離,使得其在不一樣的分佈式框架上都可以運行。另外在此基礎上,分佈式應用的實現可選的編程語言也能夠與底層框架解耦。好比微軟的流計算服務ASA(Azure Streaming Analytics)就是一個搭建在咱們的框架之上使用.NET開發的計算服務,可是底層實際上是基於Java的YARN集羣。咱們的中間框架使得ASA能夠徹底不用考慮這些區別。

基於咱們的框架搭建的相似服務還有不少,我以爲這些都是真正轉化成生產力的工做,因此也以爲有些成就感。

雲棲社區:加入阿里以前,做爲Apache REEF的PMC,你在微軟大數據事業部工做,並經歷了從立項到成爲Apache top level project的過程,可否聊聊這段經歷裏都遇到哪些挑戰,都是怎麼解決的?

應答:挑戰主要都在早期,怎麼把一個適用於各類分佈式系統的中間框架搭建起來,接口上設計怎樣選擇纔是合理的,如何避免行差踏錯。由於早期每一步的方向都決定了未來很長一段時間,是在向正確的方向邁進,仍是在錯誤的道路上越走越遠。

除了仔細調研設計之外,咱們找了一樣在設計開發初期的Azure Streaming Analytics(ASA) 團隊,和他們一塊兒開發,直到最後上線。固然如今回頭看這個項目,仍是有很多不滿意的地方,今天若是從新再來作的話,我可能會作得更好。

雲棲社區:加入阿里後,你搭建了超大規模數據和參數上的分佈式學習的高效平臺,你在開發中主要負責哪塊?另外,這與你以前在微軟負責開發的Azure機器學習平臺服務相比有什麼不一樣?

應答:加入阿里的時候,其實參數服務器的開發初版已經有了模樣了,也在集團內部的一些場景中用了起來。可是具體實現和單個業務場景和單個算法都綁定得比較緊,因此擴展新算法上會遇到一些挑戰。我和團隊一塊兒基本上從新設計和實現了整套系統,讓其對接口、對多種算法更加友好,同時也支持更多維度上的性能的改進;另外抽象出了SDK讓平臺的開發也更加開放:能讓咱們的用戶也進來參與新算法的開發。

這個分佈式機器學習平臺和我在微軟作過的Azure機器學習平臺服務仍是很不同的。一個最顯著的區別是規模。事實上Azure機器學習平臺面對的是微軟外部的中小企業用戶,而這些用戶須要處理的數據和算法模型,在規模其實都是比較有限的,這和阿里幾個實際業務場景的體量徹底不在一個量級上。在阿里實現的基於參數服務器的分佈式機器學習平臺,面對的百億級別的特徵,千億級別的數據。這種量級的分佈式學習,不少普通的中小型公司如今尚未太多機會接觸到,因此針對中小公司以及針對阿里量級數據場景的分佈式機器學習平臺,要解決的問題多是徹底不同的。在AzureML的工做可能更多的集中在總體框架靈活性搭建,以及不少安全,生態開發等方面。而在阿里,處理「阿里體量」的數據是第一要務,在這個基礎上纔有下一步在靈活性等方面的擴展,從時間點上的優先級別的不一樣,對於一個系統開發的計劃和設計也會有不一樣的考慮。

雲棲社區:接着,你加入計算平臺架構組,參與了阿里自研的核心計算平臺MaxCompute的更新換代,在這個過程當中,你有沒有遇到「轉型」的壓力?又是如何解決的?

應答:其實沒有什麼「轉型」的壓力。不一樣的分佈式系統設計有不少共通的地方。固然會有一些以前沒有作過的東西,可是學習新的東西對我來講應該是比較常態了。

當時有這個變化,主要是在作分佈式機器學習平臺的過程當中,感受一些更廣泛的大數據分析功能,在當時的計算平臺上還有很多能夠再進一步改進的空間,而把底層系統夯實了,對上層的各類應用都會是一個有益的正反饋。

雲棲社區:聽說新的計算平臺MaxCompute在更加易擴展的架構上,實現了性能的成倍提高,以及功能的豐富和計算數據生態的外擴,就你經驗來看:一個穩定、靈活的分佈式系統架構設計該如何作?應該遵照哪些原則?

應答:我以爲穩定是分佈式系統的最基本要求,任何一個分佈式系統從設計的第一天開始就應該把穩定放在第一位。

其實這裏我更想聊一下一個分佈式系統靈活和易用二者的關係。這個其實也不是我本身的原創,但在分佈式系統的設計上,我很是認同「二八原則」。這有好幾個點,第一是應該可以用20%的接口實現80%用戶的需求,接口的收斂,每每能帶來簡單易用。這能方便大部分用戶上手。現實中,大部分用戶都會須要用到相對小的一部分基礎功能,這也是一個系統須要花大精力把作好。這就涉及到第二點,那就是80%的系統要爲20%的接口服務。這也就是說分佈式系統就像一個冰山,或者像一個金字塔同樣,底層大量的實現(包括對性能的優化,以及對各類失敗的處理)就是爲了把上層用戶看獲得的幾個主要功能,作到各類場景上的最優。第三點,是爲了能知足20%高級用戶的需求,咱們可能要提供80%的接口。這一點爭議可能比較大,但我想說的是這一點上比較適用的是底層的系統設計,也就是說若是你設計的是一個分佈式系統底層的接口,你的直接用戶多是另外一個」系統「的開發者,這時候提供靈活的接口和功能是很是重要的。反而是越到上層靠近終端普通用戶,接口可能越少會越好。接口的「收」與「放」都是須要精心考量的。

雲棲社區:從你的這幾年技術生涯來看,不管是微軟Azure機器學習平臺(AzureML)服務開發,仍是阿里的分佈式學習的高效平臺、MaxCompute的更新換代,你都是在作更加深刻的事情——在系統堆棧上逐步往下作,可否具體聊聊在過程當中遇到的獨特挑戰。

應答:一個重要的挑戰就是一個系統,不管是機器學習平臺,仍是底層分佈式系統,怎樣才能走在用戶的前面。這一點越往底層走重要性就越高。由於只有系統走在用戶的前面,在用戶須要的時候,才能直接用得上。尤爲是對於設計一個系統,不可能說用戶有什麼需求都是現改現作,用戶不少狀況下是等不起的。一個系統沒準備好,致使的後果要麼就是用戶走路,不使用這個系統;要麼就是用戶會在系統有限的功能上加上各類各樣的hack,對你如今不成熟的接口綁定上強依賴。而這就可能致使系統的發展被捆上了手腳,由於系統的發展是須要有延續性的,不能說我今天升級系統,用戶現有的功能就被break。要避免這種狀況,就要求底層系統的設計,要有必定的先發性和預見性,這個除了須要長期積累經驗,還須要主動去了解上層用戶各類各樣的使用模式,系統的開發和架構不能只侷限在本身熟悉的領域,也不能只侷限在單一用戶場景上。我以爲系統開發中遇到一些比較開心的事情就是咱們本身設計研發的一些新功能,剛剛上線尚未對外宣傳的時候,用戶就提出了這樣的需求。這個時候咱們就能夠說「功能已經有了,直接用就徹底知足你的需求」 。固然了,雖然這個時候會頗有知足感,可是也每每意味要開始準備補文檔了。

最後從另一個角度來看,一個好的系統,也有引導用戶正確使用的責任,讓用戶更高效的在系統平臺上實現本身的處理邏輯。

雲棲社區:你認爲將來分佈式系統架構還會有哪些變化或趨勢?

應答:我以爲分佈式系統架構在經歷了一開始從無到有,從有到百花齊放的過程,如今在大數據分析處理上,正在逐漸進入下一個階段:也就是從百花齊放再慢慢收斂。

以前一段時間有許多新的分佈式系統框架被開發出來,而每個新的系統,都每每會針對比較特殊場景。也必定程度上形成了用戶若是要支持多樣需求,可能要維護多個系統的問題。如今一個值得咱們每一個作分佈式系統的同窗考慮的問題,是咱們怎樣在一個統一的計算平臺上,知足用戶多種多樣的計算需求。這裏的計算需求包括兩方面:一方面是多種的計算模式(好比離線大規模運算,流計算,圖計算等),另外一方面是處理多樣的數據格式(好比關係式數據,文本數據,音視圖數據,甚至是用戶自定義特殊數據,好比基因,天氣數據等等)。這些方面的統一,除了能讓用戶減少維護多系統的代價,也能帶來多種數據在一個系統上真正的融合,讓數據產生更大的價值。

系統架構的另一個趨勢就是多種硬件的使用以及統一。很長一段時間內,分佈式集羣一般以CPU爲主,而如今隨着包括GPU, FPGA等針對特定計算需求差生的新硬件的發展,由新硬件組成的集羣也有很大的需求。如今的這個階段可能CPU集羣, GPU集羣以及FPGA集羣還處在一個分開部署的階段,也就是還在「百花齊放」的過程當中。可是接下來,怎樣在一個集羣上實現多種硬件的混部,來知足一個系統上的多種計算需求,也是一個頗有意義的問題。而這樣子的混部環境中,在系統層面將異構硬件的區別在分佈式系統層面,作好向上層應用的屏蔽,都是頗有意思的挑戰。在這方面咱們也已經在阿里開始一些嘗試。

雲棲社區:若是初學者想在大數據分佈式系統領域紮根,你能給一些由淺入深的學習路徑或建議嗎?

應答:分佈式系統的學習,我以爲在看看基本入門的書之餘,去看代碼具體實現是很重要的。固然若是能本身搭建一個環境來玩一玩,會有更深刻的體會。最理想的是能有實戰的環境,由於不少分佈式系統的問題,在大的集羣規模上纔會遇到,也纔會有更深入的體驗。

因此咱們歡迎你們來投簡歷加入阿里的計算平臺團隊,在這裏能看到在上萬臺機器的集羣規模,以及在這個大型計算平臺上解決的其餘地方看不到的問題。咱們杭州,北京,西雅圖都在招人 。

雲棲社區:最後請你聊聊,生活中都喜歡作什麼事情、讀什麼書以及什麼格言?爲何?

應答:我應該算是比較典型的技術男。業餘也就喜歡看書,打籃球(其實如今打得也少了)。

書的話比較雜,武俠、科幻、傳記、社會小說都會涉及。格言這種東西我實際上是不太信的,由於我以爲大部分格言都必須在必定場景上纔有適用性,有點假。若是必定要說的話,那就是我以爲這麼一句話挺有道理的:people will choose to believe what he wants to believe,不知道怎麼翻,你們意會一下就好。(文/我是主題曲哥哥)

文章連接:http://click.aliyun.com/m/26319/

相關文章
相關標籤/搜索