特集
» 2008年08月29日 08時00分 UPDATE

大規模サイトの舞台裏:大規模SNSのボトルネックとソリューション (4/4)

[藤本真樹,ITmedia]
前のページへ 1|2|3|4       

イベントキュー処理システム

 イベントキュー処理システムは、Webサーバとは別のサーバで動作し、随時次のような処理を行っています。

  1. イベントキューを監視する
  2. キューにデータが存在していたら、operationフィールドの値に従って適切なイベントキューハンドラを呼び出す
  3. イベントキューハンドラがそれぞれ処理を行う

 また、実際にGREEで動作しているコードは、

  1. イベントキュープロセッサにイベントリスナーオブジェクトを追加(リスト4)
  2. イベントキューを引数としてイベントキュープロセッサを実行(リスト5)

となっています。

$qp = &new QueueProcessor();

// 友達の新着blog用イベントリスナーオブジェクト

$lsnr = &new Blog_ActionEventListener_RecentFriendEntry($log, $rm, $num_recent_entries_to_fill);

$qp->addListener($lsnr);


リスト4 イベントキュープロセッサにイベントリスナーオブジェクトを追加

$dbq = &new Gree_Queue_DB_BlogEvent($queue_conn, $json, $blog_uri_str);

$err = $qp->process($dbq);


リスト5 イベントキューを引数としてイベントキュープロセッサを実行

 これによって、イベントキューのoperationフィールドに対応する、イベントリスナーオブジェクトのメソッドが呼び出されます。ここで、日記を更新したユーザーの友達全員の新着日記データを更新して回ります(リスト6)

function blogEntryAdded($primary_author_uri_str, $entry_uri_str, $params) {

                :

                :

}


リスト6 新着日記リストにエントリを追加するメソッド

 このように、非同期に新着情報やそのほかのデータを追加、更新する機構を準備することで、友達の新着情報を単純なクエリで取得できるようになります。このほかにも、

  • 先頭数件をキャッシュデータとして保持しておけば、ホーム画面表示時のデータベース負荷を削減できる
  • アクセス許可設定変更時にインデックスを更新できる

といった効果があり、幾つかのボトルネックを解消できています。

おわりに

 本稿では、SNS特有のボトルネックとそのソリューションについて、可能な限り具体的に解説しました。本稿が何かの参考になれば幸いです。

 本稿をお読みになった方の中には、「何の得にもならなそうなのに、なぜこんな技術情報を公開するのだろう」と思われる方も、もしかするといらっしゃるかもしれません。

 こういった情報を公開するモチベーションの1つとして、こういった情報が大げさではありますが「インターネットサービス全体の成長に一役買えれば」という思いがあります。

 本稿で紹介したような情報は、ほかの皆さんが公開されているオープンソースソフトウェアや技術情報なしには成り立ちませんし、現在のインターネットサービスの発展は、安価なハードウェアやオープンソースソフトウェア、そしてそれを利用するためのさまざまな(無償で、あるいは安価に提供される)解説なしには成り立ち得ませんでした。

 ここに記したものが、最良であるとはまったく思っていませんし、改善の余地は大いにあると思います。ですので、本稿がきっかけになってさらに良いノウハウが得られ、それをベースにさらに良いものを……、という循環の一助となればと思います。

 それと、最後に宣伝です:)。GREEでは、こういった問題をさらにエレガントに解決したい方、さらなる未知の問題に対して知恵を絞って挑戦していきたい方、そしてそういった問題を新たに生み出す新しいサービスを一緒に作っていくエンジニアの方を募集しています。ご興味のある方はぜひぜひ、わたしにメール*をいただければと思います。

このページで出てきた専門用語

わたしにメール

fujimoto at gree.co.jp(atの部分は@に置き換えてください)。


前のページへ 1|2|3|4       

Copyright© 2012 ITmedia, Inc. All Rights Reserved.

オンラインムック Special

- PR -

Special

- PR -

Special

- PR -

節電お役立ち情報(スマートジャパン)

news061.jpg

ファミリーマートが最新の節電技術を取り入れたコンビニエンスストアを6月に北九州市でオ...

news046.jpg

再生可能エネルギーの活用や節電対策によってエネルギーの消費量を実質的にゼロにする「...

news023.jpg

東京電力や関西電力が、一般家庭向け電気料金値上げとともに、1日の時間帯に応じて電気料...