2009-01-01から1年間の記事一覧

MessagePack-RPC for C++ テクニカルプレビュー

バイナリシリアライズ形式 MessagePack をプロトコルに利用したRPCライブラリ MessagePack-RPC の、C++版を開発しています。以前に MessagePack-RPC for Ruby について 54行で実装する分散KVSや140行で作る分散リアルタイム検索エンジンを紹介しましたが、そ…

140行で作る分散リアルタイム検索エンジン(Twitter Streaming API対応)

マトモに使えるRPCライブラリ MessagePack-RPC for Ruby のバージョン 0.2.0 をリリースしました! 新たにコネクションプーリングの機能を追加しました。一度接続したコネクションを共有して使い回すことができます。コネクションを何度も張り直す負荷と遅延…

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

Ruby と MessagePack-RPC があれば、簡単なkey-valueストレージは簡単に作れます。54行で書けます(レプリケーションと負荷分散機能付き。サーバー38行、クライアント16行)。 簡単なKVSをベースにして、ログ集計や遠隔デプロイ、遠隔管理機能などの機能を追…

『クラウドの技術』

藤本さんや首藤さんにお誘いいただいて、コラムの執筆を担当させていただきました。 内容はkumofsについて、特に全体のアーキテクチャと耐障害性についての技術解説です。 『クラウドの技術』は、クラウド関連の要素技術について丁寧にまとめられていること…

Ruby で MessagePack-RPC

高速なオブジェクトシリアライズ形式 MessagePack をプロトコルに採用したRPCライブラリをリリースしました。 Ruby を使って簡単にRPCサーバーやクライアントを実装できます。 msgpack-rpc MessagePack-RPC プロトコルは既にkumofsやクラスタ管理ツール「clx…

PFIインターンに行ってきました。

8月1日から8月31日までの1ヶ月間、PFI夏期インターンに行ってきました。はてなインターンの 講義・課題・チーム 形式とは趣を異にして、個々人が何か1つのプロジェクトに取り組む方針で進みました。取り組むテーマは 新たに取り組みたい/今取り組んでいる …

MessagePack for C++ 0.3.7 リリース!!

怒濤のアップデートが続いております MessagePack for C++ です。 インストール時に Ruby が要らなくなりました。 プリプロセス済みのヘッダファイルをパッケージ化します。 符号付き整数のデシリアライズが失敗することがあるバグを修正しました!たとえば …

MessagePack for C++ 0.3.6 リリース!

MessagePack の C++ API をアップデートしました。 標準のシリアライザ・デシリアライザが増えました。std::deque, std::list, std::pair, std::set をシリアライズ・デシリアライズできます。 MessagePackのリリース一覧とダウンロード

MessagePack for C++ 0.3.5 リリース!

MessagePack の C++ API をアップデートしました。バイナリ・ソースコード両方で互換性は維持されています。 今回の目玉機能は、ユーザー定義クラスのシリアライザを簡単に作れるようになりました。 ↓こんな感じで使えます。 #include <msgpack.hpp> #include <string> class MyCla</string></msgpack.hpp>…

富豪的バックアップのススメ

間違ってrmしてしまったっ!! ということは誰しも一度はあると思いますが、そう言うときのためにもバックアップやバージョン管理は重要なわけです。 しかしバックアップは1時間に1回や1日に1回程度しか行わないので、たとえば5分前に変更したプログラム…

MessagePack for Python

id:methane さんによる MessagePack の Python バインディングができました! DSAS開発者の部屋:MessagePackのPython Bindingをリリースしました $ easy_install msgpack JSON や pickle と比べて圧倒的に高速で、さらに「まだまだ改善の余地がありそうです…

MessagePack RPC プロトコル

※2010-04-06追記:ここの内容は大体あっていますがもう古いです。MessagePack-RPCプロトコル仕様(ドラフト)と実装例 を参照してください。名前は(仮)です。現在クラスタ通信フレームワーク ccf というものを開発中で*1、MessagePack を使ったRPCプロトコ…

サーバーを実行中に追加できるmemcachedプロキシ(の未完成コード)

サーバー一覧を実行中でも変更できるmemcachedのプロキシサーバーを作ってみました。 相当にコンセプトだけです…とりあえず get (とget_multi) と set と delete はプロキシできます。 クライアントを待ち受けるコードは memcachedプロトコルのストリームパ…

MessagePack for Perl - 0.3.3 リリース

バイナリシリアライズ形式 MessagePack のバージョン0.3.3をリリースしました。 id:tokuhirom さんによる perl バインディングができました!(MessagePack for perl 書いた sv_catpvn を連続で呼びまくると激しく遅いので気をつける) 最新のリリースはここ…

Interopクラウドコン優勝は「えとらぼ」分散key-valueストレージ kumofs

InteropTokyo 2009 クラウドコンピューティングコンペティション(通称クラウドコン)は、我等がえとらぼチームが優勝しました! 実行委員・StarBEDプロジェクト・IBMの皆様を始め関係者の皆様、ありがとうございました。 プレゼンテーションムービーとポスタ…

