動画配信の負荷分散は比較的簡単

http://d.hatena.ne.jp/naoya/20060407/1144376197

はてなおやさんがYouTubeの負荷分散について語っておられる.
mixiの負荷分散とは質が違うことについてはおおむね同意だけど,

YouTube のシステムを見たときにその焦点になるのは、まず第一にネットワーク帯域。第二にストレージをどうしているかというところじゃないかなと思います。動画配信にリソースがいるポイントは、ネットワーク帯域とディスク I/O です。つまり YouTube の負荷分散で気になるところは

* ネットワーク帯域
* ストレージ
o 容量の管理
o 動画を格納しているストレージサーバーの I/O

あたりです。

はちょっと踏み込み足りないなぁという印象なので書いておく.集合知.集合知.

動画配信は通常の画像配信と違って下記の特性を持つ.

  1. 画像のように1ページに複数個配信する必要はない.
  2. 動画の開始は多少の遅延があっても許容される.

# 静止画はそうはいかない.当然1ページに複数画像が張られるので1画像の表示にそれぞれ1秒かかるとページとしてなりたたない.

よって動画配信は

  1. 動画URLアクセスがあったらDBにアクセスして本体のあるURLを引いてリダイレクトURLとして返す.
  2. 動画数が多くなって1台あたりの負荷が高くなったらサーバを追加して1台あたりが受け持つ動画数を抑えるように調整する.
  3. サーバ自体はリバースプロキシになっていて手元に該当ファイルがなければ適切な場所から取ってくる.

とすればおおむね無限にスケールできる.

なおFireFoxなどでyoutubeを見ていると動画の配信時にステータスバーに「youtube-xxx.vo.llnwd.netからデータを転送しています」となっている.xxxの部分は3桁くらいの数字になっているので,単純にサーバを並べているんだろうことを見てとれる.

それよりも個人的に気になるのはflvを配信するためFlashCommunicationServerのライセンス料だ(まともに買うと結構お高い).やっぱアドビと握ってるのかなぁ.だとしたらいいなぁ.