0

私は Java EE アプリケーションで作業していますが、これはサーバー側のアプリケーション レベルのインメモリ データを大量に必要とします (つまり、ユーザー レベルのデータではありません)。アプリケーションレベルのデータとは、データがすべてのユーザーに対して一定であることを意味します (マスターデータなど)。これまで、16 GB の RAM を搭載した単一の Windows サーバーで、15 ~ 20 人の同時ユーザーに対して EHCache を使用していました。アプリケーションのヒープ サイズを 8 GB に指定しました。

ここで、アプリケーションを再設計して、500 を超える同時ユーザーをサポートできるようにする必要があります。これにより、より多くのインメモリ データ要件が発生します。

アプリケーションが十分にスケーラブルであるように、そのようなシナリオであなたの視点を持ちたいと思います。

私の理解によると、次の解決策が役立ちます-

  1. 負荷が分散されるように負荷分散を実装しますが、各サーバーのインメモリ データはアプリケーション レベルのデータであるため、依然として高くなります。ある程度は役に立ちますが。

  2. データをキャッシュに保持するのではなく、ステートレス操作としてこれを実装します。しかし、これはパフォーマンスに影響を与えます。ステートレスがスケーラビリティの鍵であるとどこかで読みました。これは手間がかかりすぎるので避けたいです。

  3. Terracotta の BigMemory を EHCache と組み合わせて使用​​します。基本的に、特別な方法でディスクにデータを保持します。つまり、データ アクセス速度は良好です。これは無料の製品ではないことに注意してください。このような無料のオプションはありますか?

  4. クラウドベースのメモリ アーキテクチャを選択しますか? これについてはあまり意識していません。

どんな提案でも大歓迎です。

4

1 に答える 1

0

BigMemory Go を使用すると、サーバーごとに最大 32 GB のメモリ (RAM) を使用できます。BigMemory とは何かを少し誤解していると思いますが、ディスクにデータを保存しません (プロセスを再起動可能にしたい場合は保存できます) が、データは常にメモリから直接アクセスされます。

詳細については、 http://terracotta.org/products/bigmemorygoを参照してください。しかし、その 32 GB の制限を下回っていることを考えると、すべて無料になります...

于 2012-11-22T19:04:23.617 に答える