專訪阿裡巴巴研究員趙海平:從Facebook到阿裡巴巴

物聯網的迅猛發展,讓人們不得不調整數據平臺的設計思路和處理方式。2017年Gartner指出,到2020年,210億隻IoT設備對數據中心存儲需求增長將不超過3%。 GPU數據庫帶來瞭三大方面的進步:加載速度、實時處理和寬表多條件查詢。它最大的革新點之一在於,不再需要借助索引來加速訪問。




物聯網的迅猛發展,讓人們不得不調整數據平臺的設計思路和處理方式。2017年Gartner指出,到2020年,210億隻IoT設備對數據中心存儲需求增長將不超過3%。 GPU數據庫帶來瞭三大方面的進步:加載速度、實時處理和寬表多條件查詢。它最大的革新點之一在於,不再需要借助索引來加速訪問。




Goldman Sachs在投資銀行業務領域廣為人知,它同樣也是一傢領先的技術公司。Reladomo是Goldman Sachs主要采用的Java ORM,現在開源發佈瞭。在本文中,Goldman Sachs的技術專傢Mohammad Rezaei將為我們介紹Reladomo的一些高級特性,包括分片、緩存、雙時態方法、性能以及測試。




《團隊管理策略(TES)》這本書描述瞭一種運營模型,團隊可以使用這個模型中的指導原則,通過聚焦於產出來解決問題。團隊成員基於他們的共識和大膽假設來指導行動,這可以幫助他們持續的學習和改進。




當你面對一臺Unisys大型機時,你或許會認為它是無法使用雲計算的。但是AWS等服務提供商所提供的服務已使雲計算快速步入成熟。現在雲計算已經成為運行大型機應用工作負荷的可選方案。




智能化運維、Serverless、DevOps......2017年有哪些最新運維技術趨勢?CNUTCon即將為你揭秘!


趙海平,2007年加入隻有不到50個軟件工程師的Facebook,致力於軟件性能和架構分析,在此期間創建瞭HipHop項目,重新編寫和實現PHP語言,使其速度提高5到6倍,為公司節約數十億美元。HipHop項目之後,致力於 用異步處理來優化分佈式系統 的設計理念中,並為此做瞭多項分佈式數據庫的優化研究,在PHP語言中加入瞭yield和generator的新功能,來幫助日趨復雜的Facebook 網頁設計。

2015年3月,他回到中國,加入阿裡巴巴技術保障部,任職研究員,將重點攻克阿裡巴巴在軟件性能以及Java使用過程中遇到的技術問題。

InfoQ已經邀請他在4月23日~25日舉行的QCon北京2015大會上做主題演講,分享《異步處理在分佈式系統中的優化作用》。是什麼吸引他加入瞭一傢中國的互聯網公司呢?InfoQ對他進行瞭專訪。


CNUTCon全球運維技術大會,9月10日-9月11日,上海 光大會展中心大酒店,精彩內容搶先看


InfoQ:首先歡迎您回到中國。可以介紹一下您加入阿裡巴巴的初衷嗎,阿裡巴巴最吸引您的地方在哪裡?


趙海平:去年機緣巧合,我和阿裡巴巴的同事有瞭交流的機會。當時我們聊瞭很多技術細節,發現阿裡巴巴的規模非常之大,很多技術上的難題是美國公司都沒有的。比如說雙十一這個問題,沒有哪傢美國公司單天有這麼大的交易量,這是很特殊的一個問題。這個技術問題對我特別有吸引力。


當規模大到一定程度,簡單的問題也會變得復雜。有的時候軟件就是這個樣子,在一臺或者幾臺機器上執行是一個情況,當機器多到一定程度時,對軟件的要求就特別高瞭。在多臺機器上,怎麼才能保持很快的速度,台中月子中心收費並且節省機器,又不出問題,這是一個很難的技術問題。

單天的資源需求是平時的好多倍,怎麼計劃機器,讓峰值最高的那天不出現問題,平時又要做到很好的利用,這是很不容易的。我特別希望自己能夠有這麼一個經歷,去阿裡巴巴解決這個問題,這是在其他公司找不到的技術問題,而且跟我很對口,我一直在做的都是怎麼提高大規模系統的性能、穩定性,所以這正是我的興趣所在。


趙海平:基本上是幾個方面,性能、穩定性、容量、架構,還有運維,恰恰就是我現在這個團隊 技術保障部 的工作。性能提升上去,容量就增加瞭,隨著我們監控系統的改進,系統的穩定性也會提高,運維也會更方便。如果發現架構上的問題,我們也會做些調整。


InfoQ:談到性能問題,定位是很關鍵的一點。像這種規模的分佈式系統,如何實現全系統的監控,準確定位問題就非常重要,您會在這方面發力嗎?


趙海平:Profiling特別重要。如果能有一個特別強大的Profiling系統,就知道整個系統在哪個地方,哪臺機器上,花瞭多少CPU、內存、磁盤IO或者網絡帶寬等資源,才能知道優化什麼地方效益最大。

