bbs.cgi再開発プロジェクト 3

このエントリーをはてなブックマークに追加
743動け動けウゴウゴ2ちゃんねる
NFSとflockの両方を提案したがこれは両方の組み合わせを提案したわけじゃないのであしからず。
NFSは「読込負荷の分散のためラウンドロビン化された表向きCGIサーバー群」が
データを抱える裏方のサーバーに読みに行く場合のみ。
flockは書き込みに関してだけで、これは単一のホストがローカルドライブに対して行う。

俺が考えている構成は以下のような感じ。
まず表向きのCGIサーバー群を用意してラウンドロビン化。
裏方サーバーはデータの管理専用で板ごとに分散。
表と裏の通信はTCP上の独自プロトコル。

表サーバーについて: read.cgiは直接裏のサーバーに問い合わせるのではなく
表サーバー内で動作するキャッシュ機能提供のデーモンを経由する。
キャッシュ能力を持つデーモンは逆proxyの効果を上げる。

裏サーバーについて: 読込と書込の2つのデーモンを走らせてTCP listen。
書込デーモンはTCP口のところである程度バッファ能力を持たせておけば
過去flockを使ったとき発生した「待ちのための負荷増加」を減らせるはず。
読込デーモンの処理を極限まで減らすため、
HTML化やl50分の切り出し等、読込時によくある動作は書込デーモンが
あらかじめ行ってファイルへ書き出す。

本当は読込デーモンと書込デーモンを一体化させて
できるだけファイルを経由しないオンメモリ動作にした方がさらに効率的なのだが
開発に時間がかかるしバグ取りが大変だしメンテできる人が減ってしまうことになる。
744動け動けウゴウゴ2ちゃんねる:04/04/03 09:52 ID:Lo74GCgh
743続き

書込時の流れ:
[表鯖]bbs.cgi

[表鯖]書込デーモン
(チェックやフィルタなどはこことbbs.cgiだけで行い裏の負荷を下げる)

[裏鯖]書込デーモン

読込時の流れ:
[表鯖]read.cgi

[表鯖]読込デーモン
(キャッシュ能力を持たせて逆proxy状態に)

[裏鯖]読込デーモン

表鯖はデータを抱えない同一構成のマシンを大量に並べてラウンドロビン化。
そうすりゃ表鯖にいくら負荷をかけても数の力でごまかせる。
ていうかこれだとNFSは不要か。