54行で分散KVSを実装する(レプリケーション機能付き)


Ruby  MessagePack-RPC key-value543816
KVS便


KVSkey % key


使


MessagePack-RPC for Ruby 使key-value*1
require 'msgpack/rpc'

class KVServer
  def initialize
    @hash = {}
  end

  def get(key)   # publicなメソッドがRPCで呼べるようになる!
    @hash[key] # @hashからkeyを取り出して返す
  end

  def set(key, value)
    @hash[key] = value  # @hashにkey-valueをセット
  end
end

# MessagePack::RPC::Server#listen(アドレス, ポート番号, インスタンス)
svr = MessagePack::RPC::Server.new
svr.listen('0.0.0.0', '3030', KVServer.new)
svr.run   # イベントループ開始

20



require 'msgpack/rpc'

cli = MessagePack::RPC::Client.new('127.0.0.1', 3030)
cli.timeout = 5   # 5秒でタイムアウトするように

# MessagePack::RPC::Client#call(メソッド, 引数...)
cli.call(:set, "key1", "val1")
puts cli.call(:get, "key1")


githubhttp://github.com/frsyuki/simple-kvs


1 & 
$ gem install msgpack-rpc    # MessagePack-RPC ライブラリ
$ gem install chukan    # 分散テストを自動化するライブラリ

$ git clone git://github.com/frsyuki/simple-kvs.git && cd simple-kvs
$ ./test.rb    # 自動テスト開始


MessagePack-RPC for Ruby KVS

*1:「分散KVS」は「書き込みの性能がスケールアウトするKVS」を意図しています。