cs.stackexchangeでこれを尋ねました..反対票を獲得しました..私はあまり明確ではなかったので..だから私はここでより具体的にしようとします..
Q - 過去 1 分間の Web サーバーへの接続数を返すデータ構造を設計してください。
仮定 -
- サーバーには大量の着信接続があります..インドの鉄道予約やソーシャルネットワークサイトなど..
- これがビッグデータの問題であるとします..ビッグデータジョブを実行するためのインフラがあります..
を探しています:
効率 - O(1) でこれを行うことは可能ですか? たとえば、O(n)でそれを行うと、問題は、答えを計算するのにNミリ秒かかる場合..そのNミリ秒でキューに入れられた接続がさらにあるということです..これにどのように取り組むべきですか. . または、わずかな遅延しか無視できず、O(n) は問題ないパフォーマンスです
推論/アプローチ - 本番環境にある無数の展開で、これと同様のことを行いますか? 同様の問題はありますか..?
これが「ビッグデータ」ですか?注文の最後の N (N は 10 のオーダー) 分の接続を保存するためのデータはビッグデータの問題ですか?
私の努力: 私はそれを知っています -
- Web サーバーへの接続は、スレッドによって処理される前にキューに入れられます
- 各接続にはタイムスタンプがあります
アプローチ -
- 接続がキューに入れられるとすぐに、それをファイルに書き込みます.. (少なくともそのタイムスタンプと接続へのハンドル/一意の識別子)
- クライアントが「過去 1 分間の接続数を教えてください」と要求するとすぐに..ファイルを処理して接続数を調べます..現在の時刻がミリ秒単位でわかり、タイムスタンプが currentTime に収まる接続を見つける必要があることがわかります - 60秒
- このジョブは map reduce を使用して実行できます。また、ファイルのデータが (タイムスタンプで) ソートされていることもわかっています。
また、不要なデータを保存しないように、10 分以上経過したエントリ/ファイルを削除するデーモンも実行します。