360度自社開発の分散型大規模小型ファイルストレージシステムの設計と実装

360度自社開発の分散型大規模小型ファイルストレージシステムの設計と実装

近年、同社の事業は急速に発展し、数多くのビジネスシーンで画像、文書、音声、動画などの非構造化データが大量に生成されています。特に、モバイルインターネット、AI、IoT技術の成熟とアプリケーション市場の本格的な勃興により、多数のスマートハードウェアデバイスからさらに大量の非構造化マルチメディアデータが生成されるようになります。これほど大量の小さなファイルをどのように保存するかという疑問が生じます。従来のストレージベンダーが販売するストレージサービスは高価であり、パブリッククラウドベンダーには特定のビジネスシナリオに合わせたカスタマイズされた変換機能が欠けています。そこで、私たちは独自の小規模なファイルストレージ サービスを開発することにしました。

NebulasFs の紹介

小さなファイルストレージ技術に注目している学生であれば、Facebook が発表した、大規模な小さな画像ストレージシステムである Haystack に関する論文 (Finding a Needle in Haystack: Facebook's photo storage) を読んだことがあるかもしれません。 Haystack は、複数の小さなファイルを 1 つの大きなファイルにマージしてファイル数を減らし、多数の小さなファイルを保存する場合の通常のファイル システムの問題を解決します。つまり、ファイルのメタデータ情報を 1 回で複数回読み取る必要があること、ファイル アクセスの「ロング テール」効果により大量のファイル メタデータをキャッシュすることが困難になることです。 Haystack の論文を参考にして学んだ教訓に基づいて、私たちは独自の分散型小規模ファイル ストレージ システムである NebulasFs を開発しました。これは、数百億の小さなファイルを保存できる、分散型、高可用性、高信頼性、永続的な小さなファイル ストレージ システムです。

建築デザイン

分散役割の観点から見ると、マスターとデータノードという 2 つの主要な役割に分けられます。

このうち、マスターはクラスターのメタデータの保存、クラスターの管理、タスクのスケジューリングなどを担当します。そのデータの一貫性は現在、外部の一貫性ツール (ETCD など) によって実現されています。マスターはプライマリであり、複数のバックアップがあります。

データノードはユーザー指向であり、主にデータの保存とユーザー要求のルーティングおよび配布を担当します。 Datanode ノードには、ストレージ ボリューム ファイルとプロキシ モジュールが含まれます。次の図に示すように:

ユーザーのリクエストは任意の Datanode ノードに送信できます。ノードのプロキシ モジュールは、ユーザーの要求を適切なデータ ストレージ ノードにプロキシし、ユーザー構造に返します。複数のレプリカへの書き込み要求の場合、プロキシ モジュールは、すべての要求が成功して返されるまで、レプリカの一貫した順序に従って並列に書き込みます。読み取り要求の場合、最初のレプリカのみが読み取られます。

NebulasFsの機能

ストレージ容量、一貫性、可用性などの側面を改善し、大規模で小さなファイル ストレージのニーズを満たすために、Haystack の論文と比較して、インターフェイス サービスと分散アーキテクチャの最適化をさらに進めました。主に次の側面に反映されています。

1. ユーザーに提供されるサービスインターフェースはシンプルで軽量、そして普遍的である

NebulasFs は、よりシンプルなプロトコルを持ち、より使いやすい Http Restful インターフェースをユーザーに提供します。ユーザーは、簡単な PUT、GET などの操作を通じてファイルをアップロードおよびダウンロードできます。ユーザーはカスタマイズされたクライアントを使用する必要がないため、より軽量になります。

2. ユーザの要求による完全なプロキシと自動ルーティング

Datanode にはデータ保存機能があることはわかっていますが、Datanode の数が多い場合、どのデータがどの Datanode に保存されているかをユーザーが知りたい場合は、まずマスターからデータ ルーティングのメタデータを取得する必要があり、ユーザー要求の複雑さが増します。ユーザーのリクエストを適切なデータノードに自動的にプロキシしてルーティングするリクエスト プロキシおよびルーティング モジュールをデータノードに追加し、ユーザーが 1 回のリクエストでデータを取得できるようにしました。

3. マルチテナント、相互影響を回避するためのテナントリソース分離メカニズムの提供

クラスターによって提供されるサービスは、複数のユーザーによって使用される場合があります。相互干渉を避けるために、NebulasFs はリソース プールの概念を抽象化します。異なるリソース プールは、異なるハードウェア上に物理的に分散されます。リソース プールはマシン次元内で交差しないため、リソースの分離を効果的に実現できます。異なるユーザーを異なるリソース プールに分散したり、リソース プールを共有したりできるため、管理者は事前に計画を立てる必要があります。リソース プールにはさまざまな種類があり、その範囲はデータ センター間、キャビネット間、またはキャビネット内になる場合があります。さまざまな物理ハードウェアのパフォーマンスとデータ コピー ストレージの冗長性要件に応じて、さまざまな種類のデータ ストレージ要件も事前に計画する必要があります。

4. カスタマイズ可能なデータマルチコピーストレージソリューション、データ損失なし、複数の障害ドメインの組み合わせ

可用性を提供し、書き込まれたデータが失われないようにするために、ファイル データは通常、災害復旧用に 1 を超える数のコピーで保存され、回復不可能なハードウェア障害が発生した場合にデータの可用性を確保し、後でコピーの数を自動的に補います。重要度レベルや障害タイプのレベルが異なるデータによって、使用するストレージ ソリューションのレベルが決まります。 NebulasFs は、データ センター、キャビネット列、キャビネット、マシン、ディスクの 5 つのレベルの障害ドメインを事前定義します。高可用性データ ストレージが必要な場合は、データ センター全体が使用できない場合に別のデータ センターのデータを使用できるように、データ センター間の災害復旧コピーを使用します。要件がそれほど厳しくないデータの場合、ディザスタリカバリレプリカ戦略を実装するときにキャビネット間ストレージを選択して、エッジスイッチに障害が発生した後でもデータを利用できるようにします。

NebulasFs 障害ドメインとリソース分離プールの関係は次のとおりです。

S はサーバーを表し、R-1 と R-2 はデータセンター DC-1 に属する 2 つのキャビネット、R-3 と R42 はデータセンター DC-2 に属する 2 つのキャビネットです。プール 1 はキャビネット障害ドメイン全体のリソース分離プール、プール 2 はデータセンター障害ドメイン全体のリソース プール、プール 3 はサーバー障害ドメイン全体のリソース プールです。

Nebulas の障害ドメインの論理的および物理的な概念は、次のとおりです。

上部は論理的概念であり、下部は物理的概念です。ユーザーとリクエストは論理的な概念に関連し、管理と操作は物理的な概念に関連します。ユーザーは 1 つ以上のコレクションに対応し、コレクションは複数のボリュームに対応し、各ボリュームは DataNode に保存されるファイルです (レプリカの数と同じ数のファイルがあります)。一般的に、DataNode はサーバー上のハードディスクに相当します。サーバー上には複数の DataNode が存在します。サーバーの上位層は、ラック、ラックの列、およびデータ センターです。

5. 自動拡張と再バランス調整

容量拡張は、ストレージ容量不足による容量拡張と、リクエストトラフィックの過負荷による容量拡張に分けられます。容量不足による拡張後に再バランスをとる必要がないため、リクエストトラフィックが大量になったために拡張した後にのみデータの再バランスをとる必要があります。再バランス調整は、災害復旧レプリカの数などの戦略に従って実行されます。戦略に従って追加されたデータノードはマスターに自動的に登録され、マスターは事前に決められたルールに従ってリバランスを調整します。

拡張シナリオは 2 つあります。

6. 自動コピー修復と完了

一定規模のクラスター障害が頻繁に発生する可能性があります。当社のシステムでは、障害は主にデータのコピーの損失を意味します。データのコピーを手動で完了するのは大きな作業負荷となるため、自動コピー完了は比較的重要な機能となっています。自動レプリケーションでは、不足しているレプリカを検出し、レプリケーションを調整するためにマスターに依存します。完了プロセス中、すべてのデータ コピーは読み取り専用になります。プロセスは次のとおりです。

自動コピー全体は以下のように完了します。

ハードディスクの障害により、データ ノード 2 および 3 上のボリューム 3 および 6 のコピーが失われます。自動入力により、データ ノード 4 と 5 上のこれら 2 つのコピーが自動的に入力され、クラスターに追加されます。

まとめ

NebulasFs は、社内で約 1 年間使用されてきました。さらに、NebulasFs は、大きなファイルを保存するための別のオブジェクト ストレージ (AWS S3 プロトコル) のバックエンド ストレージとしても機能します。

より多くのビジネスが追加されるにつれて、NebulasF はビジネスの成長をより良く保護するために改善され続けます。

[この記事は、51CTOコラムニスト360 Technology、WeChatパブリックアカウント「360 Technology(id: qihoo_tech)」からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  テンセントの最新のデータベース研究成果が、世界トップのデータベースカンファレンスであるSIGMODに選出された。

>>:  マイクロソフトとオラクルの提携:蜜月は甘いが、破局には注意

推薦する

分散データサービスについてお話しましょう

ターゲットデータ ストレージ リソースは、システムの最も重要なコンポーネントです。特に分散分野では、...

企業におけるコンテナ技術の導入に関する 9 つの重要な課題

[51CTO.com からのオリジナル記事] コンテナ テクノロジーは現在、幅広い注目を集めており、...

5月のIDCブランド注目度ランキングトップ10:HiChinaブルーコートが1位と2位を獲得

IDC Review Network(idcps.com)は6月9日に次のように報じた。IDC Re...

分散システムのコードレビューチェックリスト

マイクロサービス アーキテクチャは、現在ソフトウェア エンジニアリング コミュニティで広く採用されて...

ブランドをマーケティングする9つの方法

よく買い物に行く人なら、ネットで有名なミルクティーショップの前にいつも行列ができていて、時には行列の...

AWS、企業のデジタル変革を加速するため中国のパートナーエコシステムを拡大

アマゾン ウェブ サービス (AWS) は、2020 年 9 月 9 日に開催された AWS パート...

Weiboマーケティングのメリットとデメリットについて

インターネットの急速な台頭と発展に伴い、新しいインターネット産業も急速に発展しています。Weiboの...

inceptionhosting - 月額 7.27 ドル - 2GB RAM XEN、素晴らしい

inceptionhosting は評判が良く、VPS の品質が保証されているサービス プロバイダー...

快手八卦についての噂: TensorFlow と PyTorch の並列ボトルネックを打破する分散トレーニング フレームワーク

最近、Kuaishou と ETH Zurich はオープンソースの分散トレーニング フレームワーク...

コンテンツ マーケティングにおける「コンテンツ」という言葉の意味は何でしょうか?

コンテンツ マーケティングは、よく知られている概念であると同時に、あまり知られていない概念でもありま...

necs 768M KVM 4.3 ポンド/月

necs.co.uk (英国登録会社 VAT 番号 927207819、逃げる心配はありません) で...

Baidu に必要なのはユーザー エクスペリエンスだけなので、これらの SEO 要素は依然として意味があるのでしょうか?

Baidu が発表した声明を見ると、ほとんどすべての重み調整と不正行為防止メカニズムはユーザー エク...

Dianpingのオープンプラットフォームに対する開発者の見解:歓迎するが拒否も

数か月にわたる準備を経て、Dianping はプラットフォーム (developer.dianpin...

民間医療機関は自己啓発だけに頼らない

民間医療機関は我が国の医療産業における新たな勢力であり、我が国の医療改革の潜在的な原動力です。国が民...