6/17 Erlang分散システム勉強会 感想

Erlang 分散システム勉強会行ってきました。
遅刻したけど、最初に自己紹介してたらしく、はじめから聞けたみたい。
http://teahut.sakura.ne.jp/b/2008-06-02-1.html

Kai

Dynamoオープンソース実装
コードは1000行ほどらしい ... !!


いや、Erlangの1000行は、他のプログラムの1000行より多いか

ejabberd

メッセージングサービス

死活監視

サーバは相互に通信して、お互いの死活を監視する。
でも、もし、通信が途絶えたら、多数決の理論で、
データに不整合が発生するのをふせぐために、更新を受け付けないようにする。

この図の場合、サーバAが、B、Cと通信取れなくなったら、
サーバAは自ら死亡して、データ不整合を防ぐ。


良い仕組みだと思いました。

リモートシェルを抜けるときにq().
「リモートで接続時に、q().コマンドを実行すると、そのサーバが死亡する。」

このトラップはひどい。
Erlang使いは、シェルを抜けるには、q().する、と教育されているので、
これでは誰でも引っかかってしまう。


シェルを抜けるには、q().ではなく、Ctrl-Cで抜けろ、と。

プログラムを自分自身で置き換える

beamファイルを配置して、l(File)で、プログラムをノンストップで置き換えられる。
へーへーへー。
本には載っているが、実際にそんな方法が使われることがあるとは。

CouchDB

ドキュメント指向DB。6635行。


スキーマレスで、好きなデータを自由に出し入れできる。
でも、結局、アプリケーションを作るには、どういうデータを入れるか、少しは考える必要があるよね。


データはファイルで持つ。小さなアプリを作る場合に使ってもいいかも。面白い。

Tokyo Tyrant

mixiの最終ログイン時刻管理DBで使用しているらしい。


最終ログイン時刻の記録に対する、mixiのこだわりが聞けた。
決して、

「最終ログイン日時なんて、データ飛んでもいいよね」

とか、

「データ不整合が発生するかもしれないけど、あんまり正確じゃなくてもいいじゃん。どうせ、最終ログイン時刻だし。」

とか、そういう感じの話は聞いていない。

固定長DB

使い道は限定されるけど、早い・・!!

mochiweb

ソースが読みやすいから、勉強するなら向いているそうな。
Web インターフェイスをもつアプリを作るのが簡単とか。

分散倉庫番ソルバー

実は一番ためになったと思う。


Erlangの文法を覚え始めたけど、
Erlangでは、プログラムをどのように組み立てたら良いか、
よくわかっていなかったから。


プロセスをたくさん使いまくるように作れ、って事なのかな?