所以我的第一步工作就是幫助完善阿裡巴巴的監控和Profiling系統,希望能夠很清楚地把軟件的整個性能展現給大傢,做到實時監控,同時讓研發人員看到自己的代碼在線上的運行情況,瞭解這些代碼花掉瞭多少資源,這樣有問題的話他們可以自己解決。


InfoQ:大傢對您的最初印象多是來自HipHop for PHP這個項目。像淘寶之前就從PHP切換到瞭Java,而Facebook選擇瞭自己改進PHP。可以談一下這個項目嗎,當時的出發點是什麼樣的?


趙海平:HipHop也是一步步慢慢建立起來的。最初是我遇到瞭一個PHP的函數,在C++裡也想用。當時想,重寫一下就可以。不過那個PHP函數不斷在變,我就想寫一個簡單的工具,把這個函數轉換成C++,這樣就可以跟上PHP代碼的變化。那時正好機器開始吃緊,大傢意識到PHP的速度問題,CPU消耗很大。大傢就開始討論如何提高PHP的性能。當時想法很多,有人想改變PHP本身,有人想幹脆用Python或Java重寫網站。

當時也重寫過,有三四個人在做這件事情,但這些人改的速度遠遠趕不上另外二三十人寫新PHP業務代碼的速度。所以我們就想到寫一個工具,來轉換這些新寫的代碼,既不幹擾既有的開發節奏,又能大幅優化性能,跟上變化。

當時我也讀瞭下Zend Engine的代碼,研究PHP為什麼會慢。發現PHP速度之所以慢,是因為有很多的函數調用是動態的,而像C和C++裡,很多函數是靜態調用,不需要在執行的過程中去查詢函數指針在什麼地方,所以速度才快。

所以我們做瞭很大的調整,一定要改變這種方式,爭取讓所有的函數調用都能盡快實現,在編譯的時候靜態處理,執行的過程中就不需要再查詢,指針已經在那兒瞭,這是最主要的加速思路。

那時候就萌芽瞭一個想法,如果能夠把PHP直接轉換成C++,也許這個性能問題就解決瞭。然後就花瞭很多時間去做原型。我們做瞭很多工作,把底層的PHP實現都改變瞭,有一個自己的Runtime Library,再就是一個PHP的擴展庫,這個實際上是很大的一塊代碼。在這個上面,我們又寫瞭一個把PHP轉換成C++的一個編譯器。先將PHP編譯成C++,然後靠底下的這個庫實現功能。這是最早期的工作。

不過這在當時隻是一個副業,因為不知道這個東西到底有沒有意義,是不是能提高性能。大概能拿出30%~40%的時間做這個。做完之後發現效果很好,就加入瞭其他同事一起做。後來速度不斷提高,第一年提高瞭2倍,第二年又提高瞭2倍,後來提高到5~6倍的樣子。

現在回頭看,如果當時雇很多人把網站改台中產後月子成Java的,也是可以做到的,但Facebook的發展可能要停半年到一年時間,甚至更久,就有可能對Facebook的發展帶來不可預期的影響。這件事情主要還是業務推動的。


InfoQ:後來HipHop發展成HHVM,從原來的靜態編譯變成瞭動態的JIT機制,您也參與瞭這方面的工作嗎?


趙海平:引入HipHop之後,我們也有自己本身的一些問題,比如產品環境和開發環境就是不一樣的,這樣多多少少會存在一些問題,也就容易出現bug。再就是Facebook的代碼量非常龐大,編譯時間非常長,另外生成的二進制文件也非常大(超過1G),發佈也很困難。

這時就出現瞭HHVM。HHVM不再是把PHP轉換成C++,而是采用瞭一種新方法,把PHP轉換成一個中間碼,這個中間碼在執行過程中再轉換成機器碼,不過調用的還是我們原來為HipHop寫的底層庫,它取代的主要是把PHP編譯為C++的過程。

我並沒有參與HHVM的編寫,當時我已經離開這個小組瞭,另外一件事情吸引瞭我,這就是異步處理在分佈式系統中的優化作用。

之所以離開台中產後之家推薦這個小組,原因大概有幾個方面:一個是,個人認為HHVM不再能把性能提高更多瞭,後來也確實如此,兩三年之後HHVM出來,速度並沒有更大的提高,最高隻比原來靜態編譯機制快10%~15%,而且是因為靜態編譯這一塊不再開發瞭。再就是新的課題特別有意思,具體我會在QCon北京上分享。

這就是為什麼去GitHub上看,HHVM裡面會有我的代碼,主要是底層的代碼還是基於HipHop的。HHVM的頭兩個字母就是來自HipHop,引擎還是原來的,不過上面做瞭很多工作,把PHP轉換成中間代碼,這個有點像Java的JVM。這樣的好處就是研發過程和產品過程其實是一樣的,而且不會有原來說的那種超大二進制文件的問題。中間代碼很小,PHP可以直接發佈到線上系統上。


InfoQ:國外一些著名的互聯網公司,在性能調整和優化的過程中,慢慢都發展出瞭自己的編程語言,像Facebook設計瞭Hack語言,Google有Go和Dart等語言,Apple有Swift等。這方面您有什麼感想嗎,Facebook的Hack語言您是不是參與設計瞭?


