0

2 つ以上の監視フォルダーを同期する機能をプログラムに実装する必要があります。

実際には、フォルダーはローカル ネットワーク上の異なるコンピューターに存在しますが、問題を絞り込むために、ツールが 1 台のコンピューターで実行され、同期する必要がある監視フォルダーのリストがあると仮定します。フォルダは、他のすべてに伝播する必要があります。

これまで考えてきたいくつかの問題があります。

  • ファイルの削除は有効な変更であるため、フォルダー A にファイルがあり、フォルダー B にファイルがない場合、ファイルがフォルダー A で作成され、フォルダー B に伝達する必要があることを意味する可能性がありますが、ファイルが削除されたことを意味する可能性もあります。フォルダー B にあり、フォルダー A に伝播する必要があります。

  • ファイルは複数のディレクトリで同時に変更/削除される可能性があり、競合する変更がある場合、何らかの方法で競合を解決する必要があります。

  • 1 つまたは複数のフォルダーがいつでもオフラインになる可能性があるため、変更を保存し、後でオンラインになったときにそのフォルダーに反映する必要があります。

コミュニティがここでどのような支援を提供できるかはわかりませんが、次のことを考えています。

  • すでにこれを行うツールを知っている場合は、それを指摘してください。ただし、私たちの製品はクローズドソースで商用であるため、使用するにはライセンスがそれと互換性がある必要があります。

  • この問題に関する既存の文献や研究 (論文など) をご存知の場合は、リンクを張ってください。この問題はすでに研究されていると思います。

  • または、この問題にアプローチする最善の方法、使用するアルゴリズム、競合の解決方法、または存在する場合の競合状態、およびその他の落とし穴に関する一般的なアドバイスがある場合。

OS は Windows です。ツールやライブラリが存在しない場合は、Qt と C++ を使用して実装します。

4

1 に答える 1

1

特別難しいわけではありません。関連する変更ジャーナル レコードを比較するだけです。もちろん、分散ネットワークでは、クロックが同期されていると想定する必要があります。

もちろん、ネットワークが分割されている間に複雑なファイル (解析できないもの) が編集された場合、問題を回避することはできません。これは CAP定理として知られています。システムは、一貫性があり、常に利用可能であり、パーティショニング (オフラインになる) に対しても耐性があります。

于 2013-10-30T08:20:37.790 に答える