7

コレクションにデータを保存するためにmongodbインスタンスを実行していますが、問題はありません。mongoがメインのデータストレージです。

今日は、製品のOauth2サポートを開発し、ユーザーセッション(セキュリティキー、アクセストークンなど)を保存する必要があります。アクセストークンは、定義されたタイムアウト後にのみ認証サーバーに対して検証する必要があります。すべてのリクエストは、認証サーバーによる検証を待ちます。保護されたリソースの最初の要求(作成)は、常に認証サーバーに対して認証される必要があります。後続のリクエストはすべて内部で検証され(キャッシュ)、内部タイムアウトがチェックされ、有効期限が切れた場合にのみ、認証サーバーに別のリクエストが発行されます。

その要件を解決するには、ある種の分散キャッシュを導入し、ユーザーセッションなどを(TTLサポートを使用して)保存し、ttlに基づいて期限切れにする必要があります。..iは上記で説明しました。

ここで2つのオプション:

  1. ユーザーセッションをヘーゼルキャストに保存し、すべてのアプリサーバー間で共有します。これは、すべてのユーザーセッションをエビクションマップに保持するための良い選択です。
  2. ユーザーセッションをMongoDbに保存します-そして同じことをします。

Mongo内に一時データを保存する代わりにHazelcastを使用する利点はありますか?あなたが知っている重要なパフォーマンスの改善はありますか?

私はHazelcastを初めて使用するので、すべてのキラー機能については気にしないでください。

4

2 に答える 2

19

免責事項:私はヘーゼルキャストの創設者です...

  1. Hazelcastははるかに単純であり、単純さが非常に重要です。
  2. Hazelcastをアプリケーションに埋め込むことができます(アプリケーションがJavaで記述されている場合)。リモートのnosqlクラスターをデプロイして維持する必要はありません。
  3. Hazelcastは、アプリケーションオブジェクトと直接連携します。JSONやその他の形式はありません。Javaオブジェクトの書き込みと読み取り。
  4. インメモリデータに対してJavaコードを実行できます。データをフェッチして処理する必要はありません。コードをデータに送信します。
  5. データの更新をリッスンできます。「このマップまたはキーが更新されたら通知してください」。
  6. Hazelcastには、キュー、トピック、セマフォ、ロック、マルチマップなどの豊富なデータ構造のセットがあります。複数のノード間でキューを共有し、キューのポーリング/取得操作をブロックできると想像してください...これは本当にクールです:)
于 2013-03-20T02:12:09.130 に答える
3

Hazelcastはインメモリグリッドであるため、この種の使用法ではMongoDBよりも大幅に高速である必要があります。自分で作成したくない場合は、Javaサーブレット用の事前に作成されたセッションクラスタリングコードもあります。

ここgithubでのセッションクラスタリングのコード。または、 Mavenアーティファクトについてはこちら。

于 2013-03-19T20:36:00.237 に答える