28. 贬颈惫别のイメージ図
Hive
メッセージを送信
事前処理
Flow
Management
クロール処理 Daemon
事後処理
次の処理を実行
Copyright Since 1999 ? GaiaX Co. Ltd. All rights reserved.
29. イベントの処理
package Honeybee::Hive::Event;
use Storable qw/freeze/;
use IO::Socket::UNIX;
sub trigger {
my ( $self, $data ) = @_;
my $serialized = freeze($data);
my $sock = IO::Socket::UNIX->new(
Peer => $conf->{hive}->{socket}
);
$sock->send($serialized);
$sock->close;
}
sub execute {
my ( $self, $event, $args ) = @_;
eval { $self->$event($args); };
carp $@ if $@;
}
10/14/2010 Copyright Since 1999 ? GaiaX Co. Ltd. All rights reserved. 29
30. メッセージの送信
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use Honeybee::Hive::Event;
my $event = Honeybee::Hive::Event->new;
$event->trigger({
event => 'prepare_crawl',
args => {
process_seq => 1,
}
});
10/14/2010 Copyright Since 1999 ? GaiaX Co. Ltd. All rights reserved. 30
31. メッセージの受信と実行
use Storable qw/thaw/;
use AnyEvent::Socket;
use AnyEvent::Handle;
use Honeybee::Hive::Event;
my $event = Honeybee::Hive::Event->new;
tcp_server '', $conf->{socket}, sub {
my ($fh) = @_;
my $handle;
$handle = AnyEvent::Handle->new(
fh => $fh,
on_read => sub {
my $buffer = $handle->rbuf;
my $data = thaw($buffer);
$event->execute($data->{event}, $data->{args});
}
);
};
AE::cv->recv;
10/14/2010 Copyright Since 1999 ? GaiaX Co. Ltd. All rights reserved. 31
32. イベントの処理
package Honeybee::Hive::Event;
use Storable qw/freeze/;
use IO::Socket::UNIX;
sub trigger {
...
}
sub execute {
my ( $self, $event, $args ) = @_;
eval { $self->$event($args); };
carp $@ if $@;
}
sub prepare_crawl {
...
$self->trigger({ event => 'crawl' })
}
10/14/2010 Copyright Since 1999 ? GaiaX Co. Ltd. All rights reserved. 32
33. 全体の流れ
Hive Bee
事前処理
EC2インスタンス
クロール処理
Flow
Management Crawler
EC2インスタンス
Daemon Daemon
事後処理 他のレンタルサーバ
Copyright Since 1999 ? GaiaX Co. Ltd. All rights reserved.