rgossip 0.1.0をリリースしました。
これは何?
Gossipプロトコルのライブラリです。
Cassandraみたいに「サーバを起動したら勝手にクラスタに追加される」みたいなことが可能になります。ただし、個々のノードのデータサイズは512KBくらいなので、ストレージ的な用途には全く使えないです。あくまでサーバ情報(IPアドレスとかメタ情報とか)の分散管理が目的です。
どうやって使うの?
こんなかんじで…
require 'rubygems' require 'rgossip' #RGossip.port = 20870 # default: 10870(udp) #RGossip.debug = true gossip = RGossip::Client.new ['10.150.174.161', '10.150.185.250'] # 初期ノード gossip.data = 'XXX' # 伝播するデータをセット gossip.start gossip.join
サーバの実装は含まれていません。
startするとまず初期ノードと情報交換して、そこから徐々に全体のノード情報を取得するようになります。
取得したデータの情報は以下のようなコードで参照することができます。
gossip.each do |address, data| puts "#{address}: #{data}" end
サーバのタイムアウトの初期値は10秒。
サーバが死んで10秒くらいたつと、自動的にクラスタから外されます。
さて、勉強会のネタを仕込まねば。。。