やっとmixiやモバゲーのような1日に何百万アクセスがあるサイトの
システムをどう構築するかが理解できてきた。
ポイントは3つ。
・Webサーバの負荷分散
・DBサーバの負荷分散
・サーバのハードウェア故障が起きた場合の対応
Webサーバはセッションの共有の問題があったけど、
セッションをDBに保存することで解決。
アップロードされたファイルも同様。バイナリ形式でDBに保存。
DBサーバはレプリケーションすると
マスタ、スレーブで分かれるが、
更新系クエリが1極集中してしまう問題があったけど、
マスタを分割することで解決。
ハードウェア故障が起きたサーバは
負荷分散で割り振る対象から外す。
しかも、割り振る対象をDBで管理しておけば、
外す時はUPDATE文一発。
しかし、まだWebアプリケーションのバージョンアップを
サイト自体は無停止で、ユーザに迷惑をかけることなく
行う方法がわからない…
レスポンスは落ちるけど、システムを半分に分割して、
一時的に片方のみにアクセスを許可して、
もう片方でバージョンアップをして、
その逆をやればできる…か?
単純にやるとDBのレプリケーションがうまくいかない気がする。
システムをどう構築するかが理解できてきた。
ポイントは3つ。
・Webサーバの負荷分散
・DBサーバの負荷分散
・サーバのハードウェア故障が起きた場合の対応
Webサーバはセッションの共有の問題があったけど、
セッションをDBに保存することで解決。
アップロードされたファイルも同様。バイナリ形式でDBに保存。
DBサーバはレプリケーションすると
マスタ、スレーブで分かれるが、
更新系クエリが1極集中してしまう問題があったけど、
マスタを分割することで解決。
ハードウェア故障が起きたサーバは
負荷分散で割り振る対象から外す。
しかも、割り振る対象をDBで管理しておけば、
外す時はUPDATE文一発。
しかし、まだWebアプリケーションのバージョンアップを
サイト自体は無停止で、ユーザに迷惑をかけることなく
行う方法がわからない…
レスポンスは落ちるけど、システムを半分に分割して、
一時的に片方のみにアクセスを許可して、
もう片方でバージョンアップをして、
その逆をやればできる…か?
単純にやるとDBのレプリケーションがうまくいかない気がする。