mogilefsの利用と高速化
DESCRIPTION
MogileFS+Perlbalな運用形態におけるX-REPROXY-URLの活用と、X-REPROX-CACHE-FORを使ったサーバレスポンスの高速化、サーバの負荷軽減についてTRANSCRIPT
MogileFS の利用と高速化
ふしはらかん @MobileFactory
MogileFS おさらい
分散ファイル管理システムファイルを複数のサーバに分散して保存
登録・参照は専用の Client を使う
Web 経由でのファイル参照は Perlbal を使うことで効率よく行なえる
MogileFS おさらい2
Client
Tracker
DB
Storage Node
Storage Node
Storage Node
キー名とファイル保存先を記録
ファイルを保存
ファイル保存
MogileFS おさらい2
Client
Tracker
DB
Storage Node
Storage Node
Storage Node
キー名保存先を検索
ファイル参照
保存先を返す
ファイルを取得
MogileFS おさらい3
Perlbal Tracker
DB
Storage Node
Storage Node
Storage Node
保存先を検索
ファイル参照2
App
キー名
保存先一覧
データ取得
X-REPROXY-URL
このヘッダを指定すると、指定したURL から Perlbal がデータを取得してきて返してくれる
URL は「 」(半角スペース)で複数指定可能
まさに Mogile のための機能
高速化その1 URL をキャッシュ
Perlbal Tracker
DB
Storage Node
Storage Node
Storage Node
保存先を検索
App
キー名
保存先一覧
データ取得
これをキャッシュ
URL がキャッシュされた状態
Perlbal Tracker
DB
Storage Node
Storage Node
Storage Node
App
データ取得
URL
この状態での問題点
そもそも App サーバで処理するのはコストが大きい無駄な処理が多い
プラグイン等の呼び出し
Etc…
高速化その 2 X-REPROXY-CACHE-FOR
Perlbal Tracker
DB
Storage Node
Storage Node
Storage Node
保存先を検索
App
キー名
保存先一覧
データ取得
X-REPROXY-CACHE-FOR を送信
X-REPROXY-CACHE-FOR
Perlbal で REPROXY-URL をキャッシュ
perlbal.conf で以下の設定が必要 SET reproxy_cache_maxsize = xxx
以下の書式で指定するX-REPROXY-CACHE-FOR: 3600; Content-Type
キャッシュの維持期間と、 URL 以外にキャッシュするヘッダを指定
X-REPROXY-CACHE-FOR のキャッシュ有効時
Perlbal Tracker
DB
Storage Node
Storage Node
Storage Node
App
データ取得
まとめ
Mogile で運用していてダウンロード数をカウントしないもの(アートワーク等)に非常に有効
アプリケーションサーバの負荷を大きく下げられる
ヘッダの指定法を間違うと実機で画像が出なくなるので注意