2011-01-27 9 views
1

私はすでにjerseyフレームワークでWebサービスAPIを構築しています。 すべてのクライアントのクォータを制限します。 例: - 1クライアントは1日に10000件未満のリクエストしか作成できません。 - 1クライアントは1秒あたり10リクエスト未満しか作成できません。 などがあります。どのクライアントでもジャージーのクォータを制限する方法

これらの情報をデータベースのテーブルに保存する必要がありますか? しかし、私がそれを行うと、テーブルを更新する必要があるので、これらの要求を処理するのに多くの時間がかかりますか?

私はこれらの問題を解決する他の効率的な方法を楽しみにしています。 このような仕事をするのは初めてのことなので、誰かが私にこれらの問題に助言を与えることができると願っています。 ありがとう〜!

+0

どのようにクライアントを定義しますか? IPアドレスまたは名前で – Fortyrunner

答えて

2

どのようにクライアントを定義するかについての情報がなく、この質問に答えにくい。しかし、1つの方法は、ContainerRequestFilter

を使用して、すべての着信要求をフィルタリングすることです。そのレベルで、クライアントの定義を行い、そのクライアントによるすべてのアクセスをJerseyアプリケーションに記録できます。おそらく、データ構造内の値またはデータベース内の値をインクリメントすることによって行われます。その後、24時間ごとにそのデータをフラッシュします。

データが一時的で、大きなサイズにならず、短時間で削除されるため、インメモリのデータ構造に格納することをお勧めします。しかし、これは、複数のマシン、または1台のマシン上の複数のインスタンスにスケールアップする場合、問題になります。

あなたからの情報がありません。これ以上の情報はありません。

関連する問題