The Schwartz plugin by yokohama.pm #3

13

Click here to load reader

description

yokohama.pm #3 masartz prezentaion

Transcript of The Schwartz plugin by yokohama.pm #3

Page 1: The Schwartz plugin by yokohama.pm #3

TheSchwartz の拡張

@masartz

Page 2: The Schwartz plugin by yokohama.pm #3

Agenda

• 自己紹介• TheSchwartzの使用時に・・・• 今回やってみた拡張

Reload Parallel Log Manager

• もっとやりたいこと PreData

Page 3: The Schwartz plugin by yokohama.pm #3

自己紹介

• 名前:星野 将 (ホシノ マサル )• id : masartz(マサルツ )• yokohama.pmは皆勤賞です• 前回までは「 filsturas」とか名乗ってました• 「ネコケーエーケ」が読まれなかった

nekokakさんに読めないと言われ改名• 所属: SNSの中の人• use base qw/ bonnu kazeburo lyokato /;

Page 4: The Schwartz plugin by yokohama.pm #3

TheSchwartz の使用目的と実績

• NW的に分離されている• 負荷的に処理が詰まる可能性• TheSchwartz?ナニソレ、美味しいの?• 使ってみるとちょいちょい問題が

Page 5: The Schwartz plugin by yokohama.pm #3

今回やった拡張 - Reload• worker プロセスは起動しっぱなし

• が、 use しているモジュールは改修が入る

• 再読込されない→不具合動作 orz• TheSchwartz::Worker::Plugin::ModuleReload• ModuleReload をラップしただけ

• 参考: HTTP::Engine::Plugin::ModuleReload– yappo++

• ちなみにプロセスを kill すればいいのでは?

• こればっかりは弊社内の運用体制に依る

Page 6: The Schwartz plugin by yokohama.pm #3

今回やった拡張 - Parallel• ジョブを作るたびの pl作成手間削減

– Package main 部分以外は Name Space以外一緒• 共通部分もまとめられてややスッキリ• 中身は Parallel::Prefork

– kazuho ++• 実装面はこちらをかなり参考に

– tokuhirom++

Page 7: The Schwartz plugin by yokohama.pm #3

今回やった拡張 - Parallel※before

package MyApp::Worker1;use base qw/ TheSchwartz::Worker /;sub work{ my ( $class , $job ) = @_; # blah blah blah}

package main;use TheSchwartz;my $client = TheSchwartz->new( ・・・ );$client->can_do(‘MyApp::Worker1’);$client->work();

Page 8: The Schwartz plugin by yokohama.pm #3

今回やった拡張 - Parallel※after

use TheSchwartz::Worker::Plugin::Parallel; my @classes = qw/ MyApp::Worker1 MyApp::Worker2 /;TheSchwartz::Worker::Plugin::Parallel->work( \@classes );

Page 9: The Schwartz plugin by yokohama.pm #3

今回やった拡張 – Log• TheSchwartz のログ管理

• エラー時に error テーブルにインサートのみ

• でも error テーブルの構成もいけてない

• 簡単でいいので、処理結果が欲しいよぅ

• とりあえずファイル出力だけ実装・運用

• 汎用的でない部分が残ってる

• Log::Dispatch とか使ってみたい

Page 10: The Schwartz plugin by yokohama.pm #3

今回やった拡張 – Manager• Reload , Parallel , Log のメソッドを包含

• Manager 自体が TheSchwartz::Worker を継承

• これまで use base qw/TheSchwartz::Worker /; としてたところを置き換える

• 拡張メソッドを持った、 worker のベースクラス

Page 11: The Schwartz plugin by yokohama.pm #3

もっとやりたいこと

• PreData• 社内では実装済み• 下準備で DBに必要情報を格納 (YAML形式 )

+-----------+------------------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------------+------+-----+---------------------+-------+ | id | bigint(20) unsigned | | PRI | 0 | | | data | text | | | | | +-----------+------------------------+------+-----+---------------------+-------+

• ジョブの push時に idを渡す• workerで data内容を取得・解析して処理実行

Page 12: The Schwartz plugin by yokohama.pm #3

まとめ

• 全体的に他力すぎる件• 今回のモジュール群• google code• codereposにもコミットします><• 今回の内容に関するエントリー• http://d.hatena.ne.jp/masartz/20081118/12269870

31

Page 13: The Schwartz plugin by yokohama.pm #3

ご清聴ありがとうございました!