BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MySpace、Concurrency and Coordination Runtimeの利用方法について語る

MySpace、Concurrency and Coordination Runtimeの利用方法について語る

原文(投稿日:2009/10/12)へのリンク

CCR(Concurrency and Coordination Runtime)が.NETロボティックスでデビューして以来、多くの企業がMySpaceを含むロボティックス以外の様々なプロジェクトでCCRを採用してきた。

CCRはアプリケーション各部の分離のためにメッセージパッシングセマンティックを利用する。内部では、マネージスレッドとワークスティールキューが従来のスレッドやロックよりもオーバーヘッドを著しく減少させている。

MySpaceは生のソケット上のカスタムワイヤフォーマットである通信レイヤにCCRを使っている。各サーバは1方向メッセージ用キュー、すぐにレスポンスが返ってくることが予想される同期メッセージ用キューの2つを持っている。これらは同期メッセージキューと1方向メッセージキューにアサインされているスレッドの数によって、サーバ毎に変化させることができる。

通信レイヤの向こうにはキャッシングクラスタがある。各クラスタはストレージコンポーネントとプロセッシングコンポーネントのコレクションを含んでいる。1方向メッセージを受信した時、それは第3のCCRキューに入る。それからメッセージの種類によってストレージコンポーネントやプロセスコンポーネントに転送される。同期メッセージは同じ方法で処理されるが、上記のキューはスキップされる。

スレッドプールよりも非常に高いスループットを得られるので、MySpaceではCCRを使用している。この理由の1つは、.NETスレッドプールには多くのスレッドを生かしておく方法を決めるためにかなりの量のオーバーヘッドがある、ということである。また、貴重な処理時間を消費するスレッド間のコンテキストスイッチもある。CCRはデフォルトで1CPUに対して1スレッドとすることでこららの多くを避けている。さらなるスレッド制御のために、MySpaceは実行時にキューに割り当てられているスレッドを動的に変更できるようにCCRを拡張した。

クラスタが毎秒受信する何千ものメッセージに加えて、送信メッセージも処理しなければならない。このため、彼らはCCRのマルチレシーブや、100メッセージたまるまでや500ミリ秒たつまで待ってバッチでメッセージを送信するようなパターンを使っている。MySpaceによれば、これらのパターンは大量データの移送には必須であるとのことである。

CCRを採用する前、MySpaceは.NETスレッドプールの利用やスレッドのマニュアル管理を行っていた。彼らはCCRの前は.NETのスレッド管理の代替手段を知らず、このようなケースをサポートする際は自社の実装で解決しようとしていたそうだ。

現在、MySpaceはCCRで動作する1,200のミドル層サーバと3,000のWebサーバを使っている。彼らが自身のフレームワークに組み込み、多くの開発者が気づくことさえなくそれを使うことによって、MySpaceではとてもポピュラーになった。

Erik Nelson氏、Akash Patel氏とのインタビューはChannel 9で、CCRによる詳細な情報はCCR and DSS Toolkit 2008 R2で確認することが可能だ。

この記事に星をつける

おすすめ度
スタイル

BT