忍者ブログの元開発者が送る愛と感動と涙のスペクタクル。プログラムの開発日誌やタダの日記です。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こんにちは。水野です。
今日はRTMPとRTMFPとKamaitachiに触れてみました。
社内のツール用にRTMPを使いたいなと思ったのが発端。
Alu君曰く、RTMFPというものがあるという話。
簡単?にp2pがFlash Player上で出来てしまうらしい。
早速調べてみたのです。
参考にしたのはこの辺
blog.katsuma.tv
Stratus Sample Application
うん。なんか面白そうなのです。
・・・でも、今のところp2pよりもクライアントサーバータイプが良かったので、一通り遊んでから次へ。
まずはサーバーをどうしようと思って探していたところ、KAYACさんがperlで動作するKamaitachiなるものを出しているらしい。
Perlを触るのは実に4,5年振りなのです。
さっぱり意味が解らないまま必要な物をCPANからバシバシっと入れて、なんとか実装。
実際に動かしてみました。
出来ることはこんなこと。
同時接続通信(チャットとか)
ストリーミング(ライブ映像とか音声とか)
いいですね。Kamaitachi。
ソースもシンプルで素敵なのです。
サンプルだけでお腹いっぱいになっちゃいました。
これを使ってあんなことやこんなことが出来ちゃうといいなーって思いました。
まずはPerlを勉強しなくちゃ。
こんにちは。misneyです。
昨日は初めてtokyo tyrantを使ってみました。
tokyo tyrantは、tokyo cabinetを使って上手い具合にレプリケーションしてくれるような物らしいです。
memcachedみたいに、落ちたら消えるってのは嫌!でも高速キャッシュを使いたいなんて場合に使うんですかね?
tokyo cabinetはハッシュ表・Btree・固定長の3種類の構造を選べるDBMのようなライブラリです。
こんな具合に高速らしい。
今回、僕はハッシュ表を使いました。tchですね。tcb、tcf、*の4種類から選べるみたい。
実際早いのはtcf(fixed)らしいけど・・・今回はハッシュで。
tokyo tyrantはmemcachedプロトコルを実装しているので、memcached系のクラスを使うことが出来ます。
<?php
$obj = new Memcache();
$obj->connect('localhost',1978);
echo $obj->get('key');
?>
こんな風に。
とても楽チンなのです。
以下、覚書。
1.tokyo cabinetをインストール
wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.3.15.tar.gz (最新版はここ)
tar -zxvf ./tokyocabinet-1.3.15.tar.gz
cd ./tokyocabinet-1.3.15
./configure #ここで失敗。zlibとbzipがなかった。
yum install zlib-devel bzip2-devel bzip2-libs
./configure && make && make install
2.tokyo tyrantをインストール
wget http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.7.tar.gz (最新版はここ)
tar -zxvf ./tokyotyrant-1.1.7.tar.gz
cd ./tokyotyrant-1.1.7
./configure && make && make install
3.ホットスタンバイで動かす
詳しい説明は平林さんがここで書いてます。
ttserver -dmn -log /path/to/tta.log -port 1978 -ulog /path/to/ulog -sid 1 -mhost localhost -mport 1979 -rts /path/to/mastera.rts /path/to/mastera.tch
ttserver -dmn -log /path/to/ttb.log -port 1979 -ulog /path/to/ulog -sid 2 -mhost localhost -mport 1978 -rts /path/to/masterb.rts /path/to/masterb.tch
4.PHPで繋ぐ
<?php
$obj = new Memcache();
if(!$obj->connect('localhost', 1978)) {
if ($obj->connect('localhost', 1979)) {
error('繋がらんよ');
}
}
$obj->set('key', 'データだお');
echo $obj->get('key');
?>
こんな感じだったと思います。
ちなみに、ファイルシステムはext3でnoatimeとwritebackモードに設定。
orderedモードよりwritebackの方が早いらしいのと、それほどクリティカルなサービスではないのでwritebackにしてみました。
そういえば、ハッシュDBで、早そうなのがありました。
memstored
こちらもいつか使ってみたいところです。
引用ページ
mixi->{engineers_blog}様 http://alpha.mixi.co.jp/blog/
古橋定之の日記様 http://d.hatena.ne.jp/viver/
Drk7.jp様 http://www.drk7.jp/MT/
mod_disk_cacheを使った場合
Requests per second: 745.71 [#/sec] (mean)
Smartyのキャッシュ機能を使った場合
Requests per second: 223.36 [#/sec] (mean)
何も使わない場合
Requests per second: 32.82 [#/sec] (mean)
画像RSS
おまとめボタン
カテゴリー
忍者カウンター
忍者ビジター
忍者アド
ブログ内検索
リンクなどなど
最新コメント
プロフィール
アーカイブ
フリーエリア
忍者ツールズプロフィール