Erlang
Yawsで分散データベースMnesiaを使う
前回まで紹介してきたErlyWebのORマッパはMnesiaに対応していて Mnesiaを使用した分散データベース上でErlyWebのORマッパを使ってWebアプリケーションを作ることができるようになります。
今回は、前回説明したYawsで設定したMnesiaのデータベースを、同一ホスト内で複数のノードで使用したり、データベースを複製する手順を説明します。 異なるホスト間でのMnesiaの複製を行おうとすると、今回の環境では別の問題が発生します。これについては次回に説明する予定です。
今回は、同一ホスト内で接続と複製だけ行ってみます。
(セ)
ErlyWeb:ErlyWebでmnesiaを使う
今回は前回の続きの3回目でErlyWebでmnesiaを使ってみます。
- 第1回:ErlyWebのインストール
- Windowsへのインストール手順を紹介します。
- 第2回:ErlyWebのテンプレートを使ってみる
- ErlyWebのテンプレートシステムを使って見ます。
- 第3回:ErlyWebでmnesiaを使う
- Erlangのデータベース mnesia を使ってサンプルを動作させて見ます。
(セ)
ErlyWeb:Erlangで書かれたWebフレームワーク
ErlyWebはErlangで書かれたウェブのフレームワークです。ErlyWebはErlangのウェブアプリケーションであるYaws上で動作します。
Yawsを使用するだけで、Erlangで動作するWebアプリケーションを作成することができますが、ErlyWebを使うと、より柔軟なテンプレート機能(ErlTL)や、MySQLやErlangのmnesia(まだα版らしい)などのデータベースへのORマッパ機能 (ErlDB)、appmodを利用してURLパスによって実行されるアプリケーションの作成が行えるようになります。
これからErlyWebについて3回に分けて紹介していきます
- 第1回:ErlyWebのインストール
- Windowsへのインストール手順を紹介します。
- 第2回:ErlyWebのテンプレートを使ってみる
- ErlyWebのテンプレートシステムを使って見ます。
- 第3回:ErlyWebでmnesiaを使う
- Erlangのデータベース mnesia を使ってサンプルを動作させて見ます。
今回はインストールからになります。windows用に手順を紹介していますが、当然linuxなどでも動作します。
続きを読む(セ)
Erlang で 4000万プロセス起動する方法
前回、Erlang の並列処理のパフォーマンスがマルチプロセッサ環境でどれ くらい向上するかというのを調べてみましたが、今回は軽量と呼ばれている Erlang のプロセスをどれくらい同時に起動することが出来るかという実験を 行ってみました。
最終的に、メモリを 32G積んだ Sun Fire T2000を使用して、4000万プロセスを起動することが出来ましたが、これだけのプロセスを扱うためには幾つかの工夫が必要したので Erlang で大量プロセスを扱うためのテクニックを幾つか紹介していきたいと思います。
また、最後に大量プロセスを使用してのリングベンチマークを載せてあり ます。
続きを読むErlang の並列処理性能をマルチプロセッサ環境で検証してみました。
並列処理に適したプログラミング言語 Erlang は、マルチプロセッサの環境 で効率よくパフォーマンスが向上すると言われています。そこで実際のマルチ プロセッサ環境(32CPU SMP)で様々な Erlang プログラムを走らせる検証を行ってみました。
行った検証の内容は以下の通りです。
- 並列ソート
- N-Queen 問題
検証に使用した UltraSPARC T1 プロセッサ は 8つのコア×4スレッド(CoolThreads)という構成で合計 32個の並列処理が可能となっています。なお、この Sun Fire T1000 はサン・マイクロシステムズ(株)様よりごお貸し頂きました。
詳細は以下のページにまとめてあります。
http://lab.klab.org/modules/mediawiki/index.php/Erlang_PerformanceJabberサーバーをクラスタリングしてみました。
みなさん Jabber をご存じですか? Jabber はオープンな仕様のメッセン ジャーサービスのことで最近だと Google Talk で使用している方が多いと思 います。
KLab では 2001年ぐらいから、誰でも Jabber を使うことが出来る Jabber.JP というサービスを運用してい ます。まだ Jabber を使用したことがない方は是非こちらの「Jabber をはじめよう」 を ご覧になって Jabber を使ってみて下さい。
Jabber.JP は jabberd という実装を使用してい たのですが、冗長構成が難しいという問題がありました。
そこで先日、Jabber.JP では大規 模なメンテナンスを行い ejabberd という実装で分散、冗長化を行ってみました。ejabberd はその名の通り、Erlang で 実装された Jabber サーバーで、Mnesia データーベースを使用してデータの 冗長化を行うことが出来ます。
今回は Jabber.JP で動いている ejabberd やそのクラスタリング方法について紹介したいと思います。
続きを読むErlang版 memcached でキャッシュデータの永続化をしてみました。
幾つかの改変を行った ememcached ver 0.3 をリリースします。
主な変更点は、
- ディスク書き込みによるキャッシュの永続化 キャッシュデータをディスクに書き込むことで再起動してもキャッシュデータ が消えないように出来るようになりました。
- キャッシュデータのガベージコレクション 以前のバージョンには Expire したデータが残り続けるという問題がありました。
- autoconf/automake 化 ./configure && make でビルドできます。
ダウンロード: ememcached-0.3.tar.gz
続きを読むErlang版 memcached でレプリケーションしてみました。
先週お知らせした通り、Mnesia を使用した Erlang版 memcached が出来上がりました。ememcached ver 0.2 です。
前回の ets のコードも残してあったり、設定ファイルでストレージを切り替え られるようにしているうちにコードが長くなってしまいましたので以下からダ ウンロードしておためし下さい。
ダウンロード: ememcached-0.2.tar.gz
前回からの差分は以下の通りです
- 設定ファイルの使用
- Mnesia を使用出来るようになった(etsも使えます)
- キャッシュデータのレプリケーション
Erlang で memcached を作ってみました。
先日、こちらの Erlang の世界ではmemcachedとか要らない を興味深く読ませて頂きました。
たしかにクライアント側も Erlang で書かれている場合、例えばキャッシュサー バーにアクセスを行う WEB アプリケーションも Erlang で書かれていれば Erlang のプロセス間通信を使用することで簡単にキャッシュサーバを実装する ことが出来そうです。しかし、WEB アプリケーションなど、全てのシステムを Erlang で書くにはまだ私にとって勇気が要る事なので TCP/IP で memcache プ ロトコルを喋る Erlang 版 memcached を作ってみました。 その名も ememcached です。
続きを読むErlang で付箋Webアプリケーションを作ってみました。
インターネットを見ていて、そのときの感想とかページの内容に対して思っ たことなんかを簡単に書き留めておけると便利かなと思い、適当なWebのペー ジ上にブラウザで表示したまま付箋をつけられる WEB アプリケーションを、最近流 行の Erlang 作成してみました。
付箋 Web の実験デモサイトはこちらです。
続きを読む