cagra: Reliable and Flexible Distributed Storage System

やっと開発が一段落したのでお知らせ。frsyuki氏(id:viver)との共同開発作品。

1000speakers:2の3次会で二人でひたすら組んでいたアレです。

Trac: http://nyaxtstep.com/trac/nxfs

概要

cagraは手軽に構築できる分散ストレージシステムです。

memcachedの様な手軽さで、信頼性のある分散ストレージを構築できます。

機能/特徴

  • zeroconf
  • Large Data Support
    • memcachedに比べ、大きなデータもきちんと取り扱う事ができます。
    • データごとのチェックサムを保持します。
    • 数百G〜Terabyteスケールのデータもサポートする予定
  • 可変信頼性
  • 確実なWrite(Put)
    • 一般的なデータストレージとは違い、cagraのWrite操作は要求された数のレプリケーションが成功することを保証します
    • オプションでこの挙動をはずすことも可能です。
  • 早いRead(Get)
    • DHT実装により、目的のデータを高速に見つけることができます。
    • 現在ではレスポンスよりもスループットを重視した実装になっています。
  • プラガブルなバックエンド
    • オンメモリストレージとしての利用の他、ファイルシステムバックエンド、Tokyo Cabinetバックエンド等を実装する予定

実装

  • サーバ:C++ + boost
  • クライアントライブラリ:ruby
    • C++や他のLL向けのbindingも用意する予定。
  • オンラインペアプロ on partty.org
    • あとで書く
  • libcoroutine + mpio::coroutineによるストレスフリーな非同期IO

実装状況

一通り効率無視の実装が出来上がったところ。

異常系の確認、ストレージバックエンドの充実、リファクタリング等まだやるべき事はたくさん。

導入/使い方

あとで書く。明日もうちょっとテストをしてから

追記:
d:id:nyaxt:20080426にα版リリースしました。