2009年12月7日月曜日

MemcachedのRAID化

Webアプリを高速化する手法としてmemcachedは一般的になってきた。
システムの信頼性を高めるには複製を用いることが一般的だ。しかし、複製では最も単純な二重化でも倍の投資が必要になる。保険としては少々高い。あなたは年収の半分を保険料として支払う気になるだろうか。
二重化未満で信頼性を確保するには時間的なペナルティーを支払う必要がある。しかし、チェックポイントを設けたり、ロールバックする特殊なしくみを必要とする。すべての処理がトランザクションであればよいが、そのようなシステムの性能はあまり高くない。つまり、緊急時以外の平常時にも一定のペナルティーを払い続ける必要がある。しかも、単純なトランザクションの実装は多重化になる。
そこで、二重化よりコストが安くなるRAID技術を一般化できないか考える。RAIDでも故障時のペナルティーはあるが、それほど大きくない。
ストレージにRAIDを適用するのは難しくない。しかし、ストレージ以外の資源にRAIDを適用するのは難しい。そこで、メモリをストレージのように扱うことでRAIDを適用する。そこで重要になる技術が冒頭のmemcachedだ。
メインメモリに変数として保存しただけでは回復できないが、重要な変数をmemcachedに入れておけば回復できる。回復できないデータは最初からやり直すしかない。
ただし、実装する上では評価が欠かせない。なぜ、オリジナルのmemcachedでは横のつながりをあえてはぶいているのかを評価で確認する必要がある。

0 件のコメント: