(2)マスター・ノード

(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: データ・ノード障害時のフェール・オーバー(左)、マスター・ノードの自動昇格(右)(クリックで拡大)

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30