分散ストレージエンジンテクニカルデモ α版リリース

概要

分散ストレージエンジンcagraのテクニカルデモ版です。

cagra概要についてはこちら:d:id:nyaxt:20080422

冗長性を持つ分散ハッシュテーブルを扱うことができます。ノードの動的追加/削除にも対応しています。(ただしノード削除後のputは一部未実装により不安定)

現時点の機能的にはmemcached + αな感じです。

ダウンロード

http://static.nyaxtstep.com/cagra/nxfs-alpha-release.tar.gz
hotfixだしました:d:id:nyaxt:20080427
随時アップデートしてるので最新版は:
http://d.hatena.ne.jp/nyaxt/searchdiary?word=%2a%5bcagra%5d%5brelease%5d

動作環境

で動作を確認しております。多分BSD系でも動くと思います。

今の実装だとノードごとに全ノードにTCPコネクションを張る仕様になっているので、10台ぐらいを目安にテスト環境を整えてもらえるといい感じです。10ノードでの動作試験は行っています。

追記:@kzk_mover氏が24ノード環境でのテストを行ってくれました。感謝!ということで、24ノードぐらいまでは大丈夫そうです。

ビルド

まず、依存ライブラリをインストールします。

  • boost 1.34.1
    • ヘッダだけでなくboost::thread, boost::unit_test_framework等の共有ライブラリファイルも必要です。

他の依存ライブラリであるlibcoroutine, mpio, kazuhikiは同梱されています。

あとはおなじみの

./configure --with-boost=/opt/local (MacPortsの場合)
make

で大丈夫です。

使い方

サーバ起動

各ノードで

./nxfsd 192.168.0.10:9999 (ノードのLAN内IPアドレス)

とします。これだけです。

デフォルトではマルチキャストアドレス239.33.22.11:9999を使って自動的にノードディスカバリーを行います。10秒おきにディスカバリーを行っているので、30秒程まってあげると確実です。

動作確認テスト
ruby ruby_client/blackbox_test.rb

出力が全部.で埋め尽くされればOKです。

クライアント

ruby製のクライアントライブラリが用意してあります。

こんな感じで使えます。簡単!

require 'ruby_client/client'

nxfs = NXFS::Client.connect("localhost", 8422)

nxfs["key"] = "value"

p nxfs["key"]

より詳しい使い方はruby_client/client_spec.rbも参考になると思います。

既知のバグ

  • いろんな名前がnxfsのまま
  • boostのリンクに失敗する
  • ノード切断直後のputが失敗する
    • これはputの一部の未実装に依るものです。
    • 切断直後ノードリストの同期がとれていない為、発生します。対応策は考案済みです。
    • http://nyaxtstep.com/trac/nxfs/ticket/55

Tracを参照してください:
http://nyaxtstep.com/trac/nxfs/report/1

IRC

興味がある方は是非


#nxfs (irc.freenode.net)

まで!!!