私は、ユーザーが gps の位置によって周囲の他のユーザーを見ることができるソーシャル android アプリケーションを構築しました。最初はユーザー数が少なかったのでうまくいきましたが、ユーザー数が増えて (毎日約 1500 + 100)、設計上の大きな問題が明らかになりました。
私の Google App Engine サーブレットには、すべてのユーザー プロファイル オブジェクトを保持する静的な HashMap があります。現在は 1500 ですが、この数は登録ユーザーが増えるにつれて増加します。
なぜ私はそれをやっている
周囲のユーザーを要求するすべてのユーザーは、自分の gps を他のユーザーと比較し、自分の半径 10 km 内にいるかどうかを確認します。これは平均で 5 分ごとに発生します。そのため、GAE の読み取り/書き込み操作のクォータが私をバラバラにするため、毎回 db からユーザーを取得することはできません。
このデザインの問題点は
ユーザー数が増えるにつれて、ハッシュマップが 4 ~ 6 時間ごとに null に変わります。この時間が短くなってきていると思いますが、よくわかりません。ユーザーがnullになったことを検出するたびにデータベースからユーザーをリロードすることでこれを修正していますが、これによりユーザーに30秒間DOSが発生するため、より良い解決策を探しています.
ハッシュマップのサイズが原因だと思いますが、そうですか?
すべてのユーザー プロファイルを最大の可用性で管理する方法を知りたいです。
ありがとう。