memcachedによる新しいNoSQLソリューションであるmembaseの簡単な概要

MemBaseは、Webアプリケーションデータを保存するために最適化された、オープンで分散型の永続的なキーバリューストレージです。











主なシステム機能:





シンプル。 MemBaseクラスター内のすべてのサーバーは同じです。 サーバーのクローンを作成し、クラスターに参加させて、Webインターフェースの[再バランス]ボタンをクリックします。 他に何もする必要はありません。 このプロトコルはmemcachedと互換性があるため、多くのプラットフォームですぐに使用できます。 実際、システムはmemcachedコード+コードのかなり大きな部分を使用してデータをディスクに保存します。 サーバーのインストールとMemBaseの起動には約5分かかります



スピード。 MemBaseは、クラスターサーバー間でデータと操作要求の両方を自動的に配布します。 データはレプリケートされ、サーバーの一部に障害が発生した場合でも高可用性を確保します。また、対応するアクセス時間でストレージ内のメモリに自動的に移動されます(多くの場合、使用されたデータは最速のメモリに格納され、ディスクは低速になります)。 システムアーキテクチャ全体が最高速度に最適化されています。



柔軟性。 MemBaseは線形にスケーリングします。 サーバーは、操作中にクラスターに直接追加または削除できます。



信頼性 任意の数のシステムサーバー(レプリケーションカウントの値(変更可能)まで)はいつでも失敗する可能性がありますが、クラスターは引き続き動作します。 クラスターリーダーサーバーに障害が発生した場合でも、ユーザーの介入なしに、その代替サーバーが自動的に選択されます。



プロトコルによるmemcachedとの完全な互換性。 membaseと通信するために、アプリケーションはmemcachedライブラリとmemcachedプロトコルを使用します。



SET操作アルゴリズム



キー値を設定する操作を実行すると、次のことが発生します。

  1. アプリケーションは、キーと値の情報でmemcached APIにアクセスします
  2. APIはキーをハッシュし、このキーのクラスターマスターサーバーを定義します
  3. ネットワーク経由の要求は、このキーのマスターサーバーに送信されます
  4. マスターサーバーが操作を実行します
  5. マスターサーバーはクラスター内の他のサーバーに複製します
  6. 記憶された値をメモリにキャッシュします(memcachedなど)
  7. この値でキーを書き込む要求がまだ送信されていない場合、データは永続ストレージへの書き込み用にキューに入れられます
  8. 応答がアプリケーションに返されます




建築



最高レベルでは、MemBaseはData ManagerとCluster Managerの2つの部分で構成されています。 さらに、すべてのクラスターマシンにクラスターマネージャーが存在する必要はありませんが、除外するには、MemBaseを再構築する必要があります。



データ管理者






MemBase DataManagerは2つのポートを使用してクライアントと通信します。 memcapable APIのバージョン1.0のみをサポートするクライアントの場合は11211、memcapable API 2.0以上のより高度なクライアントの場合はポート11210。 このようなクライアントは、キー自体をハッシュして、マスターサーバーを決定できます。 クライアント1.0からのキーは、Moxiと呼ばれるコードを使用してハッシュされます。





MemBaseストレージシステムは、最も頻繁に使用されるデータが最も高速なメモリ(ランダムアクセスメモリ)に、最も頻繁に低速のメモリ(通常のディスク)に格納されるように設計されています。 システムに他のタイプのストレージ(SSD)がある場合、それらの優先順位を指定できます。 どのデータをどこに保存するかを決定するとき、LRUアルゴリズムが使用されます。



クラスターマネージャー






MemBase WebインターフェイスとRESTのようなインターフェイスがポート8080でハングしています(変更可能)。 membaseユーティリティはRESTリクエストを送信できます。 したがって、コマンドラインからクラスターを管理できます。



すべてのクラスターサーバーで同時に実行されているサービス:


ハートビートは、クラスターリーダーサーバーと定期的に情報を交換して、システム全体の状態に関する情報を取得するモニターです。

ProcessMonitor -Data Managerのステータスを監視し、障害が発生した場合にサービスを再起動し、すべてのHeartbeatをノックします。

構成マネージャー -クラスター構成(キーハッシュマップ、アクティブな複製要求、リバランスカードなど)を監視します。

グローバルシングルトンスーパーバイザー -クラスターリーダーサーバーを監視し、何か発生した場合はその再選に参加します。



一度に1つのクラスターサーバーでのみ実行されるサービス:


オーケストレーターのリバランス-クラスターのリバランスプロセスを直接制御します

Node Health MonitorまたはThe Doctor-すべてのクラスターマシンのハートビートプロセスから情報を収集し、それを処理して、それに応じて応答します(通知の送信など)

vBucketの状態とレプリケーションマネージャー -クラスター内のレプリケーションプロセスを監視します



よくある質問



Q:membaseの背後にいるのは誰ですか?

A: NorthScaleZynga (Farm Frenzy / FarmVilleは誰もが覚えていますか?)そしてNHN



Q:membaseは運用サーバーで使用されていますか?

A:Zyngaは、FarmVilleゲームをサポートするサーバーを実行するために使用します。 他の主要な実装はまだ知られていない。



All Articles