來自github的基礎設施工程師micheal haggerty發表了一篇博文,解釋他們是如何使用spokes進行跨資料中心複製的。包括如何減少網路往返次數、引入三階段提交、優化參考更新的效能以及其他各種調優。
\\ haggerty解釋說,github通過跨資料中心複製**倉庫來最大化彈性和降低延遲。一旦資料中心發生故障,需要由另乙個區域的副本接替工作,為了得到最好的效能,需要為使用者提供距離最近的副本。
\\ spokes用於複製使用者的**倉庫,確保**倉庫之間是同步的。它就像**一樣,在應用層面透明地執行複製任務。haggerty說,以前只有距離很近的**倉庫之間才能進行複製作業,後來通過降低延遲和優化參考更新效能等方式解決了這個問題。
\\
大部分使用者不會經常提交**,但github託管著將近7000萬個**倉庫,有些使用者的工作流你根本無法**到。我們努力讓github能夠應付所以場景,也非常關注一些極端情況。\\
haggerty也解釋了github內部是如何處理參考更新的。github基於內部的測試來決定是否合併或rebase乙個pr。如果某個分支有多個pr,每個pr都需要通過測試。
\\ 減少網路往返次數可以有效降低延遲。github使用三階段提交協議來更新副本,同時使用分布式鎖來保證更新次序。不過這樣需要四個網路往返,成本有點高。他們也在努力確保在等待網路呼叫結束之前先完成其他的任務。
\\ spokes使用自定義的校驗和來比較副本,如果校驗和相同,說明它們包含相同的內容。校驗和是通過增量的方式算出來的,並不是每次都從頭開始算。
\\ 內務(book keep)操作被合併到少量的事務當中,因為有些單次提交操作會造成數百次內務更新,需要耗費三分之一秒的時間。
\\檢視英文原文:how github uses spokes for cross data-center replication
GitHub使用簡介 github如何使用
關於github的常見使用方法,請參考官網上面的說明。本篇文件只是針對於常用的,而且容易犯錯的用法進行說明。僅僅是個人觀點。如何使用github?1 常用的是首先在github上建立乙個版本庫,然後接下來的工作是在本機建立乙個版本庫,注意不一定要和原來那個版本的檔名相同。比如原來建立的版本為hell...
github 初步學習使用github
1 1 github簡明教程 1 2 對本地倉庫進行更新 1 3 超級全的github指令 2 常用命令 git add filename 新增檔案到本地index快取區 git add 新增所有檔案到index區 git commit m 將上述檔案新增到head區 git push origin...
github使用指南 簡明 GitHub 使用指南
jackylhh的筆記用文字記錄這一生的點點滴滴 01 簡明 github 使用指南 提到 github,相信很多人第一時間會想到程式設計師。確實,github 是乙個非常優秀的 託管平台,但它的用途遠比託管 要多得多。github 有非常詳細的官方文件,一步一步教你怎麼操作,這裡就不再贅述了,詳見...