小さなメトリクス収集 API を作ります。リクエストが来るたびに、そのパスが何回 呼ばれたかを数えておき、/stats でこれまでのパスごとの回数を返します。 Counter の Record と Snapshot を完成させてください。(サーバー配線 newServer と テスト server_test.go は用意されています。) Note: Record(path) — そのパスの回数を 1 増やす。Snapshot() — これまでのパス ごとの回数を返す。リクエストは /hit/<名前> に来て、/stats で集計を読みます。
Go の標準ライブラリ(net/http)で、パスごとのリクエスト回数を数える小さなメトリクス収集 API を完成させる問題です。リクエストが来るたびにそのパスの回数を増やし、/stats でパスごとの累計を返します。リクエストが一度に押し寄せても耐えるサーバーを検証する力を練習します。
Web サーバーはリクエストごとに別々に処理するため、複数のリクエストが同じデータを同時に触るときに何が起きるかが肝心です。空いているときはうまく動いていたコードが、リクエストが集中すると値がずれたり、サーバーがときどき落ちたりして崩れることがあります。普通の順次リクエストだけでは隠れる部分が多いので、リクエストを一度にたくさん送って確かめる習慣が大切です。この問題は、複数のリクエストが共有データを同時に扱うときの安全性を扱います。