ユーザーが報酬を受け取るためのボタンが Web ゲームに用意されています。これは 1 回だけクリックしてください。リクエストを受信すると、DB で収集済みとしてマークされます。
クライアントのボタンが繰り返しクリックされるのを既にブロックしています。しかし、短期間にパッケージを何度もサーバーに再送信する場合は役に立ちません。
私が欲しいのは、サーバー側からこれをブロックする方法です。
私たちはサーバー側に Playframework 2 (2.0.3-RC2) を使用していますが、これまでのところステートレスです。次のように Set を使用して保護したいと思っています:
if processingSet has userId then BadRequest
else put userId in processingSet and handle request
after that remove userId from that Set
しかし、その後、 Scalaコレクションをスレッドセーフに更新するなどの問題に直面しなければならず、負荷分散の背後に複数のサーバーがあると、ユーザーをブロックできません。
私が考えている1つの可能性は、上記の処理セットの代わりにDBにテーブルを持つことですが、それはリクエストごとに1回以上のDB操作が発生します.何か良い解決策はありますか~?
ありがとう〜