Grailsからkumofsを使ってみます
・適当な Grails アプリケーションを作成します
grails create-app kvstest
・memcachedクライアントのライブラリをインストールします
kumofs は memcached プロトコルを使用します。
今回は memcached の Java クライアントである Spymemcached
を使用します
上記サイトからJARファイルをダウンロードして lib フォルダへコピーします
・やりとりをするサービスを作成します
IBMのサイトにとても良いサンプルがあるのでこれを参考にします
上記サイトにあるサービスがほぼそのまま使えます
setのタイムアウトが600と指定されているのですが、kumofsでは0しか受け付けないため、0に変更します
*デフォルトの接続方式だと大量データでエラーが起きたので変更しました、そこらへんは次回に。
->Spymemcachedの問題でした、解決方法はこちらのエントリーで
memcachedClient.set(key, 0, value)
・適当なコントローラーを作成してget,setをテストします
本当に適当なので割愛、SSだけ
サクっと動きました!
次回はCouchDBとの速度比較なんかをやってみます
カスタム検索
2010年1月29日金曜日
2010年1月28日木曜日
kumofs その2・Macで起動させてみた
とりあえずインストール出来ましたので、早速起動してみましょう
まずはkumofsの構成から
・kumo-server
データノード
実データが保存される場所、最低1つ
・kumo-manager
管理ノード
kumo-serverの管理を行う、1or2台
・kumo-gateway
アプリケーション <-> kumo-serverのプロキシ
アプリケーションからは常にここを参照するため、裏のmanager,serverの構成がどんな風に変わっても問題ない
アプリケーションサーバに対して 1:1 で起動する
とりあえずオールインワンで動かしてみます
・管理ノードを起動
kumo-manager -v -l localhost
・データノードを起動
kumo-server -v -l localhost -m localhost -s /opt/kumo/kumodb.tch
・起動したノードを確認
kumoctl localhost status
hash space timestamp:
Thu Jan 01 09:00:00 +0900 1970 clock 0
attached node:
not attached node:
127.0.0.1:19800
not attached node に登録されていますね。
・起動したデータノードを実際に参加させます
kumoctl localhost attach
・もっかい確認します
kumoctl localhost status
hash space timestamp:
Thu Jan 28 14:42:43 +0900 2010 clock 152
attached node:
127.0.0.1:19800 (active)
not attached node:
・プロキシを起動します
kumo-gateway -v -m localhost -t 11211
・telnet で接続確認します
telnet localhost 11211
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying fe80::1...
telnet: connect to address fe80::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
・データを入れてみます
set hoge 0 0 3
foo
STORED
・データを取得してみます
get hoge
VALUE hoge 0 3
foo
END
hoge=foo というデータが入りました!
次回はGrailsと連携してみます
まずはkumofsの構成から
・kumo-server
データノード
実データが保存される場所、最低1つ
・kumo-manager
管理ノード
kumo-serverの管理を行う、1or2台
・kumo-gateway
アプリケーション <-> kumo-serverのプロキシ
アプリケーションからは常にここを参照するため、裏のmanager,serverの構成がどんな風に変わっても問題ない
アプリケーションサーバに対して 1:1 で起動する
とりあえずオールインワンで動かしてみます
・管理ノードを起動
kumo-manager -v -l localhost
・データノードを起動
kumo-server -v -l localhost -m localhost -s /opt/kumo/kumodb.tch
・起動したノードを確認
kumoctl localhost status
hash space timestamp:
Thu Jan 01 09:00:00 +0900 1970 clock 0
attached node:
not attached node:
127.0.0.1:19800
not attached node に登録されていますね。
・起動したデータノードを実際に参加させます
kumoctl localhost attach
・もっかい確認します
kumoctl localhost status
hash space timestamp:
Thu Jan 28 14:42:43 +0900 2010 clock 152
attached node:
127.0.0.1:19800 (active)
not attached node:
・プロキシを起動します
kumo-gateway -v -m localhost -t 11211
・telnet で接続確認します
telnet localhost 11211
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying fe80::1...
telnet: connect to address fe80::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
・データを入れてみます
set hoge 0 0 3
foo
STORED
・データを取得してみます
get hoge
VALUE hoge 0 3
foo
END
hoge=foo というデータが入りました!
次回はGrailsと連携してみます
kumofs その1・Macにkumofsを入れてみた
この記事は書きかけでMacがクラッシュしたため、当社比-120%の説明不足でお送りさせていただきます。
kumofsとは
・内側=KVS用のライブラリであるTokyoCabinet(mixi等で使用されている)を使用
・外側=グローバルスタンダードなmemcachedプロトコルでのやり取りが可能
・簡単にスケールアウトが可能なスケーラビリティを持ったKVS
という認識!
なんだかワクワクする構成なのでとりあえず試してみた
Macでのインストールをベースに書いていきます。
・gccのバージョンをあげる
kumofsのインストールにはgccの4.1以上が必要です
MacではXcodeをインストールする事によってgccがインストールされますが、デフォルトのバージョンは4.0.1です
4.2も一緒に入っているので、これを切り替えます
cd /usr/bin
sudo rm -rf cc gcc c++ g++
sudo ln -s gcc-4.2 cc
sudo ln -s gcc-4.2 gcc
sudo ln -s c++-4.2 c++
sudo ln -s g++-4.2 g++
・TokyoCabinetのインストール
最新のソースパッケージをダウンロードして
./configure
make
sudo make install
・MessagePack(C++API)
MessagePackはバイナリでシリアライズ可能な形式
JSONのバイナリ版みたいな感じ、JSONよりもシリアライズ/デシリアライズが高速で、容量も小さい
C/C++向けのソースパッケージをダウンロードして
./confifure
make
sudo make install
・MessagePack(RubyAPI)
gem install msgpack
でさくっと入るはずなんだけど何故かうまくいかなかったので、ソースからインストールする
Gitは http://code.google.com/p/git-osx-installer/ からダウンロード
git clone git://git.sourceforge.jp/gitroot/msgpack/msgpack.git
cd msgpack
cd ruby
ruby extconf.rb
make
sudo make install
・kumofsのインストール
最新のパッケージをダウンロードして
./configure
make
sudo make install
上記のインストールが終わっていれば正常にインストールされると思います
/usr/local/bin/kumo*
のファイルがあればOKです
次回は実際に起動をしてデータを入れてみます
kumofsとは
・内側=KVS用のライブラリであるTokyoCabinet(mixi等で使用されている)を使用
・外側=グローバルスタンダードなmemcachedプロトコルでのやり取りが可能
・簡単にスケールアウトが可能なスケーラビリティを持ったKVS
という認識!
なんだかワクワクする構成なのでとりあえず試してみた
Macでのインストールをベースに書いていきます。
・gccのバージョンをあげる
kumofsのインストールにはgccの4.1以上が必要です
MacではXcodeをインストールする事によってgccがインストールされますが、デフォルトのバージョンは4.0.1です
4.2も一緒に入っているので、これを切り替えます
cd /usr/bin
sudo rm -rf cc gcc c++ g++
sudo ln -s gcc-4.2 cc
sudo ln -s gcc-4.2 gcc
sudo ln -s c++-4.2 c++
sudo ln -s g++-4.2 g++
・TokyoCabinetのインストール
最新のソースパッケージをダウンロードして
./configure
make
sudo make install
・MessagePack(C++API)
MessagePackはバイナリでシリアライズ可能な形式
JSONのバイナリ版みたいな感じ、JSONよりもシリアライズ/デシリアライズが高速で、容量も小さい
C/C++向けのソースパッケージをダウンロードして
./confifure
make
sudo make install
・MessagePack(RubyAPI)
gem install msgpack
でさくっと入るはずなんだけど何故かうまくいかなかったので、ソースからインストールする
Gitは http://code.google.com/p/git-osx-installer/ からダウンロード
git clone git://git.sourceforge.jp/gitroot/msgpack/msgpack.git
cd msgpack
cd ruby
ruby extconf.rb
make
sudo make install
・kumofsのインストール
最新のパッケージをダウンロードして
./configure
make
sudo make install
上記のインストールが終わっていれば正常にインストールされると思います
/usr/local/bin/kumo*
のファイルがあればOKです
次回は実際に起動をしてデータを入れてみます
2010年1月27日水曜日
コンパイルされたClassファイルからJavaのバージョンを取得する
Javaのバージョントラブルがあったので、忘れないうちにメモ!
ココを参考にしました。
javap -v ClassFile | grep major
(クラスファイル名に .class はなしでOK)
で以下のように表示される(はず)
major version: 47
Javaのバージョンとの対比表
1.1 = 45.3
1.2 = 46.0
1.3 = 47.0
1.4 = 48.0
1.5 = 49.0
1.6 = 50.0
なので、上記の場合は 1.3でコンパイルされている、と。
Grailsって中のファイルとPluginでコンパイルされるバージョンが違う・・・Javaの参照の仕方が違うのかな
ココを参考にしました。
javap -v ClassFile | grep major
(クラスファイル名に .class はなしでOK)
で以下のように表示される(はず)
major version: 47
Javaのバージョンとの対比表
1.1 = 45.3
1.2 = 46.0
1.3 = 47.0
1.4 = 48.0
1.5 = 49.0
1.6 = 50.0
なので、上記の場合は 1.3でコンパイルされている、と。
Grailsって中のファイルとPluginでコンパイルされるバージョンが違う・・・Javaの参照の仕方が違うのかな
登録:
投稿 (Atom)