這個問題從我昨天從我的問題中學到的標題爲using git to distribute nightly builds繼續。使用bittorrent協議每晚分發和CI編譯
在上述問題的答案中很明顯,git不適合我的需要,並被鼓勵使用BitTorrent重新檢查。
短版
需要夜間分發構建每天早上人70+,想用混帳BitTorrent的進行負載平衡的轉移。
龍版
NB。如果您已閱讀我的previous question,則可以跳過以下段落。
每天早上我們需要將我們每晚的作品分發給70多人(藝術家,測試人員,程序員,製作人員等)的工作室。到目前爲止,我們已經將構建版本複製到服務器,並編寫了一個同步程序來獲取它(使用下面的Robocopy);即使設置了鏡像,傳輸速度也會慢得令人無法接受,因爲在高峯時間同步需要長達一小時或更長時間(非高峯時間大約爲15分鐘),這指出硬件I/O瓶頸以及可能的網絡帶寬。
我知道什麼到目前爲止
我迄今發現:
我發現有關BitTorrent protocol這是一個有趣的閱讀維基百科的優秀條目(我先前只知道種子如何工作的基礎知識)。在客戶端 - 服務器握手之後發生的BITFIELD交換中也發現這個StackOverflow answer。
我還發現MonoTorrent C# Library(GitHub Source),我可以用它來編寫我們自己的跟蹤器和客戶端。我們不能使用現成的追蹤器或客戶端(例如uTorrent)。
問題
在我最初的設計,我有我們的編譯系統創建的.torrent文件和加入它來跟蹤。我會超級種子洪流使用我們現有的構建鏡像。
使用這種設計,我需要爲每個新版本創建一個新的.torrent文件嗎?換句話說,是否有可能創建一個「滾動」。torrent如果構建的內容只改變了20%,那麼需要下載的所有內容到獲取最新的?
......其實。在寫上面的問題,我認爲我會需要創建新的文件然而我將能夠下載到用戶計算機上的相同位置和散列會自動確定什麼,我已經有了。它是否正確?
響應於評論
對於完全新鮮同步整個構建(包括:遊戲,源代碼,本地化數據,和光盤圖像爲PS3和X360)〜37000頁的文件和在未來只需 50GB以下。隨着生產的繼續,這將會增加。此同步需要29分鐘才能完成,此時只有2個其他同步正在發生,如果您認爲早上9點我們會有50多個人想要獲得最新時間,那麼這個同步會出現低峯。
我們已經調查了與IT部門的磁盤I/O和網絡帶寬;結論是網絡存儲正在飽和。我們也將統計數據記錄到同步數據庫,這些記錄甚至顯示少數用戶正在獲得不可接受的傳輸速率。
關於未使用過的,現成的客戶,它具有像的uTorrent安裝在考慮到其他項目可以容易地使用程序下載的用戶機應用程序中的法律問題。我們也希望有一個自定義的工作流程來確定你想要獲得哪個版本(例如,只有PS3或X360取決於你的桌面上有什麼DEVKIT)並且有可用的新版本的通知等。使用MonoTorrent創建客戶端不是部分我很關心。
你分發的文件的大小是多少?你有沒有試過一個很好的壓縮?您也可以使用二進制比較工具對付以前的版本,該補丁對於幾乎每個人都是足夠的(其他人將下載完整的軟件包)。 – Guillaume
你確定改變協議/工具會解決問題嗎?你有沒有對你的網絡上要發佈的內容進行真實的數學分析,比如你的硬件,網絡帶寬等等。對於這個問題,你是否檢查過文件系統系統緩存(cf:http://blogs.technet。 COM/b/askperf /存檔/ 2007/05/08 /慢大文件拷貝issues.aspx)? –
我真的不明白爲什麼你不能使用現成的客戶端,你是否也在運行室內網頁瀏覽器和文字處理器? – grapefrukt