1

Spring 3 + REST アプリケーションがあり、トークンを使用して着信リクエストのソースを識別しています。このトークンはメモリ内 (ハッシュマップ内) に保持され、リクエストの識別に使用されます。アプリの複数のインスタンス (異なるマシン上の複数の tomcat インスタンスにデプロイされている) の場合、異なるアプリ ノード間でこのトークンを共有/同期するにはどうすればよいですか? 唯一の要件は、このトークンを異なるノード間で同期することです。

Redis、memcached、zookeeper のようないくつかの API/ソフトウェアをブラウズして見つけました。どちらを選択するか決めることができません。

どんな種類の提案/コメントも役に立ちます。

よろしく、プラモド

4

1 に答える 1

0

私は Zookeeper を使ったことがないので、それについては何も言えません。Redis (データベース) と memcached (キャッシュ) の両方が機能します。どちらが優れているかは、トークンの使用方法によって異なります。

次の場合は Redis を選択します。

  • トークンは長期間保存される可能性があります
  • トークンを期限切れにする必要はありません
  • メモリに格納できるよりも多くのトークンを処理したい
  • トークンを他のサーバーに複製して、1 つがダウンした場合に他のサーバーがトークンを提供するようにしたい
  • トークンはサーバーの再起動に耐える必要があります

次の場合は memcached を選択します。

  • トークンは一定期間のみ有効であり、有効期限が切れる必要があります
  • メモリ容量を超えるトークンの量 使用頻度の最も低いトークンが削除されます
  • すべてのトークンをメモリに保存できます
  • トークンを他のサーバーに複製する必要はありません
  • トークンはサーバーの再起動に耐える必要はありません
  • Spring Cache 抽象化を使用したい
于 2012-12-27T14:01:04.757 に答える