2

広告のインプレッションを追跡できるようにする必要があるサイトに取り組んでいます。私の環境は、SQL Server DMBS を使用する IIS を備えた ASP.Net であり、潜在的に Memcached であるため、データベースへのトリップはそれほど多くありません。このアプリケーションが世界的な現象になることを望んでいるので、スケーラビリティについても考える必要があります (指を交差させて、お尻をオフにします)! だからここに状況があります:

  • 私の顧客は Y 広告インプレッションに対して X 金額を支払います
  • これらの広告インプレッション (現在はテキスト広告のみ) は、特定のページに表示されます。
  • ページは Memcached から提供され、DB へのトリップを減らします
  • 広告が表示されたら、データベースのインプレッション数に「+1」ティックを追加する必要があります

つまり、ジレンマは次のとおりです。「+1」の目盛りを各広告インプレッション カウンターに追加できるようにする必要がありますが、その広告が読み込まれるたびにその SQL ステートメントを実行することはできません。その「+1」インプレッション数をセッション (または別の場所) に保存し、X 分、時間、または日ごとにバッチを実行する必要があります。

ここでは、スケーラビリティが大きな要因であることを覚えておいてください。皆様からのアドバイスをいただければ幸いです。

4

2 に答える 2

2

私は、各 Web ファーム サーバーに SQL Server Express エディションを展開し、Service Broker に依存して追跡監査を中央サーバーに配信することで、これに対処するプロジェクトを見てきました。ファーム内の各サーバーはローカルの SQL インスタンスを更新するため、無限に拡張できます。Service Broker は、ほぼリアルタイムの信頼できる配信を保証します。私は、Web ファームが 1 秒あたり平均300 ~ 400 のリクエストを処理し、24 時間 365 日、長い間処理しているのを見てきました。また、Service Broker のキューの性質により、1 秒あたり 5000 ~ 7500 ヒットのスパイクを数時間にわたって吸収し、適度に回復することができます。監査の損失がなく、バックログが管理されたままです。

規模を拡大して次の MySpace になることを本当に期待しているのであれば、彼らのやり方から学ぶべきであり、キュー ベースの非同期で分離された処理がゲームの名前です。

于 2010-02-20T20:42:48.757 に答える
1

できることは、カウントをより永続性の低いストアにインクリメントし、定期的に (1 分、5 分、1 時間ごとなど) より信頼性の高いデータベースに同期することです。

テンポラリ ストアがダウンすると、ヒット カウントが短期間失われます。これの最終的な効果は、まれに誤動作が発生した場合、広告にお金を払っている人が無料のインプレッションを獲得することです.

「この値を +1 ずつアトミックにインクリメントする」コマンドを memcache に送信できます。また、広告が表示されるたびにフラット ファイルに行を書き込み、「5 分ごと」の同期ジョブでログをローテーションし、ローテーションされたばかりのファイル内のすべての行を数えることもできます。

于 2010-02-20T18:52:24.123 に答える