0

Web クラスターにはn 個のノードがあります。ファイルは任意のノードにアップロードでき、その後、他のすべてのノードに配布する必要があります。この分散は、トランザクションで発生する必要はありません (実際、分散トランザクションはスケーリングされません)。最小限である必要がありますが、多少の遅延は許容されます。最終的にすべてのノードが同じファイルのセットを持つように、解決がすべてのノードにも分散される場合、競合は任意に解決できます (通常、最後の書き込みが優先されます)。既存のノードを再構成することなく、ノードを動的に追加および削除できます。単一障害点があってはならず、これを解決するために追加のボックス (RabbitMQ など) は必要ありません。

私は動的構成に consul.io を使用して、各ノードが consul を参照して他のノードが利用可能かどうかを判断し、関連するフォルダーを監視し、ZeroMQ を使用して他のノードと通信するデーモン (Golang) を作成することを考えています。

でも、車輪を再発明するような気がします。これは一般的な問題であり、私が知らない解決策が既に利用可能であると思いますか? それとも、私のアプローチが間違っていて、これを解決する別の方法がありますか?

4

1 に答える 1

1

はい、最近、分散同期に関していくつかのことが起こっています。

syncthing (オープン ソース) またはBitTorrent Syncを使用できます。

同期はノードベースです。つまり、ノードをクラスターに追加し、同期するフォルダーを選択します。

BTSync はフォルダベースです。つまり、フォルダの「秘密」を取得し、そのフォルダのスウォーム内の全員と同期できます。

私の経験では、BTSync の方が検出と接続性が優れていますが、同期プロセス全体がクローズド ソースであり、実際に何が起こるかは誰にもわかりません。Syncthing は go で記述されていますが、ピアの検出に問題がある場合があります。

syncthing と BTSync は両方とも、ブロードキャストによる LAN 検出と、検出用のトラッカー、AFAIK を使用します。

編集:または、本当にクールな場合は、IPFSを使用して最新バージョンをホストし、IPNSを使用して「名前を付け」、IPNSをサーバーにマウントします。一部のサーバーに IPFS ブートストラップ リストを設定できます。これにより、外部トラッカーから独立することさえできます。:)

于 2015-11-06T09:09:22.053 に答える