C でリライトされてるジョブサーバー gearmand を試した
いつの間にやら http://gearmanproject.org/doku.php にて、gearman library 0.1 が C で書き直されてました。MySQL で有名な Brian Aker らが開発しているようです。
これは期待出来るかも?
追試 (2009-01-16T21:49:11+09:00)
0.02 がリリースしてたので試してみました。下のサンプルは正常に安定して動いてました。
一応報告。
インストール
CentOS 5.2 で試してみました。
libevent のインストール
CentOS の libevent は yum でインストールすると、1.1a と言うとんでもなく古いもので、これでは gearman library はコンパイル出来ません。従ってソースからインストールします。
$ cd /usr/local/src $ wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz $ tar xfz libevent-1.4.9-stable.tar.gz $ cd libevent-1.4.9-stable $ ./configure --enable-shared $ make && make install
とかこんな感じで。
gearman のインストール
こっちもソースからインストールします。
$ cd /usr/local/src $ wget http://launchpad.net/gearmand/trunk/0.1/+download/gearmand-0.1.tar.gz $ tar xfz gearmand-0.1.tar.gz $ cd gearmand-0.1 $ ./configure --enable-shared --with-event=/usr/local $ make && make install
試してみる
以前書いた奴をコピペした。
ソース
worker.pl
#!/usr/bin/perl use strict; use warnings; use Gearman::Worker; use Storable qw(thaw); use List::Util qw(sum); my $worker = Gearman::Worker->new; $worker->job_servers('localhost'); $worker->register_function( sum => sub { my $job = shift; my @args = @{thaw($job->arg)}; return sum @args; } ); $worker->work while(1);
client.pl
#!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Perl6::Say; use Storable qw(freeze thaw); use Gearman::Client; use Gearman::Task; my $client = Gearman::Client->new; $client->job_servers(qw|localhost|); my $args = freeze([1..9]); my $result_ref = $client->do_task("sum", \$args, {}); say dump($$result_ref);
試してみる
gearmand を起動してみる。今回はテスト目的なので -v つけておく。
$ /usr/local/bin/gearmand -v
でどうなったかと言うと、
Method for libevent: epoll Listening on port 7003 127.0.0.1:49696 Connected (1 current, 1 total) 127.0.0.1:49697 Connected (2 current, 2 total) 127.0.0.1:49697 Disconnected Segmentation fault
って感じ。client のコード一回実行して結果が返ってきたんだけど、結局 Seg って落ちた><
まだまだ安定版とは言えなさそうですね。
ちなみに Client Library も提供されてるので C や C++ で worker や client を記述する事が可能みたいです。
安定してきたら面白そう。
そういえば、Storable じゃなくて JSON 形式でデータ扱えばいいのかな。そっちのがポータブルですよね。
とりあえず皆、Q4M 使っとけって事かなw