PHP是弱類型的,這是性能提高的一個瓶頸,而強類型的話就可以做很多優化。最初我們是想增強PHP的類型系統。強化數據類型,這是引入Hack的一個主要因素。


趙海平:這也是我臨來之前剛剛聽到的。PHP核心開發組的力量是很強的。我也跟他們的人員交流過,他們對整個PHP的優化有自己的思路和想法,也做瞭很多工作。這是件好事。其實重要的並不是說哪個團隊或小組把PHP優化到什麼樣的地步,有幾個小組都在做這個事情,彼此競爭,會促進整個PHP生態系統的發展。這種競爭也恰恰說明瞭PHP的重要,所以會有很多人關註它的性能優化。


趙海平:編程語言這個問題,我說兩點。第一,不能把語言當成一個特別神聖、至高無上的東西。語言也是整個軟件系統的一部分,隻是它分割的很好,獨立出來瞭,可以執行更多的功能,我們可以用它實現我們的功能,可台中坐月子中心推薦是在整體架構上看,語言也隻不過是軟件系統的一部分,而這一部分我們完全可以做一些調整,使其更適合我們的系統。而設計語言時一般考慮的是比較通用的目標,我們拿來用,隻是因為它的絕大部分特性都是我們想用的。比如我們用C和C++寫程序的時候,每次都要思考內存的模式是什麼,是不是用share pointer,是不是用自己寫的Object,內存的allocation/deallocation怎麼做,一個語言幫我們把這些事情都做好瞭,這就是它的好處。它提供瞭一個很大的庫,提供瞭一個軟件執行的環境和范圍,而這正是我們選擇語言的初衷。

第二,作為一個公司來講,不能說為台中市月子中心瞭研發一個語言而去研發一個語言。這是沒有意義的。一定要根據自己想要做的事情,在現有的軟件架構當中,我們發現當前所用的語言提供的環境和范圍不太適合,或者說這個語言的很多假設和假想,和我們所期待的東西並不一樣,隻有在這個時候,我們怎麼也找不到一個合適語言的時候,我們才會創造一個新的語言,讓這個語言更適合公司的事情。如果可以通用化,提煉出來,那就是語言,否則設計成軟件庫就可以瞭。

這是水到渠成的,不要強求。像Google開發Go語言,我認為它有自己的考量,可能在開發很多分佈式系統的時候,現在的語言寫法上不太直觀,或者速度不夠快,所以才創造瞭這麼一個東西。Go應該能解決公司內部的很多問題,否則是很難存活的。


趙海平:在美國的時候,我跟Facebook的中國員工聊的很多。我給他們最多的建議就幾條。

第一,一定要提高交流能力。咱們中國人,尤其是中國搞計算機的人,很多人有個不該有的特點,就是喜歡把自己鎖在黑屋子裡埋頭幹活,跟機器交流特別擅長,跟人的交流一竅不通。這樣不行,我相信在中國也是這樣的,你不但要把自己的工作,技術活要做得特別好,而且要擅長表達自己的想法,擅長在工作當中講述做的是什麼,怎麼樣能夠說服別人,怎麼樣能夠跟別人在不傷和氣的情況下,把問題解決好,這是很強的一個能力,而這個能力不是在學校裡能學會的,是我們走向社會之後慢慢學到的東西,這個我恰恰認為中國的員工,尤其是在美國那樣的環境,因為不是母語,可能處理得就不是特別好,有時說出來的話比較生硬,給對方的感覺不是特別好。

第二,中國人比較謙虛、內斂,講究內涵,自己心裡有的東西不表達出來。但是在工作中,可以適度強勢一點,勇敢表達自己的想法。當然這個建議是基於美國多元文化的背景,在國內大傢的文化背景一致,也許可以探討最合適的溝通方式。

第三,掌握好英語,開拓眼界。我覺得在計算機這個技術裡邊能夠非常瞭解英語,把英語的這個隔閡給去掉還是非常重要的。

我回來的時間還不長,等和大傢接觸多瞭,可能會有新的想法,目前就這幾點吧。


您需要 註冊一個InfoQ賬號 或者

登錄 才能進行評論。在您完成註冊後還需要進行一些設置。

獲得來自InfoQ的更多體驗。






我們發現您在使用ad blocker。

我們理解您使用ad blocker的初衷,但為瞭保證InfoQ能夠繼續以免費方式為您服務,我們需要您的支持。InfoQ絕不會在未經您許可的情況下將您的數據提供給第三方。我們僅將其用於向讀者發送相關廣告內容。請您將InfoQ添加至白名單,感謝您的理解與支持。

台灣電動床工廠 電動床

台灣電動床工廠 電動床

AUGI SPORTS|重機車靴|重機車靴推薦|重機專用車靴|重機防摔鞋|重機防摔鞋推薦|重機防摔鞋

AUGI SPORTS|augisports|racing boots|urban boots|motorcycle boots

arrow
arrow

    tyar2n78a5 發表在 痞客邦 留言(0) 人氣()