我想通過1 Gbps線路將駐留在單個服務器上的100 GB文件傳輸到網絡中的100個其他服務器。什麼是最好的方式來做到這一點?我的解決方案是將文件複製到k個服務器(例如9),然後將其餘(100-9)服務器分配給9個服務器中的每一個。 這是一個更好的解決方案,然後將文件從1臺服務器複製到100臺。我的問題是如何確定k?或者什麼是計算來確定k的最有效值。請建議是否有更好的解決方案。抱歉忘了提及..不能使用溺愛。並非所有公司都允許使用洪流。這是一個面試問題。感謝您的迴應。由於將文件從一個副本複製到100個服務器
回答
如果您使用BitTorrent的文件在你的網絡分發,然後洪流軟件會照顧負載平衡爲你即你不需要預先計算「K」。我建議爲您的客戶使用utorrent,但任何客戶都可以。 Here is a tutorial for setting up the tracker etc
使用的BitTorrent的一個優點是,受援國服務器可以開始分發文件的大塊他們擁有整個文件之前。
對不起忘了提..不能使用洪流。並非所有公司都允許使用洪流。這是一個面試問題。感謝您的迴應。謝謝 –
要有到要複製n
服務器上的文件。如果可以並行完成複製,則您的方法是正確的,即在第一輪複製之後,將會有k
服務器提供該文件的副本。如果從這些k
服務器複製到其餘n-k
服務器可以並行完成,那麼您的方法是理想的。
可以找到的k
值如下,
選擇k
使得ķ≤Ñ和第(k + 1)>Ñ。
應該不是k^2
同樣,如果我們可以利用完成第1個k之後,第1個服務器但是如果我們這樣做了,它會變得更加貼近bjskishore123的解決方案。 –
對不起老兄。你是對的。你的公式是正確的。但重新是更有效的方法稱爲treedist。看到他稱之爲謀殺微博的視頻。 。謝謝反正 –
下,你可以把它當作一個動態規劃問題簡單化的假設:對於i = 1 ..ķ找到生產K複製的最快方式。在每一步中,考慮在前面的步驟中產生k-t個副本所需的時間,然後添加1個步驟來並行運行t個副本操作,其中t最好不大於k-t。
對於k是2的冪的情況,您可以在1步中產生2份(計數原稿),2步中產生4份...以7個步驟產生128份,這比它需要的更快假設從一臺機器上運行9份拷貝需要複製到單個目的地的時間是9倍,那麼要做第一個階段的9個拷貝。
但是,所有這一切都假定副本所花費的時間僅取決於源的出站帶寬 - 實際上我期望所有的網絡鏈路都靠近在一起並且相同,以便在同一時間風險彼此減慢,或者您的網絡鏈接彼此分開但不同,因此不同鏈接上的副本花費的時間不同。
你也應該考慮sneakernet - 複製到可移動USB或移動硬盤和攜帶設備到其目的地爲另一個本地副本。歷史上,嘗試用網絡鏈接替換sneakernet的親戚,而沒有提供現有sneakernet的有效帶寬,由於沒有提供足夠的網絡帶寬而失敗。
假設您一次只能複製到一臺服務器,則可以按如下所示進行操作。
- 主服務器複製到服務器S1。
- S1拷貝到S2(1份)
- S1拷貝到S3和S2拷貝到S4(並聯2個拷貝)
- S1拷貝到S5,S2的副本至S6,S3拷貝到S7,S4副本S8(4份並行)
等等..
所以,拷貝數的模式如下:2 POW 0,2 POW 1,2 POW 2等
1 + 2 + 4 + 8 + 16 + 32 + 64> 100
所以,副本S1所要做的數量可以用這個公式
(2 pow k >= 100) and (2 pow (k-1) < 100)
在這種情況下,可以發現,K的計算結果爲7(第一個副本後)
我同意它的最佳解決方案。但是你不覺得用rsync來實現它會很困難。我不知道我們該如何實際執行這個。所以我在看DDD的解決方案。請分享你的想法。 –
我能想到的鴻溝和征服
100(50,50) - >(25,25) - >(12,13) - >(6,6) - >(3,3) - >(1,2)..STOP
我假設複製功能將嘗試使用本地資源(例如服務器1到服務器2)將使用服務器1資源。
所以從服務器1至服務器2和3(總共3個服務器) 現在服務器1至4,2至5,3至6(共6個服務器) 現在服務器1至7,2至8,3至9 .... 6〜12(共12臺服務器)
所以我們說一個線程管理器將服務器1複製到服務器51,服務器2到服務器52 ... 50服務器到服務器100
一種意見是在網絡上多播文件。這樣第一臺服務器將只發送一次文件(並且其他服務器同時接收文件)。它可能變得非常棘手,但我想這將是最快的方法。您可能需要設計自己的自定義協議,當一臺計算機丟失數據包時該怎麼做。
謝謝你的回覆。所以你的意思是類似的。爲服務器創建一個多播組。併爲組播IP的所有服務器添加額外的NIC,然後編寫自定義的S/W以偵聽該IP? –
- 的bZIP文件進行壓縮,儘可能
- 它Rsync在所有其他機器
- 圍棋對你的堆棧,接下來的事情午餐/工作。
沒有提到時間限制,所以爲什麼要假設一個。它只會讓你自己變得更難。
你是對的。 rsync -z可以做到這一點。比gzipping和rsync更好。謝謝回覆 –
兩個步驟:
- S00(服務器之一,具有該文件最初的傢伙)分割文件的第100塊,不保存塊磁盤,而是發送塊C01-C99到S01-S99分別。
- S00-S99將他們大塊他們的兄弟姐妹,但事業的人發送到S00
期待網絡上相當嚴重飽和!
我知道面試可能爲時已晚,但備案也許 你可以考慮這樣的事情:
https://code.google.com/p/castcopy/
或其他一些組播複製工具。無需爲每個 或某些接收客戶端重複數據包。你只需要發送一個數據包的副本,並且所有其他人都可以同時收聽!
潘
- 1. 將文件從一個服務器複製到另一個服務器
- 2. 將分支從一個副本複製到另一個回購
- 3. 將文件複製到多個服務器的腳本
- 4. 複製或移動一個文件從一個FTP服務器到另一個
- 5. 防止將文件從服務器複製到服務器
- 6. 從服務器複製文件到另一個
- 7. 可能在SharePoint中將文件從一個服務器場複製到另一個服務器場?
- 8. 將json文件從一臺服務器複製到另一臺服務器
- 9. 將文件從一臺服務器複製到另一臺
- 10. 將Java文件從一臺服務器複製到另一臺
- 11. 將文件夾從服務器複製到本地目錄
- 12. SSIS包:將.txt文件從雲服務器複製到本地服務器
- 13. 使用webservice將文件從一個服務器文件夾複製到另一個文件夾
- 14. 複製文本從一個文本文件到另一個
- 15. SQL服務器:數據更新副本從第一複製
- 16. 寫shell腳本將一個文件複製到服務器的數量
- 17. 如何從服務器做一個文件夾複製到本地PC
- 18. 使用t-sql將文件從服務器複製到另一個
- 19. 將附件從一個任務複製到另一個任務
- 20. Shell腳本將文件從一臺服務器複製到另一臺
- 21. 將文件夾從本地機器複製到服務器中的文件夾
- 22. 複製目錄,並從一個Windows服務器到另一個
- 23. PHP複製文件(一個或多個)從一個服務器到另一個(得到一個錯誤)
- 24. 將文檔複製到另一個收集服務器端
- 25. 將x文件從一個文件夾複製到另一個
- 26. 將png文件從一個文件夾複製到另一個
- 27. 從NFS共享複製zip文件到多個服務器
- 28. 將某個文本從一個div複製到另一個div
- 29. 從本地機器複製文件到FTP服務器c
- 30. Excel宏將副本從一個工作簿複製到另一個工作簿
你可以在同一時間僅複製到一臺服務器? – bjskishore123