2016-07-07 2 views
0

私のWebアプリケーションは、高い頻度で読み書きされるドメインエンティティのメモリキャッシュを維持します。アプリケーションをクラスタ化するには、このキャッシュを同期化/外部化する必要があります。 memcachedの間でのより良い選択肢であると、次のアプリケーションを考慮しinfinispanます 高い並列性のためにInfinispanとmemcachedが必要

facts-

キャッシュが読み込まれます
  • /infinispan、データはノード間で複製に必要な場合には、第2
  • あたりの高頻度で書かれた本物の近
  • レプリケーションが遅い場合、同時並行書き込みが高いと競合の問題が発生しません。

私はmemcachedが集中化され、infinispanのような複製の遅延を必要としないので、この目的をうまく解決すると感じています。専門家はこれについて意見を提出できますか?

+0

ここでは、参考になる良い比較量があります(http://vschart.com/compare/jboss-infinispan/vs/memcached)。 – phoenixSid

答えて

4

は、残念ながら、私は...

まず、分散型の対の集中をMemcachedの専門家ではないんだけど、あなたのユースケースのための最良の選択肢を選ぶことができるように、私はあなたにいくつかの基本的な概念についての詳細を教えてみましょう - あなたが持っている場合あなたのシステム内に1つのノードしか存在しない場合は、より速くなります(複製がないと言ったように)。しかし、ノードがダウンしている場合はどうなりますか?または、別のシナリオ - ノードがいっぱいになったらどうなりますか(毎秒多くの読み取り/書き込みを実行すると言います)そのための1つの解決策は、書き込みがスレーブノードに非同期に伝搬されるマスタ/スレーブレプリケーションを使用することです。この解決法は、ノードがダウンしても、ノードがいっぱいになった場合には何もしません(マスターノードがいっぱいであれば、スレーブは数分後に完全になります)。

システムにノードが2つ以上ある場合、データが同期しなくなることがあります。 2つのノードとそれぞれに接続されたクライアント間の非同期レプリケーションを想像してみてください。両方のクライアントは同じ時刻に同じキーへの書き込みを実行します。それは起こりそうにないと思われるかもしれませんが、非常に並行した読み書きが行われると私を信じています。この問題を解決する唯一の方法は、多数のノードを起動して実行する(またはコンセンサスと呼ばれる)同期レプリケーションを使用することです。

壊れたノードが問題ではない場合(たとえば、他のデータソースに自動的に切り替えることができます)、データが増加しない場合は、1ノードソリューションまたはマスター/スレーブ複製。データの強固な整合性が必要な場合は、同期レプリケーションを実行していることを確認してください(場合によってはトランザクションが必要ですが、ユーザーマニュアルを参照してガイダンスを参照する必要があります)。それ以外の場合は、システム全体を停止せずにノードを追加/削除することができ、同期/非同期レプリケーションのオプションが用意されている、より汎用性の高いソリューションを選択することをおすすめします。

私の経験から、人々はデータの一貫性についてはあまり気にしませんが、スケーラビリティについてはもっと気にする必要があります。最終的なアドバイス - ソリューションを評価する前に、パフォーマンス基準を定義してください(私の書き込みはXより長くならず、Yよりも長く読み込まなくてはなりません)。あなたの基準に対する信頼水準を定義します(私は99.5%のXより小さいと読み込まれます)。

関連する問題