PR

NOSQLの新顔、分散KVS「okuyama」の機能

2011年2月10日(木)
岩瀬 高博

(2)マスター・ノード

マスター・ノードは、okuyamaへのクライアント・インタフェースを提供するとともに、データ・ノードの管理を行います。

クライアントが直接接続するインタフェースを提供

クライアントのプロトコルの違いを吸収するのも、このノードの役割です。現在対応しているプロトコルは、以下の通りです。

  1. オリジナル

    okuyama専用のプロトコル。okuyamaの持つすべての機能を高速に利用可能。

  2. memcached

    キー・バリュー・ストアの中で最もよく利用されている、memcachedライブラリのプロトコル。アスキー・プロトコルのみに対応しており、現在は以下のコマンドを利用可能です。

    • get
    • set
    • add
    • delete
    • gets
    • cas
    • incr
    • decr

    flagおよびexpireTimeも利用できます。ただし、memcachedプロトコルで受信したコマンドをokuyama用に内部で変換しているため、処理能力は専用プロトコルよりも低下します。

  3. http

    httpプロトコル。GETでのデータ取得に限って利用できます。

データ・ノード管理

データ・ノード管理の機能として、データ入出力、データ・ノードの動的追加、死活管理、障害時のフェール・オーバー、自動リカバリを行います。

  1. データ入出力

    複数のサーバーでデータを分散管理する場合、ユーザーからリクエストのあったデータをどのサーバーが保持しているのかを知る必要があります。分散されたデータを管理する方法には、大きく以下の2種類があります。

    • メタサーバー方式:
      すべてのデータの保存先を、何らかの方法で記録し管理します。
    • アルゴリズム方式:
      保存依頼のあったデータを、何らかのアルゴリズムを使って、常に特定の値に変換します。変化した値を使って保存先を特定します。

    okuyamaは、アルゴリズム方式を採用しています。サポートしているアルゴリズムは、ModとConsistentHashingの2種類です。Modアルゴリズムは分散方法がシンプルですが、ノードの変更に弱いという特性があります。ConsistentHashingは、アルゴリズムは若干複雑になりますが、ノードの追加に強いという特性があります。

    あらかじめデータ数やサーバー数が限定されている場合はModでシンプルに分散し、データ数の増減が予想できない場合はConsistenteHasingを採用するのがよいと思います。

    アルゴリズムを用いてデータ保存先を決定した後は、実際にデータ・ノードに対するデータ保存や取り出しを行います。この際、同時に同じデータを保存するデータ・ノードを最大3台まで設定できます。

  2. ノードの動的追加

    データ・ノードを追加することで、処理能力を向上させ、保存容量を拡大できます。ノードを追加すると、追加ノードに対して、従来のノードのデータの一部を再配置する処理が自動的に行われます。

    データの再配置中でも、データの取得、更新、削除は、すべて行うことができます。この仕組みは、データの移行中に、ノード追加前と追加後の2つのノードの配置表を用いて実現しています。マスター・ノードに関しても、同様に無停止で追加することが可能です。

  3. データ・ノードの死活監視、フェール・オーバー、オート・リカバリ

    データ・ノードの管理は、マスター・ノード内の代表ノードが担当して実施しています。一定間隔でPingによる死活監視を実施し、状態を監視しています。応答がない場合は停止ノードとしてマークし、その情報を別のマスター・ノードに伝播します。

    データ・ノードが復旧した場合は、リカバリ処理を実施します。この際も、生存しているノードに処理を行わせることで、データ・アクセスが可能です。また、マスター・ノードの障害で代表ノードが停止した場合は、ほかのマスター・ノードが自動的に代表ノードに昇格します。

    図2-3-1: データ・ノード障害時のフェール・オーバー

    図2-3-2: マスター・ノードの自動昇格

    図2-3: データ・ノード障害時のフェール・オーバー(左)、マスター・ノードの自動昇格(右)(クリックで拡大)
株式会社神戸デジタル・ラボ

2006年神戸デジタル・ラボに入社。企業内業務アプリケーション開発に従事。
2008年末から大規模ECサイトのアプリケーション、インフラ周りの運用に従事。
2009年末に分散Key-Value Store”okuyama”をオープンソースとして公開。
2010年から各都道府県で開催されるオープンソースカンファレンスへの出展やセミナー登壇、「NOSQL afternoon in Japan」や、「JavaCloud Meeting Kansai」での登壇といった”okuyama”の普及活動の傍ら、”okuyama”を使ったアプリケーション開発などに従事し、現在に至る。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています