BT

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

| 作者: Abel Avram フォローする 7 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2014年11月24日. 推定読書時間: 2 分 |

原文(投稿日: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は考えている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT