【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
■ このスレッドは過去ログ倉庫に格納されています
雪だるま作戦において開発をすすめているbbsdでは、
+- [ フロントエンドサーバlive22x1 ] -- ユーザは
[ バックエンドサーバlive22 ] -+- [ フロントエンドサーバlive22x2 ] -- live22xという代表名で
制御プログラムbbsd +- [ フロントエンドサーバlive22x3 ] -- これらにアクセス
| | | dat直読みや、
dat subject.txt subback.html bbs.cgiやread.cgiやofflaw.cgi、
書きこみログ(芋掘り)ファイルなど (こちらは基本的に書き込み操作なし)
(書き込み操作はこちらで)
# 復帰/削除cgiなどについては、さてどっちかな => 今後の課題
という形で「ユーザの相手」と「各種ファイル処理」を複数のサーバに分業することにより、
さらなるパフォーマンスの向上を目論んでいます。
つまりこの場合、dat/subject.txt/subback.htmlは
バックエンドサーバで動作するbbsdというプログラムがリクエストに応じて生成し、
更新や場合によっては削除する形となります。
ということで、bbs.cgiをはじめとする従来2ちゃんねるで動いているcgiでは、
これらが同じサーバにあるつもりでファイル操作をしていましたが、
上記に示すように、少なくとも元本は同じサーバにはなくなるため、
何らかの形で対策を考慮する必要があります。
また現在、ID生成の種やSamba24や
timcount/timeclose等の規制関係で使用している一時ファイル等、
複数のフロントエンドサーバが同じ情報を、
何らかの形で共有する必要があるものもあります。
このスレッドではこれらの処理方法や実装方法について考えながら、
bbsdに持たせたい・持つべきな機能をあぶり出し、実装仕様を詰めていくことを目標にしています。 ということでちょっとだけ覚悟を決めて、bbs.cgi を少しずつ読んでみたりしています。
私はまずは「今のbbs.cgiの実装そのままでは雪だるま仕様で動きそうもない」と思った件について、
ここにひとつずつ、書き込んでいくことにしようかなと思っています。
本業しながらなのでたぶんだらだらと進んでいくことになると思いますが、何卒ご容赦くださいです。
特に、bbsd の実装をすすめていただいている SunOS さんには、
今後ともおつきあいをよろしくお願いいたします。
で、dat直読みをどうするかについては、別スレでやりたいと思っています。
(たぶんApacheのmod_proxyを使うような気がしています) ということで、まずはぼちぼちとすすめていこうかなと。 >>1
乙です。ところでVIP運用情報にタイムリーなんか変なの もう dat は google base に投げ入れてしまえ とりあえず、パターン分けしていくです。
・ファイルの単位
A 板ごとに一つ(1単位)
B サーバごとに一つ(1単位)
...
Z その他
・更新頻度
a たまに
b 1日に1回
c 1スレ立つごとに更新
d 1書きこみごとに更新
...
z その他
(イメージをつかんだいただくための例)
1-A-a SETTING.TXT
1-B-a キャップのデータ(news18, news19を除く)
1-A-d timecount/timecloseのデータ
1-B-d Samba24のデータ
ということで要素を洗い出して、こんなふうに場合わけして、
そのうえで、
一) バックエンドで一元管理しないといけなそうなもの
二) バックエンドにある原本を、ゆっくりフロントエンドに配布すればよいもの
三) 別のところで作ったものを、フロントエンドに個別に配布すればよいもの
...
百) その他
というふうに場合わけして、上記 一) になったものを、bbsd の配下に入れることになるのかなと。 2. 恋人よ半年が過ぎ 逢えないが泣かないでくれ
ついに bbs.cgi に触れる覚悟を決めたむむむ。
しかし、そこに待ち受けていたのは巨大なカオスソース。
読み始めたむむむにはもはや引き返す道は無くなっていた。
果たして、bbs.cgi はどうなる?!
〜 第14章 むむむの覚悟 〜 今まで読んでわかったもの その1
整理番号 タイプ ファイル 分類
[1-1] 1-A-a SETTING.TXT 二
[1-2] 1-A-b IDを作るための種ファイル 一
[1-3] 1-B-a index.htmlの広告ファイル1 三
[1-4] 1-B-a index.htmlの広告ファイル2 三
[1-5] 1-B-a ●規制用ファイル 三
[1-6] 1-B-a リモホ規制用ファイル 三
[1-7] 1-B-a Rock54用データファイル 三 live22xに鯖の情報入れて置いて、板に書き込むとその鯖のdatフォルダに行くようにしたりするの? 単位新規追加
C bbspinkのサーバごとに一つ(1単位)
[1-8] 1-C-a bbspinkのみの広告ファイル 三 >>17
んーと、そういった実装のことを考えるのは、まだまだこれからかなと。
>>15
おじさんの努力により、昔ほどのカオスじゃなくなりました。
http://b01.kakiko.com/test/read.cgi/mumumu/1118847600/ >>19
むむむさんなら「カオス」に突っ込んでくれると思った。
今は反省している。
おいちゃん頑張り過ぎなのよ(´・ω・`) [1-9] 1-A-c スレッド立てすぎです、のための記録用ファイル 一
[1-10] 1-A-d timecount/timecloseのための記録用ファイル 一 メモ:
・datそのものや、datが入っているディレクトリを直接触っているものは、
何らかの対策を行う必要あり。
例:
ごめんなさいリミッター(datの数をreaddirで数えている)
スレッドの容量による制限(unless( -s $DATAFILE <= 512000)) メモ:
・立てようとしたスレッドキーじゃないキーでスレッドが立つケースの考慮要。
例えば1100000000でリクエストしたけど、1100000001でスレッドが立つ場合。
ごめんなさいリミッター2のところともからむ。
参考:
http://qb5.2ch.net/test/read.cgi/operate/1113117347/951 あたり [1-11] 1-B-a キャップのデータ(news18, news19のみ1-A-a) 二
[1-12] 1-B-c ●でスレッド立てすぎです、またにしてくださいの作業用ファイルとフォルダ 一
[1-13] 1-B-d Samba24の作業用ファイルとフォルダ 一 datに追記する/新規作成するところは、既にbbsdにおいて実装済みですね。
で、広告関係はbbsdが読み込んでindex.htmlを作るから、バックエンド側か。
以下修正。場合わけ追加。
四) バックエンドにだけ置けばいいもの
[1-3] 1-B-a index.htmlの広告ファイル1 四
[1-4] 1-B-a index.htmlの広告ファイル2 四
[1-8] 1-C-a bbspinkのみの広告ファイル 四 で、既にわかっているものとして、
・指定したdatをageる => スレッド924で使用
・指定したdatの大きさを得る => 512k制限で使用
・指定した板のdat数を得る => ごめんなさいリミッターで使用
かな。 あと、クラシックさんが入れた板飛びチェックの部分があるか。
でもこれは、>>23 により必要ないかもです。
・指定した板名・キーを持つdatがあるか調べる => 板飛び防止策で使用 芋堀り用のログファイルデータを突っ込むところは、既にbbsdで実装済みのはず。
…とりあえず以上かな。
しばらく、本業します。 ・指定したファイルをtouchする => キャップのあぶり出しで使用
なので、>>26 も含めて、指定したファイルをtouchできる仕組みがあるといいかもです。 さて、仕事に戻る前に。
bbsd 的には、分類 一 と >>26 >>29 に対応するためのAPIを実装いただいて、
分類 四 については、こちらから情報を出して bbsd に入れていただくというのが、
よいと思いますです。
ということで、ここまでのばしておけば即死もなさげかしら。
あとは、またあとで。 …で、外から見て思いあたったところや、
これ忘れてるんじゃないの? と思ったことは、
どんどんここに書いていただけると助かりますです。
このスレの目的は個別のコミュニケーションじゃなくて、
みんなでわいわいしながらすすめていくことなんで。 (1)調べなきゃいけない項目について個別にbbs.cgiがbbsdに質問するのと
(2)書き込みデータをさっさとbbs.cgiからbbsdに渡して、bbsdが各項目をチェックする(1つでも駄目だったらエラーを返す)のと
どっちがええの?
なんでかっていうとさ、512k制限で思った。
1000超えたスレッドとかスレストされたスレッドもbbs.cgiかbbsdかで調べなきゃいけないんじゃ? 俺の記憶だと
スレストや、レス数1000を超えたでパーミッションが落とされるんじゃなかったっけ?
エラーメッセージが1000超えとスレストは
ERROR!
ERROR:このスレッドには書き込めません。
512kだと
ERROR!
ERROR:このスレッドは512kを超えているので書けません!
どうせ書き込み時毎回サイズ調べてるんだったら、サイズオーバーを検出した時点でパーミッション落とすとか。
…なんか本題とずれちゃった >>32
たぶん、事象により個別に考える必要があるですね。
というかまさに「考えどころ」な気がするです。
指摘のとおり、1000超えやスレストのところの判定は、
unless(-w $DATAFILE) とかしているので、
何らかのAPIにより事前に判定するか(1)、bbsdがエラーを戻すか(2)、
いずれにせよどっちが必要ですね。 >>25 場合わけ修正
四) 別のところで作ったものを、バックエンドにだけ置けばいいもの >>37
こういうこと始めますよと公言して皆さんの意見も取り入れーのみたいな
基本的にrootたんが新しい事やる時は抜き打ちはない ■ このスレッドは過去ログ倉庫に格納されています