Windows Azure ストレージの論文を読む

最近、Microsoft の以前の論文「Windows Azure Storage: A Highly Availability Cloud Storage Service with Strong Consistency (強力な一貫性機能を備えた高可用性クラウド ストレージ サービス)」を読みました。

Windows Azure ストレージは、以降 WAS と呼ばれます。WAS は、BLOB (ユーザー ファイル)、テーブル (構造化データ)、キュー (メッセージ送信) を含むマルチモード ストレージをサポートします。

1. WAS のアーキテクチャは次のとおりで、主に 3 つの層に分かれています。

9bd40b2379fc5366ddb60f576691e8d6.png

下から上へ:

1、ストリーム層:

この層は、複数のストレージ スタンプ内部サーバー間のデータ レプリケーションなど、ハードディスク上の実際のデータ ストレージを担当します。ファイルシステム層のようなものです。この同様のファイル システムは steam (内部の順次ストレージ ブロックはエクステントと呼ばれます) と呼ばれ、上位レベルのオブジェクトやセマンティクスに関係なく、ファイルの厚さ、責任などを管理します。データはこの層に存在し、上位パーティション層によってアクセスされます。同じストレージ スタンプ内で、ストリーム層とパーティション層が連携します。

ここで、ストレージ スタンプについて説明します。これは、ストレージ ノードの N ラックを含むストレージ クラスターを指します。各ラックには、障害冗長性のための冗長ネットワークとエネルギー ソースがあります。

各ストリームには、ストリーム層で維持される階層名前空間内の名前があり、ストリームは大きなファイル パーティション層のように見えます。

ストリーム レイヤーの唯一のクライアントはパーティション レイヤーです。パーティション レイヤーとストリーム レイヤーは共同で設計されています。単一のストレージ スタンプでは、5,000 万を超えるエクステントと 100,000 を超えるストリームは使用されません。したがって、SM ノードは 32 GB のメモリを使用してこれらのオブジェクトのメタデータを簡単に保存できます。

2、隔壁層

パーティション レイヤーは管理用に構築されており、高レベルのデータ抽象化 (Blob、Table、Queue) を理解し、スケーラブルなオブジェクト名前空間を提供し、トランザクションの順序付けとオブジェクトの強力な一貫性を提供し、ストリーム レイヤー データの上にオブジェクトを保存して管理します。オブジェクト データをキャッシュしてディスク I/O を削減します。

この層のもう 1 つの役割は、データをデータ スタンプに分割して保存することによって拡張を実現することです。すべてのオブジェクトには PartitionName があり、オブジェクトは PartitionName によってパーティション化され、さまざまなサーバーに分散されます。

上位層の Bolb、テーブル、およびキューは、PartitionName を通じてさまざまなサービスに分散されます。さらに、この層は、さまざまなオブジェクトのアクセス要件を満たすための自動負荷分散も担当します。

パーティション レイヤーはさまざまな種類のオブジェクトを格納し、特定のオブジェクト タイプ (BLOB、テーブル、キュー) のトランザクションの意味を理解します。

3、フロントエンド(FE)層

フロントエンド (FE) 層は、受信リクエストを受け入れるステートレス サーバーのセットで構成されます。リクエストを受信すると、FE は AccountName を検索し、リクエストを認証および許可し、(パーティション名に基づいて) パーティション層のパーティション サーバーにリクエストをルーティングします。システムは、PartitionName の範囲と、どのパーティション サーバーがどの PartitionName を提供するかを追跡するパーティション マップを維持します。FE サーバーはパーティション マップをキャッシュし、それを使用して各リクエストをどのパーティション サーバーに転送するかを決定します。また、FE サーバーは、大きなオブジェクトをストリーミング層から直接ストリーミングし、頻繁にアクセスされるデータを効率的にキャッシュします。

2. ストリーム層とパーティション層のレプリケーション ロジックを分離するのはなぜですか?

スタンプ内部レプリケーションは、ストリーム層の責任であり、さまざまなノードにデータの十分なコピーを保持します。さまざまなフォールト ドメインがスタンプ内のデータの永続性を維持し、ディスク、ノード、およびラックの障害の問題を解決します。スタンプ内のレプリケーションはストリーム層によって完全に行われます。この内部レプリケーションは主に大規模システムでよく発生するハードウェア障害に対する耐久性を目的としており、スタンプ間のレプリケーションは稀な地理的災害に対処するための地理的冗長性を提供します。

クロススタンプ レプリケーション。これは、クロススタンプ非同期レプリケーションを提供するパーティション層によって実行されます。このレベルの障害は比較的まれです。

これら 2 つの個別のレプリケーション レイヤーを作成するもう 1 つの理由は、これら 2 つのレイヤーのそれぞれが維持する必要がある名前空間です。

次の図に示すように、パーティション レイヤーの RangePartition は、ログ構造化マージ ツリーを使用して永続データを維持します。各オブジェクト テーブルの RangePartition は、独自のストリーム層内の一連のストリームで構成され、ストリームは特定の RangePartition にのみ属しますが、基礎となる範囲は複数のストリームによってポイントされる可能性があります。RangePartition の分割による異なる RangePartitions。各 RangePartition の構成は次のとおりです。各 RangePartition は一連のストリームで構成されます。

0859f6ce23a05e7193b04338b2791b5c.png

3. 概要:

このアーキテクチャは HBase に似ていますが、最大のハイライトは、ストリーム層がグローバル層ではなく、HDFS に似ていないため、スケーラビリティが向上していることです。

おすすめ

転載: blog.csdn.net/zNZQhb07Nr/article/details/122803344