Google程式碼程式庫已超過 20 億行代碼,他們是如何管理的

來源:互聯網
上載者:User

標籤:android   gridview   android 特效   listview   menu   

Google程式碼程式庫已超過 20 億行代碼,他們是如何管理的?

IT藍豹發表於 2015/10/22 

Google有多龐大?要回答這個問題,我們可以看收入,看股價,看客戶數量,看影響力。但是這都還不夠充分。說到規模,那麼Google絕對是一個巨大的電腦軟體帝國。為了印證著一點,我們還可以看看Google的代碼規模。

周一,Google員工 Rachel Potvin 在一個矽谷舉辦的工程會議上提到了代碼量這個問題(看視頻,請科學上網)。根據她的估計,你平時用到的Google互連網服務的軟體(包括搜尋服務、郵箱、地圖)的總代碼量,大約有20億行之多。相比之下,微軟公司的Windows作業系統,作為世界上最複雜的個人電腦作業系統,從1980年代至今不斷研發和演化,其代碼量規模也不過是5千萬行而已。

650) this.width=650;" id="pic" src="http://www.dexcoder.com/images/201539/SfKIc2plmJivyXgp.jpg" style="border:none;vertical-align:middle;" />

650) this.width=650;" src="http://www.dexcoder.com/images/201539/bb4KonnusaDaKjde.jpg" style="border:none;vertical-align:middle;" />

650) this.width=650;" src="http://www.dexcoder.com/images/201539/tdq7cbkBkMfTCM4j.jpg" style="border:none;vertical-align:middle;" />

650) this.width=650;" src="http://www.dexcoder.com/images/201539/qeQl6jn7EeWuGCf4.jpg" style="border:none;vertical-align:middle;" />

650) this.width=650;" src="http://www.dexcoder.com/images/201539/O6fssafOoUKGo65j.jpg" style="border:none;vertical-align:middle;" />

650) this.width=650;" src="http://www.dexcoder.com/images/201539/mlqY0oiXcXoubp4g.jpg" style="border:none;vertical-align:middle;" />(來自灣區日報)

所以說,把Google的代碼全部重新構建一次,其規模相當於把Windows系統構建40次之多。其實和Windows系統作比較是合乎情理的(譯註:作者的意思是:可能會有人質疑,Windows只是一個作業系統軟體,但是Google搜尋,Gmail,Google地圖是好幾個軟體,用一個軟體的代碼量與好幾個軟體的代碼總量做比較,貌似不合乎情理,作者在後面會解釋這個問題)。

和Windows的基礎代碼很像,Google的20億行代碼是用來驅動整個Google服務的,他們是一個整體!這20億行代碼支撐著Google搜尋、Google地圖、Google文檔、Google plus、Google日曆、Gmail、Youtube,以及其他各種Google互連網服務。並且,這20億行代碼是存放在一個單一的代碼倉庫裡的,供Google的25000個工程師共同使用。Google把自己的代碼看成一個“巨大的作業系統”,“儘管我沒法證明,”,Potvin表示,“但是我猜這應該是世界上最大的單一代碼倉庫了。”

Google的情況其實是個特例。但這個例子向我們展示了,在互連網時代我們的軟體有多麼的複雜,以及我們如何通過改革工具來適應這種複雜度。Google的超大代碼倉庫只對內部員工開放。不過,我們也有類似的工具——Github,這是一個開原始碼倉庫平台,它向全世界所有的工程師開放,任何人都能最大程度地共用其中的海量代碼。時代變了,現在的工程師能利用超大規模的程式碼程式庫進行協同工作。這也是現代互連網服務能夠維持快速進化的不二之法。

“讓25000個開發人員共用程式碼程式庫,就像Google這種大公司做的這樣,意味著開發人員豐富各異,技能多種多樣。”,GitHub 的系統總監 Sam Lambert 如是說,“不過,對於小公司來講,通過Github和開放原始碼,你也可以具有(與Google)同樣的優勢。因為有句古話說得好:‘水漲船高’”。

“關於編譯20億行代碼,其挑戰的一面在於:一次性構建和運行20億行代碼,這可不是鬧著玩的。”“這肯定是一項技術挑戰——一次偉大的壯舉。”“20億這個數字無疑是令人震驚的。”

