之前的文章,介紹了google在分布式構建軟體過程中,如何把構建過程分發到許多臺機器上並復用之前構建的結果來大幅度提高構建的速度。這種分發和復用會凸顯出效能瓶頸。尤其是乙個大工程的一次完整構建會產出幾個g的輸出檔案,所有的這些檔案都需要從雲端傳回到開發者的機器上。這加重了網路和開發者本地硬碟的負擔,延遲和有限的頻寬會拖慢構建的速度。
而且,開發者通常不需要訪問一次構建的所有的輸出。她可能只關心構建結果中最後的可執行檔案,而一點也不關心中間的物件檔案。另外乙個例子是當開發者使用分布式構建系統來在雲上構建並執行測試。這種情況下,她不需要訪問構建的結果,只需要簡單的知道測試是通過了還是失敗了就足夠了。所以每次都把構建結果從雲端拉回到開發者本地機器是沒必要而且也是非常浪費的。相反,僅僅把開發者需要使用的構建結果拉回本地即可。
為了解決這個效能瓶頸,我們的分布式構建系統把所有的構建輸出結果都寫入到乙個持久化,分布式的儲存系統裡。這個儲存系統處理持續的讀寫請求的速度,相比本地磁碟而言要快好幾倍。分布式構建系統與這個儲存系統之間的網路連線比跟本地磁碟相比,頻寬更大,延遲更小。構建結果通過內容指紋, 來提供簡單的機制去索引和檢索檔案的。(這個雲端的儲存系統也在分布式構建系統中扮演第二級快取的角色,當構建結果沒有命中第一級快取時,這個雲端的儲存系統可以提公升效能)。在雲上使用這個分布式儲存系統,我們可以讓構建的速度比構建系統直接在開發者本地磁碟上儲存構建結果要快至少2倍。
下面的這張圖總結了google的構建系統[譯者注:就是blaze系統]整體是如何工作的,包含了本系列四篇部落格中的內容。
Jenkins的分布式構建
1.架構 jenkins的master sl e分布式架構可以解決單點構建任務多 負載較高 效能不足的問題。2.原理 對於jenkins的分布式框架,可以簡單的理解為server client模式,在jenkins中是master sl e,也就是乙個主的server叫master,其他的子clie...
解讀Google分布式鎖服務
背景介紹 在2010年4月,google的網頁索引更新實現了實時更新,在今年的osdi大會上,google首次公布了有關這一技術的 在此之前,google的索引更新,採用的的批處理的方式 map reduce 也就是當增量資料達到一定規模之後,把增量資料和全量索引 庫join,得到最新的索引資料。採...
解讀Google分布式鎖服務
背景介紹 在2010年4月,google的網頁索引更新實現了實時更新,在今年的osdi大會上,google首次公布了有關這一技術的 在此之前,google的索引更新,採用的的批處理的方式 map reduce 也就是當增量資料達到一定規模之後,把增量資料和全量索引 庫join,得到最新的索引資料。採...