天天看點

谷歌啟動容錯Git管理系統項目:Git Ketch

盡管git ketch項目開發才剛剛開始,谷歌公司已經對外宣布了他們的第一個git項目——git ketch,一個多主機git管理系統,能夠通過通路多個git伺服器來複制資訊,以確定複制資訊的複原性和可擴充性。所做的這些改變都是基于原有用java搭建的名為jgit的git伺服器基礎之上的,雖然這裡面的其它git伺服器可能是多主機群集的一部分。

谷歌啟動容錯Git管理系統項目:Git Ketch

最初設計git的目的是将git打造成一個分布式源代碼管理庫系統,但是大多數組織都采用了一個集中式的方式:采用一個帶有“黃金副本”代碼的主庫,所有開發者會在這個主庫上做修改,然後以最終版本作為更新基礎;盡管所有改動能從開發者的私庫裡直接調取,但很少有這麼做的。

隻不過這種集中式方法也會導緻單點故障。不過别擔心,jgit提供了部分解決方案,那就是通過它的分布式檔案系統(dfs)的存儲選項。此選項僅能解決部分問題,因為jgit隻定義了一組抽象類,而這組抽象類又定義了dfs存儲協定,但支援資料複制和建立抽象類實作的整體架構則是由使用者自己設計的。這就意味着組織已投入相當大的資源——為實作jgit dfs,項目組暫時還不能将jgit dfs大範圍推廣使用,谷歌是少有的幾個掌握dfs實作的組織之一。

ketch所遵循的政策有些與衆不同,不僅僅可以定義一個能夠複制dfs資料的git伺服器,ketch還可以假定現存的多個普通git伺服器可以互相之間資料和狀态同步,是以被稱為“多主機”。在任何一個制定的節點上,這些伺服器都可以當作“主機”來使用,其餘的伺服器當作“從機”來利用。任何時候向任何一台伺服器發送請求,這個“請求”都會被轉發給“主機”,該“主機”将會向所有其他伺服器發送推送請求,一旦絕大多數“從機”伺服器已經确認推送請求成功,“主機”會向初始呼叫對象确認操作已成功。這一機制是基于raft算法,此算法能夠確定至少大多數伺服器能夠接收已經做了變更的請求;任何伺服器上的資料丢失,都可以通過其它伺服器同步過來。目前,隻有jgit伺服器可以充當“主機”,雖然在多主機叢集裡任何git伺服器實作的原子推送都可以充當一個參與伺服器。

這些已經提出來的改變均可以在jgit内部gerrit裡看到,關于未來在工具上的改進細節及進展都可以從jgit的電子郵件分發清單裡獲得。

本文轉自d1net(轉載)