MessagePack + Wavy で高速なRPCサーバーを書く「ccf」

先日、追記型オブジェクトストレージKastorを紹介しました。そこで「C++でクラスタアプリケーションを書くためのフレームワーク(ccf; Cluster Communcation Framework)を実装中」などなど書きました。 最近C++でサーバープログラムを書くときには MessageP…

追記型オブジェクトストレージ「Kastor」(pre-alpha)

Facebookで写真配信のために使われているストレージシステム「Haystack」に関する情報が公開されました。(Needle in a haystack: efficient storage of billions of photos)Facebookは最初はNFSを使っていたようです。しかし写真の1枚1枚をファイルとして…

統合ディスクレスネットワーク基盤システム

VIVERプロジェクトについての報告。(大学生の方々に於いては研究テーマの参考にでもなれば幸いです) 統合ディスクレスネットワーク基盤システムVIVERの当初の目的は、ネットワークをパッケージ化することでした。 ここで言う「ネットワーク」とはファイル…

Sun は Oracle に買収されますが

Oracle Buys Sun Overview and Frequently Asked Questions OpenSolaris.orgで進められている数々のプロジェクトは、ぜひ継続して欲しいものです。 "Sun" を偲びつつ。 Hadoop Live CD 仮想サーバー(Solaris Zone)を立ち上げて3ノードのHadoopクラスタを構…

いま分散システムが面白い理由

最近 クラウド という単語が流行していますが、「大規模な計算資源を低コストで提供してくれるトコロがあるらしいので、自前で持っていた計算資源を委託しちゃえば運用する手間も知識も要らないし、そもそもサーバーを買う費用を省けちゃうから嬉しい」とい…

エイプリルフールネタ:スケールアウトするMySQL互換RDBMS - Scale41リリース!

2009年4月1日は記念すべき日になったと確信しています。 内部に状態を持たないアプリケーションサーバーは、サーバーを足すだけで比較的簡単にスケールアウトすることができます。一方でACID特性が求められる用途に用いるRDBMSは、単にサーバーを足すだけで…

分散システムのテストを自動化する

複数のプロセスが相互に連携して動くシステムのテストを自動化したい。普通に書くとプロセスを起動したあと終了するまで待ってしまうので、複数のプロセスを同時に起動できなくて困ります。&を付けてバックグラウンドで起動させると、後で終了させたとき、ま…

MessagePack 0.3.1 リリース

バイナリシリアライズ形式MessagePackのバージョン0.3.1をリリースしました。 BigEndian環境で正しくシリアライズできなかったのを修正しました mswin32版のバイナリgemパッケージが壊れていたのを修正しました MessagePackのプロジェクトページ:http://msg…

MessagePack 0.3.0 リリース!

バイナリシリアライズ形式MessagePackのバージョン0.3.0をリリースしました。C API が大幅に充実、ストリームデシリアライザとメモリゾーンの効率化など。MessagePackのプロジェクトページができました:http://msgpack.sourceforge.jp/ シリアライズフォー…

memcachedプロトコルを使った非同期通知サーバー

アプリケーションA:keyXをgetする アプリケーションA:getが待たされる アプリケーションB:keyXにvalueXをセットする アプリケーションA:getが帰り、valueXを取得できる このように非同期に通知する機構をmemcachedプロトコルを使って汎用的に利用するこ…

memcachedプロトコルを使ったBlockingQueue

マルチスレッドプログラミングでよく使うBlockingQueueをmemcachedプロトコルを使ってネットワーク越しに使うことができるサーバーを実装してみました。 タスクをガンガンpushしていく一方で、ワーカースレッドならぬワーカーサーバーが1つずつpopして処理し…

Safari 4 より bash 4 が気になる

bash-4.0がリリースされたので早速試す。 $ sudo port sync $ sudo port deactivate readline $ sudo port install bash $ bash NEWS CHANGES autocd ディレクトリ名を入力だけでcdする。 $ shopt -s autocd $ / cd / cdspell cdするときディレクトリ名をよ…

Ruby Rev + MessagePack による分散プログラム

ネットワークプログラミングで面倒なのが、通信相手にバイト列しか送れないためプロトコルをシリアライズ方法から考えないといけないかったり、複数のクライアントに対応しようとするとスレッドやらイベント駆動やらを考えないといけないところで、なかなか…

Key Value Store勉強会に行ってきました by kumofsのひと

※分散Key-Valueストア「kumofs」を公開しました! 先日開催されたKey Value Store勉強会に行ってきました。私の発表資料は↓ここからダウンロードできます。 kvs-kumofs.pdf 合わせて読むと理解が深まるかもしれない: スマートな分散で快適キャッシュライフ …

ブラウザから1クリックでアプリケーションを起動する - Java Web Start 〜 JavaFX

festivoice.netはブラウザから1クリックで専用のクライアントソフトウェアが起動して、簡単に音声チャットが始められます。この1クリックでアプリケーションを起動する仕組み - Java Web StartはJavaに標準で搭載されているので、大抵の環境でインストールす…