@twitterこの広告は、90日以上更新していないブログに表示しています。プロトコルに採用したRPCライブラリをリリースしました。使って簡単にRPCサーバーやクライアントを実装できます。プロトコルは既にkumofsやクラスタ管理ツール「clx」などで利用しており、高速なサーバーの実装にも便利ツールの実装にも、幅広く使えるシンプルなプロトコル仕様になっています。clxを使うと複数のサーバーをグループに分けて、同じグループに属するサーバーに対して同じコマンドを実行できます。コマンドは並列して実行されるので、ファイル転送(rsync)のような時間のかかるコマンドでも快適に使えます。clxのコアは汎用的なRPCサーバーで、RPC以外の機能はすべてモジュールとして実装されています。モジュールは起動時に登録できるほか、実行中でも追加でき、RPCを使ってネットワーク越しにモジュールを追加することもできます。PFIインターンに行ってきました。クライアントAPIはRPCの非同期呼び出しをサポートし、サーバーAPIはRPCの遅延リターンをサポートしています。本格的に非同期・イベント駆動なアプリケーションを書くことができるので、分散アプリケーションのモックアップを開発するのにもぴったりです。全体のモックアップを作り、次にサーバー側だけ本番コードに書き直していくように、モックコードと本番コードでプロトコルを変更せずに段階的に開発を進めていくことができます。RPCサーバーのテストコードを書くのにも便利でしょう。利用しているので、実用的にも十分使える速度で動かもしれません:-pプロトコルパーサにMessagePackを利用しているので、特に長い文字列を送受信する場合には高速に動作するはずです*1。そのような場合はCPUよりもネットワーク帯域がボトルネックになるはずなので、Rubyでも相当に高速なサーバーやクライアントを実装できるかもしれません。他にも、例えばサーバーをRubyで書いてクライアントをperlで書くなど、多くの言語の得意分野を活用しながら1つの分散システムを構築したい場合にも便利に使えると思います。msgpack-rpc以下のgemパッケージに依存しています。使った実用的なプログラムの例を載せておきます:このRPCサーバーは、リモートからBrainfuckで書かれたプログラムを投げ込むと、実行して結果を返してくれます。なんとOok!にも対応しています。3つの言語を切り替えることができます。Ook.END*1:文字列のデシリアライズはゼロ・コピーで行われるので、長さが長大になっても非常に高速にデシリアライズできます。コードは、全体で約2万行です。C++のバージョン0.5.0をリリースしました。PFIインターンに行ってきました。リトライはいつ成功するかリトライと冪等性のデザインパターン月別アーカイブ検索はてなブログをはじめよう!viverさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。