Github的天才之處在於,它能讓程式員分享和協作的代價降低。但是Github(不像Google)並不把所有東西都儲存成單一軟體項目。它的方式是儲存上百萬個小項目。Google先行一步,把無數的小項目化零為整。考慮到這涉及那麼多的工程師,那麼多的項目,化零為整聽上去有點瘋狂。但是根據Potvin的說法:Google做到了。

 聽 Piper 的

簡單來說,Google自己做了一個“版本控制系統”,用來對其所有的代碼進行判審。這個系統名字叫做Piper,它運行在整個Google的已經搭建好的龐大的線上基礎設施上,並管理著所有線上服務。根據Potvin的說法,這個系統分布在10個不同的Google資料中心上。

這件事情的意義絕不僅僅是說Google的工程師能夠訪問20億行代碼這麼簡單,這件事情的意義在於:每一個Google的工程師都有充分的自由對倉庫中的無數項目進行使用和組合。“你建立一個項目”,Potvin向《連線》雜誌解釋到,“然後就有無比富裕的程式碼程式庫資源供你使用。基本上你需要的東西都有現成的。”更美妙的是,工程師對代碼進行了修改以後,馬上就能實施部署,然後反映到所有Google的服務上。只需要對一處進行更新,你就對所有的東西都完成了更新。

當然這個系統還是有限制的。Potvin說,有一些高度敏感的代碼——比如像Google的網頁排名搜尋演算法(PageRank Search Algorithm)這種——是放在單獨的代碼倉庫裡的,只有部分被授權的員工才能看到。因為這些演算法並不在互連網上運行,因此他們和其他代碼是不同的,Google還把其他兩個裝置相關的作業系統原始碼,Android和Chrome,進行了單獨的版本控制管理。不過對於絕大多數代碼,Google把他們存成了一個整體,工程師可以使用它進行構建模組,提出創新以及實現解決方案。

 機器人因素

Lamber指出,構建和運行一個這樣的系統不僅僅需要知道基本知識,還要意識到這個系統龐大的計算能力。Piper涵蓋85T資料(8500G),Google的25000名工程師每天會完成45000次提交操作。這種強度可不是開玩笑。Linux開源作業系統一共有40000個檔案,1500萬行代碼,而Google工程師每周就會修改25000個檔案,1500萬行代碼。

同時,Piper還需要兼顧降低程式人員的負擔的任務,讓程式員可以埋頭修改自己的程式,而又不至於踩了別人的腳。程式員要能夠把不適用的或有問題的代碼移除程式碼程式庫。這個任務非常困難,所以不能完全靠人工來處理這項工作。現在Google已經把把之前所用的Perforce版本控制系統切換到了Piper上,Piper使用了自動機器人來處理大多數的使用者提交。

當然這不是讓機器人來寫代碼,而是讓機器人自動產生當大量的資料和設定檔,來協助使用者運行軟體。“為了讓你的代碼維持健壯,你需要做很多具體的工作”,Potvin說,“然後我們的辦法是讓機器人協助你去分擔這些工作,而不是只讓人來做。”

 人人都能用的 Piper

那麼其他廠商能不能從Piper這種系統中收益呢?當然可以,並且他們正在這樣做。Facebook應用的總代碼量也已經達到了2億行之多,而且Facebook也是將整個代碼看成一個整體工程的。其他的企業也在這麼做,只是規模上稍微小了一些。對於那些與Google或者Facebook規模差不多的公司來講,都可以採用這樣的形式。不過現在Google和Facebook正在探索新的方法,從而讓每個人都能從中獲益。

兩大IT巨頭目前都在研究,如何讓超大規模的開源版本控制系統可供所有人使用。這項研究是基於已經存在的Mercurial系統開展的。“我們正在嘗試,是否能夠把Mercurial系統擴充到Google代碼倉庫的規模。”,Potvin指出。目前Google正在和編程大師Bryan O’Sullivan以及其他Facebook的程式員們通力合作,爭取在這方面取得突破。

這看上去也許有點兒極端。畢竟目前大多數公司對代碼的操作都達不到Google或者Facebook的那個層級。但是在不久的將來,他們就會變成那樣。

文章來源:《IT藍豹》

Google程式碼程式庫已超過 20 億行代碼,他們是如何管理的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.