0

jersey フレームワークによる Web サービス API は既に作成済みです。ここで、すべてのクライアントのクォータを制限したいと考えています。例: - 1 つのクライアントが 1 日に行うことができるリクエストは 10000 未満です。- 1 つのクライアントは、1 秒あたり 10 未満のリクエストしか作成できません。などなど。

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

これらの問題を解決するための他の効率的な方法を楽しみにしています。この種の仕事をするのはこれが初めてなので、誰かがこれらの問題についてアドバイスをくれることを願っています. ありがとう~!

4

1 に答える 1

1

クライアントをどのように定義するかについての情報がなければ、この質問に答えるのは困難です。ただし、1 つの方法は、ContainerRequestFilterを使用してすべての受信リクエストをフィルタリングすることです。

次に、そのレベルで、クライアントとは何かを定義し、そのクライアントによるジャージー アプリケーションへのすべてのアクセスをログに記録できます。おそらく、DataStructure の値またはデータベースの値をインクリメントすることによって。次に、cron ジョブを実行すると、そのデータが 24 時間ごとにフラッシュされます。

理想的には、データをメモリ内データ構造に格納することをお勧めします。データは一時的なものであり、サイズが大きくなることはなく、短期間で削除されるためです。ただし、複数のマシン、または単一のマシンで複数のインスタンスにスケールアップする場合、これは問題になります。

あなたからのより多くの情報がなければ、私は本当にこれ以上の情報を提供することはできません

于 2011-03-26T10:29:22.467 に答える