Scaling LiveJournal
ちまちまと読み。
http://danga.com/words/2005_oscon/oscon-2005.pdf
YAPC::Asia 2007に新しいスライドもあるので、そちらには日本語訳付。
http://www.danga.com/words/2007_yapc_asia/yapc-2007.pdf
LiveJournal Overview
Dropping names
今日現在のバックグラウンド
Terminology: “Cluster”
- 複数台のPCで、負荷のバランスをとりつつ、高い汎用性を求める。なぜか?
Aside
Terminology: “Scaling”
- あなたのコードが最速というわけではない
- あなたのコードは、どれぐらい明日速くなる?
- どうなっていくか?
- アルゴリズム?
Backend Evolution
- 1台のサーバから100台以上のサーバに
- ここから学んでください
- 私たちの失敗を繰り返さないで!
- 1台のサーバでも、私たちのやり方は、あてはまります
One Server - Problems
- 問題が起こります
- どうにもならないポイントがあります
- サーバが必要です
- アカウントを支払い始めた?
- SPOF (Single Point of Failure):
Two Servers - Problems
- 2台でもどこか落ちたら全部とまる
- 予備がない
- ユーザが増えるとサイトが遅くなる
- CPUが食い尽くされる
- もっとWebサーバーが必要
Four Servers
- 2台よりもWebサーバーが増えた
- 3台は、Webサーバ。1台はDB。
- 負荷分散をしよう!
- すべてのサーバに、mod_backhandがあった
Four Servers - Problems
- どこが落ちるか?
- データベース
- 公開されているWebサーバー
- やっぱりユーザが増えると遅くなる
- IOが
- 他のDBサーバが必要
- DBサーバを増やそう
Replication Implementation
More Servers
Where we're at....
Problems with Architecture
- DBのマスターが落ちるとダメ(SPOF)
- スレーブが増えてもスケーラビリティではない
- 読み込みだけが分散された
Eventually...
- DBは、最後まで書き込みだけ
Spreading Writes
- DBは、RAID装備
- すべてバックアップを取っている
- データは、6台以上のスレーブにとっている(HDDだと12台以上?)
- 多くない?
- すべてが書き終わるのを待っている