2011-03-13 63 views
7

我想建立一個雲底同步解決方案(類似Dropbox的)的:基於雲的同步架構

  1. 會是什麼一個健壯的體系結構是什麼樣子?

  2. 你需要什麼技術來支持不同的平臺 像windows,mac,linux和移動設備?

  3. 你會使用什麼樣的高效同步算法?

我知道一個天真的架構/解決方案是:

  1. 使網絡調用你的雲存儲,並獲得同步文件夾 樹狀結構(只是元數據信息)。

  2. 在客戶端文件系統上的監視器來構建本地同步 文件夾樹狀結構(我猜你會使用類似lsyncd爲 文件系統監視器?)

  3. 從以前的檢索同步的文件夾結構同步。現在,您在客戶端上有3個文件夾樹結構,其中有 。使用這3棵樹可以確定需要在本地文件夾上執行什麼操作,以及需要在服務器上的遠程文件夾上執行什麼操作需要 。例如,使用特定於應用程序的某種預定規則 添加,刪除,編輯,衝突解決等。

這個架構可能就足夠了,但魔鬼在細節中。如果同步文件夾樹非常大(非常寬泛且非常深),會怎麼樣?很明顯,需要一個有效的算法來確定差異。如果網絡連接斷開並且您沒有正確地獲取或發送整個樹,該怎麼辦?也只發送文件的diff,以減少網絡負載等。

我知道這些都是我設計,但我的問題是,如果這個架構是充分,我是否應該把我的時間在細節? Dropbox是如何設計的?他們使用什麼技術和算法來實現大型文件夾結構和數據大小的高效同步?有什麼資源/書籍可以諮詢有關這方面的設計嗎?

在此先感謝。

回答

1

一個良好的開端將是評估Dropbox API,以獲取有關他們如何設計的Dropbox API的想法。這可能會爲您提供有關這些技術如何適應您的解決方案的想法。與任何同步解決方案一樣,魔鬼在細節中。

-cill