BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース FacebookがHTTPフレームワークProxygenをオープンソース化、SPDY 3.1をサポート

FacebookがHTTPフレームワークProxygenをオープンソース化、SPDY 3.1をサポート

ブックマーク

原文(投稿日:2014/11/06)へのリンク

Proxygenの背景にあるアイデアは、Apacheを置き換えるものではなく、Webサービスを提供する既存のアプリケーションに組み込むことのできる特別に高性能なWebサーバを作れるようにすることだ。これはもともとFacebookがproxyサーバ(名前はここから来ている)を構築するために2011年に始めたものだ。そのプロジェクトが進化し、実環境における何年ものテストを経て、今回オープンソース化された。

なぜApacheやnginxといったサーバから始めなかったのだろうか? Facebookはさまざまな理由を述べている:

  • 既存のインフラやツール(ThriftODS) と統合できること
  • 別の内部プロジェクト(HaystackHHVM、ロードバランサなど)で使われるイベント駆動ライブラリを作ること
  • Facebookによると、以前のHTTPインフラはスケーラビリティの限界に達し、「多数のワークアラウンド」を必要としたため、自分たちの望み通りに内部開発できるものが必要だった
  • 当時、既存のHTTPサーバには足らない機能がたくさんあった。SPDY、WebSockets、HTTP/1.1 (keep-alive)、TLSフォールススタート、特有のロードスケジューリングアルゴリズム

Proxygenはトランザクション(transaction)セッション(session)コーデック(codec)ハンドラ(handler)といった概念を用いている。トランザクションはクライアントとサーバ間で交換されるリクエスト-レスポンスのペアを表現している。セッションは一連の関連するトランザクションを表現している。回線からやってきたバイト列は、トランザクションと関連づけられたコーデックによって、オブジェクトへとパースされる。最終的に、メッセージは実際の処理をするハンドラに渡される。コーデックとトランザクションといった低レベルなものを使ってフレームワークとやり取りすることもできるが、開発者はAPI経由の高レベルな抽象層を使うことが推奨されている。

Proxygenは以下に依存している。

  • Folly – Facebookによって内部的に使われているC++11コンポーネントのオープンソースライブラリ。コードのベンチマーキングフレームワーク、エンディアン変換プリミティブ、最適化された文字列とベクタ、JSONシリアライザなどが含まれている。
  • FBThrift – Apache TriftのFacebookブランチ。

ProxygenはSPDY 3.1をサポートし、HTTP/2のサポートも追加しているところだ。Facebookによる32論理コアXeon CPU E5-2670 @ 2.60GHz、16GB RAMでの社内ベンチマークによると、Proxygenのecho serverはSPDY 3.1上で毎秒304,197インメモリGETリクエストを扱えるそうだ。

GitHubにリリースされたソースコードはUbuntu 14.04でテストされているが、指定されていないものの、他のシステムで動かしても安全だとFacebookは考えている。

この記事に星をつける

おすすめ度
スタイル

BT