分散Key-Valueストア「kumofs」を公開しました!

分散Key-Valueストア kumofs を、本日オープンソースソフトウェアとしてリリースしました!

http://github.com/etolabo/kumofs

kumofsとは?

kumofs(クモエフエス)は、実用性を重視した分散データストアです。レプリケーション機能を備え、一部のサーバーに障害が発生しても動作し続けます。単体でも高い性能を持ちながら、サーバーを追加することで読み・書き両方の性能が向上する特徴を持ち、低コストで極めて高速なストレージシステムを構築・運用できます。


kumofsの大きな特徴は、システムの構成の簡単に変更できる点です。システムを止めることなく、簡単な手順でサーバーを追加したり復旧したりできます。アプリケーションには一切影響を与えません。

またkumofsは、広く利用されている分散キャッシュシステムの「memcached」と互換性のあるプロトコルを実装しています。多くのプログラミング言語向けに提供されているクライアントライブラリを使って、簡単にアプリケーションから利用することができます。


今日発売の『Software Design』では、kumofsのアーキテクチャや使い方について紹介しました。

kumofs は、サーバーの「数」を増やし ていくことで性能を高めていく、いわゆる「スケール アウト」が可能なシステムです。
もちろん、単に数を集めるだけでは役に立ちません。 サーバー同士が相互に通信しながら、連携して動作する必要があります。
そこで本章では、kumofsではどのようにして高いスケーラビリティを実現しているのかについて解説します。

このほかに Software Design 2月号では、kumofs以外のKey-Value Storeの特性や、技術的に突っ込んだ内容も分かりやすくまとめられているので、オススメです。mixiGREEなど、実際のWebサービスでのKey-Value Storeの運用事例も紹介されています。

kumofsのアーキテクチャ

kumofsは、サーバー同士が直接通信士合うP2P型のモデルに加えて、全体を統括する管理サーバーを組み合わせた、ハイブリッド型の設計を採用しています。kumofsのクラスタは、以下の3種類のプログラムで構成されます:

kumo-manager
全体の統括を行う管理サーバー。2台で冗長化構成をとることが可能。
kumo-server
実際にデータを保存するサーバー。レプリケーションも行う。
kumo-gateway
アプリケーションとkumo-serverの間を取り持つプログラム。アプリケーションを動かすサーバー上で1つずつ動かしておく。

kumo-gatewayは、memcachedと互換性のあるプロトコルを実装しています。このためアプリケーションからは「localhostで動作しているmemcachedサーバー」のように見えます。
これはサーバーの構成をいくら変更しても変わらないので、kumofsをアプリケーションから分離して管理やすくなります。


管理ツール

kumofsには上記の3つのプログラムの他に、クラスタの構成を操作したり、状態を監視したりするツールが含まれています。
サーバーの台数が増えても管理の手間が増えないように、サーバーの管理は管理サーバーを介して一括して行えるようになっています。

kumoctl
クラスタ全体の構成を変更したり、状態を取得したりするツール。データのバックアップを作成するときにも使う。
kumostat
サーバー1台1台の状態を取得するツール。様々な統計情報や保存されているデータの件数などを取得できる。
kumotop
topコマンドのように、すべてのサーバーの状態をリアルタイムで監視できるツール。

kumotopを使うと、↓このように負荷をモニタリングできます。

6台のサーバーを使ってkumofsのクラスタを構築して、それぞれサーバーでベンチマークツールを実行したものです。「QPS」の欄を合計すると、全体で65万request/secくらいのスループットが出ていること分かります。

kumofsの導入と検証

kumofsの最新のリリースは、ここからダウンロードできます:ダウンロード
詳しい使い方は、kumofs のドキュメント を参照してください。インストール方法やチュートリアル、障害時の対処方法などを記載しています。

kumofsに関する情報

kumofsに関する情報は、このブログで随時お知らせしていく予定です。
kumofsのプロジェクトサイトはgithubにあります:kumofs@github
最新の情報を得るには、Twitter@frsyuki#kumofs)が一番早いかもしれません。(ハッシュタグは #kumofs でいきましょう!)