複数のマシン間でのデータ構造の分散の可能性を検討しています。私はそれを各マシンのプロセスで実行し、(Multicast?)を使用して、すべてのマシンで完全なデータ構造のコピーを複製したいと思います。マルチキャストを使用した複数のマシン間の分散データ構造
誰もが正しい方向に私を指すことができるこの経験を持っていますか?
複数のマシン間でのデータ構造の分散の可能性を検討しています。私はそれを各マシンのプロセスで実行し、(Multicast?)を使用して、すべてのマシンで完全なデータ構造のコピーを複製したいと思います。マルチキャストを使用した複数のマシン間の分散データ構造
誰もが正しい方向に私を指すことができるこの経験を持っていますか?
分散ロックは難しく、読み取り専用でない限り、ロックする必要があります。 Microsoft's Velocity(これは現在Azureの一部として改名されているかもしれません)や無料のオープンソースであり、非常に良いmemcachedのような分散キャッシングフレームワークを見てみることをお勧めします。
その他の有料オプションもあります。特にGemFireとCoherenceがあります。
私はmemcacheに行くと、それはかなりうまく動作します。
これらの問題(私はmemcachedだけを使用しています)は、各サーバ上のデータを破棄することです。彼らは完全なコピーを保持しません。サーバーがダウンすると、そのシャードは失われます。 –
あなたはあなたのアプリでそれを世話することができますが、それは監視と余分な仕事であることに同意しました。 http://repcached.sourceforge.net/を見たことがありますか? –
また、GemfireとCoherenceは明示的にこれに対処しており、Microsoftのソリューション(現時点ではAppFabric)もニーズに合った高可用性オプションを持っているようです(http://msdn.microsoft.com/en-us/library/ee790974)。 aspx) –
中央データベースにデータを書き込むことができます。次に、各インスタンスはそれにアクセスできます。インスタンスからデータを変更する場合は、データベース内のデータをロックするメカニズムを実装してください。これはどんな助けですか?
データベースを使用できません。私はこれをすべてのマシン上のメモリ上で実行したいと思っています... –
ØMQでPUB/SUBソケットを使用して構造を公開し、要件やネットワーク品質に応じてTCPまたはIPマルチキャストを切り替えることができます。
データ構造が十分に整理されている場合は、大きな問題なしに構造に更新を送信することもできます。
また、JavaベースのソリューションであるHazelcastを調べることもできます。
ここには、内部のいくつかについて語る直接リンク(1)があります。
(1)http://www.hazelcast.com/documentation.jsp#Internals
、同様に使用することが容易であるべきである(repcached)のmemcachedを使用する提案が既に存在します。
あなたの疑問にお答えするには、おそらくstate machine replicationについて学んで、あなたのプラットフォーム用の仮想同期装置またはPaxosの実装をビルディングブロックとして探してください。
実際には、私はZooKeeperのようなコーディネーションサービスを検討することをお勧めします。
どのくらい大きな構造物について話していますか? –
はそれほど大きくはなく、いつでもその中に5-10個のオブジェクトしかないでしょう。 –