2010-12-02 7 views
4

私は、複数のユーザーがオブジェクトのセットを同時に作成、表示、変更する必要があるシステムを構築しています。Javaサーバーとブラウザー・クライアント間のオプティミスティック・オブジェクト複製のソリューションはありますか?

  • システムは、Javaサーバーと最新のブラウザークライアント(私はどちらを選択するか)で実行する予定です。
  • ネットワークとサーバーの停止に頑健である必要があります。ユーザーインターフェイスは変更をブロックしてはいけません。接続が回復すると、ローカルに保存して公開する必要があります。
  • 通常の操作では、変更は1秒未満の待ち時間で繰り返す必要があります。
  • ネットワークの待ち時間と帯域幅、CPUリソースが大きな問題になることはまずありません。規模は数十から数百のオーダーです。
  • オブジェクトは、原子値の構造と構造(つまり木)のセットと考えることができます。オブジェクト間の参照は不要です。
  • 属性レベルでlast-write-winsの競合解決に満足しています。スナップショットの一貫性のための特別な要件はありません。私はUIを介して書き込み競合を報告したいと思います。
  • 私は、最初にサーバーと複数のクライアント間のレプリケーションを解決しようとしています。将来私はおそらくマルチレベルのツリーも必要になるでしょう。任意の複製構造は必要ありませんが、フェイルオーバーまたはマルチマスターを容易にします。

私が問題になっている問題は、システム間のオブジェクトへの変更を複製することです。分散並行性は難しく、私はその複雑さを彼が何をしているのかを知っている誰かに委託したいと思っています。複製の部分に役立つライブラリ/フレームワークはありますか?

私は既にXSTMを見つけました。その使命は、私が必要とするものとほぼ同じように見えますが、残念ながらGWTの部分はまだ準備ができていないようで、プロジェクトは不確実な未来を持っているようです。

本当に有用なものがない場合、私はどのアルゴリズムがこれに適しているかについてアイデアを探していますか?

私は現在、DVCSと操作変換に触発されているものを考えています。サーバーはオブジェクトの変更セットを受け入れ、競合する書き込みを拒否します。クライアントは、最後に知られているサーバーの状態とローカルで変更された内容を追跡し、公開された変更とローカルの変更の間の競合を検出し、受信したサーバーの状態の上で矛盾しないローカル変更を再配置します。

答えて

0

一部の分散データベースはCassandraというオプションがありますか?おそらく3つ以上のノードが稼働していても必要以上に多くのものを提供します。

関連する問題