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に選出された。

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

推薦する

3回の拒否と4か月の運営後のウェブサイトの困難な登録履歴

まず私の具体的な状況をお話ししますと、私は申請を気にしていなかったため、サイトを構築後すぐに海外に展...

hostvdsはどうですか?米国ダラスデータセンターの評価

Hostvds は、OpenStack クラウド アーキテクチャに基づくクラウド サーバー、NVMe...

面接でよく聞かれる JVM の重要なポイントは何ですか?

この記事はWeChatの公開アカウント「Java Geek Technology」から転載したもので...

マーケティングプロモーションがわからなくて困っていませんか? A5ベンチャーネットワークは618のトラフィック獲得をお手伝いします

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています今年の6月...

serverwala: 世界50の国と地域でVPSと専用サーバーを運営しています。ここでは人気のないサーバーを選択してください

serverwalaは2017年に設立されたインド企業です。主に世界50ヶ所のデータセンターでVPS...

Vultr - Alipay/日本/シンガポールおよびその他 15 のデータセンターへのアクセス、月額 2.5 ドル、Windows をサポート

VPSクラウドブランドVultr.comは、数年の運営を経て、ついにAlipay決済方法に正式に接続...

ウェブサイト構築はSEOを満たすサイトを構築するためのブレークスルーを求めています

SEO 最適化を満たすウェブサイトを構築することは、SEO 担当者の夢ですが、実現するのはそれほど簡...

2年経っても、Apple の有料リストはなぜまだ役に立たないリストなのでしょうか?

2年前の6月、AppleはWWDC 2017で「自らの皮を剥ぐ」決意を示した。App Storeは大...

道路網のデジタル化を基盤に、ファーウェイクラウドIoTが協調型インテリジェント交通を構築

11月4日から11月7日まで、第15回中国インテリジェント交通年次大会が深センで開催されました。 1...

SEO担当者がウェブサイトを正しく分析する方法について簡単に説明します

SEO担当者が転職する場合、ほとんどのウェブマスターは新しいウェブサイトと市場状況を体系的に分析し、...

dwidc: 米国CN2独立サーバー、CC攻撃をフィルタリングする多層ファイアウォール、450元、2*e5-2620/32gメモリ/240gSSD+1THDD/30M帯域幅

Dawang Data は現在、米国西海岸のサンノゼ データ センターにある独立サーバーを 50% ...

bettervps-512m メモリ KVM/20g ハードディスク/1T 月間トラフィック/月額 5 ドル

BetterVPS は、2011 年に Web デザイナーと開発者によって設立された ShoveHo...

データは分散されており、コンピューティングもそれに追いつく必要があります。

[[221573]] 1. 背景懸命な努力の末、Zhang Dapang と Bill は分散ファイ...

18歳の若者の写真がWeChat Momentsで話題に:テック界の巨人たちの若い頃の姿を見てみましょう

あっという間に2017年が過ぎようとしています。 2018 年の到来を歓迎するとともに、突然、今日の...

国内でお金を使って海外で利益を上げる?ローカルモバイルインターネットの国際化の動向

国内モバイルインターネットの国際化動向2012年グローバルモバイルインターネットカンファレンス(GM...