2015-11-06 103 views
0

網絡集羣中有n節點。文件可能會上傳到任何節點,然後必須分發給其他每個節點。這種分發不必在事務中發生(事實上它不一定,分佈式事務不會擴展),並且一些延遲是可以接受的,儘管這一點很小。衝突可以任意解決(通常最後寫入勝利),前提是分辨率也分配給所有節點,以便最終所有節點具有相同的一組文件。可以動態添加和刪除節點,而無需重新配置現有節點。必須沒有單點故障和解決此問題所需的附加框(如RabbitMQ)集羣中n個Web服務器之間的文件同步

我在考慮使用consul.io進行動態配置,以便每個節點都可以參考consul來確定其他節點可用並編寫守護進程(Golang),監視相關文件夾並使用ZeroMQ與其他節點通信。

感覺就像我會重新發明輪子雖然。這是一個常見問題,我希望有一些我不知道的解決方案?或者,也許我的方法是錯誤的,還有另一種方法來解決這個問題?

回答

1

是,已有一些東西與最近分佈式同步怎麼回事:

你可以使用syncthing(開放源代碼)或BitTorrent Sync

Syncthing是基於節點的,即您將節點添加到羣集並選擇要同步的文件夾。基於文件夾的BTSync,即你獲得一個文件夾的「祕密」,並可以與該文件夾羣中的每個人同步。根據我的經驗,BTSync具有更好的發現和連通性,但整個同步過程是封閉源,沒有人真正知道發生了什麼。 Syncthing被寫入,但有時難以發現同伴。

同步和BTSync都使用LAN發現通過廣播和追蹤器發現,AFAIK。或者,如果你真的很酷,請使用IPFS來託管最新版本,IPNS將其「命名」並將IPNS掛載到服務器上。您可以將IPFS引導程序列表設置爲某些服務器,這些服務器甚至可以讓您獨立於外部追蹤器。 :)

相關問題