Distributed Ruby

Raspberry Pi2(以下ラズパイ)みたいな小型デバイスに、メインの処理を分散処理させると面白いだろうということで、標準で入っているRubyを使って、テストしてみました。

NSProxy / NSConnection
http://decode.red/net/archives/117

Remote Procedure Call
http://decode.red/net/archives/104

前に、Objective-CとCでも似たことをしましたが、Rubyは分散処理ライブラリdRubyがすぐ使える環境にあり、とても簡単に実現できます。
リクエストを処理するサーバ側をラズパイ、クライアント側はCygwin/Windows 8.1を使いました。

サーバ側に現在時間の取得と、メッセージの送信をするメソッドを用意。

サーバ側のめメソッドをライアント側から呼び出します。
リモートであることを意識させないところがいいです。
以下、実行結果。
druby_01
サーバを起動してからクライアントを実行します。
druby_02

パケットキャプチャ
(ラズパイに、tcpdumpインストール : apt-get install tcpdump)
druby_03
druby_04

安価なラズパイを数台使って重い処理を分散処理させるのも面白そうです。

参考: http://docs.ruby-lang.org/ja/1.8.7/library/drb.html