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

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

推薦する

最新の百度アルゴリズムによる外部リンク構築の原則の分析

今年も百度のアルゴリズムが更新され、ウェブサイトの独創性とユーザー体験がさらに強調されました。ウェブ...

経験上、短期的には業界価値よりも高い DSR スコアを達成することは確実ではないことがわかります。

3月の社内会議では、店舗の3つの動態スコアをどのように向上させるかについて全員が意見を述べました。い...

Baidu検索結果のURLコードルールの調査

Baidu と 360 の検索戦争は謎に満ち、刺激的です。今日、SEO ブログが Baidu の新た...

8684 の苦境の背景にある物語: 弱いチーム、盲目的な拡大、そして資金不足

微博アカウント@互联网那个点事によると、8684が所在する広州天局ネットワークテクノロジー株式会社は...

ユーザーの思考を活用してウェブサイトを構築し、独りよがりにならないようにする

最近では、ウェブサイト構築時に常に自分の考えで好きなウェブサイトを構築する人が多くいます。実は、この...

Pinduoduo: 田舎が都市を囲んでいる!

「田舎から都市を包囲する」、政治史で試されてきたこの真理は、Pinduoduo によって商業戦争に再...

大手メーカーの Redis 分散ロックはすべてこのように設計されていることがわかりました。

[[380081]] 1 ローカルロックよく使用されるロックは、JDK の組み込みロックである sy...

検索エンジンマーケティングのインプレッションとクリックスルー率を向上

実際、検索エンジンマーケティングは誰もがよく知っています。多くの人が毎日この仕事に携わっています。最...

さらに強力な機能!この効率的なコラボレーションガイドはTencent Meetingで入手できます。

テンセントカンファレンスの応用シナリオがさらに拡張されました。 10月13日、Tencent Mee...

なぜ私たちは素晴らしいウェブマスターになれないのでしょうか?

2014年、インターネットに関する記事は「ナンセンス」で溢れていましたが、いずれにしても、もうすぐ一...

ファーウェイクラウドと海底撈がクラウドディナーを開催、異国の地で春節のオンライン同窓会を開催

今年は特別な年です。感染拡大を受け、全国の多くの省が「新年は自分のいる場所で祝い、必要がない限り帰省...

ToBコンテンツ運用:制作・チャネルの総合的な見直し

私が勤務する会社は、業界情報技術およびソリューション サービスのプロバイダーであり、その垂直分野にお...

Weiboマーケティングをビジネスに活用する方法

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス1. 企業がWeiboマ...

天津のどのウェブサイト構築会社がベストですか?ウェブサイト構築会社を選ぶときは、いろいろ調べる必要があります

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

企業はセルフサービス Web サイト構築プラットフォームをどのように選択するのでしょうか?注目すべき問題

ウェブサイトの構築は、専門的なスキルを必要とする、時間と労力を要する作業です。ウェブサイトを構築した...