分散システム分散システムは、オリジナルの CORBA から EJB、Web、SOA へ、クラスターから現在の NoSQL クラウド コンピューティング、ビッグ データ Hadoop などの分散システムへと進化してきました。 Scala のアウト/インの水平拡張は分散システム設計の特徴であり、信頼性とフォールト トレランスは 2 つの品質指標です。 分散システムとは何ですか?
従来の集中型システムと比較して: 集中型システムは、スケールアウト/スケールイン、垂直拡張の一種であり、サーバーを中型または大型メインフレームにアップグレードするか、マルチコアにアップグレードして CPU コアの数を増やします。集中型の垂直拡張は、比較的集約度の高いデータの計算に適していますが、分散型は、ルーズデータ、非構造化データ、または半構造化データの計算に適しています。どのような拡張およびスケーリング ソリューションを採用するかは、ビジネス データの特性に基づいて決定する必要があります。 あらゆる分散システムでは、コンピューティングとストレージという 2 つのタスクを常に完了する必要があります。コンピューティングとストレージの分離は、分散システムの重要な機能です。通常、集中型またはスタンドアロン システムでは、SQL ステートメントによるクエリ後の並べ替えを実装するなど、これら 2 つを組み合わせることができます。クエリはストレージからデータを取得するためのものであり、ソートは計算です。したがって、この SQL ステートメントは実際には計算とストレージを結合します。ビッグデータや高い同時実行性を扱う場合、この便利なバンドルによってパフォーマンスの問題が発生します。分散コンピューティングと分散ストレージは複雑さをもたらしますが、システムの処理能力を向上させる余地も生まれます。 分散システムの機能:
位置決めコマンド:
透明性:
分散システムの課題分散システムは、理解、設計、構築、管理が困難です。単一のマシンよりも何倍も多くの変数が設計に導入されるため、アプリケーションの問題の根本原因を検出することがより困難になります。 SLA (サービス レベル契約) は、ダウンタイムやパフォーマンスの低下を測定するもので、ほとんどの最新アプリケーションでは、通常「9」ずつ増加する回復力の SLA レベルが想定されています (例: 月あたり 99.9 または 99.99% の可用性)。 9 が増えるごとに、達成するのがますます難しくなります。 さらに事態を複雑にしているのは、断続的なエラーやパフォーマンスの低下(一般にブラウンアウトと呼ばれる)という形で分散システムが障害を起こすケースが増えていることです。これらの障害モードの診断にはより多くの時間がかかります。たとえば、Joyent はクラウド コンピューティング インフラストラクチャの一部としていくつかの分散システムを運用しています。このようなシステム(高可用性の分散キー/値ストアを含む)において、Joyent は最近、一時的なアプリケーション タイムアウトを経験しました。ほとんどのユーザーにとって、システムは正常に動作し、応答遅延は SLA の範囲内です。ただし、リクエストの 5 ~ 10 パーセントは、事前に定義されたプログラム タイムアウトを超えます。このような障害は開発環境やテスト環境では再現されず、数分から数時間「消える」ことがよくあります。この問題のトラブルシューティングには、大量のデータ ストレージを必要とするシステム分析が必要です。 これらのシステムには、データ ストレージ API (node.js)、RDBMS (リレーショナル データベース管理システム)、システム内部で使用されるキー/値システム (PostgreSQL) のほか、オペレーティング システムやエンド ユーザー アプリケーションでも使用されるキー/値システムが含まれます。最終的に、過剰につながる根本的な問題は、アプリケーション内のセマンティック ロックインでしたが、これを特定するには、多くのエンジニアリング時間とさまざまな分野の専門知識を含む、かなりのデータ収集と相関関係の作業が必要でした。 分散システムは、次の 2 つの物理的要因によって制限されます。
これら 2 つの制約により、次のような困難な状況が発生します。
分散システムの設計方法分散システム アーキテクチャに適用される最も一般的な用語の 1 つは、SOA (サービス指向アーキテクチャ) です。 SOA は、煩わしい CORBA (Common Object Request Broker Architecture) を回避し、WS-* 標準を通じて、独立した小さな機能を完了し、互いに独立した一連の疎結合 Web サービスが、回復力のある分散システムの基盤となります。サービスは、前世代と比較した新しいプロセスです。これらは、適切な抽象化レベルでシステム内の個別の機能です。 サービス指向アーキテクチャを構築する最初のステップは、各機能が全体的なビジネス目標にどのように貢献するかを決定し、これらのビジネスを独立した障害境界、スケーラビリティ、およびデータ負荷を持つ個別のサービスにマッピングすることです。各サービスを決定する際には、次の点を考慮する必要があります。
分散システムのためのモデル抽象化
多くの場合、私たちが最もよく知っているパターン (分散システム上での共有メモリの抽象化の実装など) はコストがかかりすぎます。分散化が進むと、各要素の動作の自由度が高まり、パフォーマンスが向上する可能性がありますが、管理が難しくなる可能性もあります。これには、管理の容易さのためにパフォーマンスを犠牲にしないという極めて賢明な行動が求められます。したがって、分散システムを統一された単一のシステムとして考えようとすると、分散システムの拡張が妨げられます。 分散システムは CAP 定理に従い、高い一貫性、高い可用性、パーティション耐性の中から選択します。
分散システム設計技術: パーティショニングとレプリケーションデータ セットを設計するには 2 つの方法があります。
分散システムの設計手法: クロックとシーケンス 分散システムには、コンピューティングとストレージに関するさまざまな戦略があります。データ ストレージの場合、主にパーティショニングとレプリケーションに重点が置かれ、コンピューティングの場合、分散コンピューティング タスクは Storm などのイベント駆動型であるため、主にイベントの順序の確保に重点が置かれます。イベントの順序はビジネス ロジックの順序を表します。イベントはツリーネストされたイベントになる場合があります。信頼性とは、ツリー コレクション内のすべてのイベントが、Web サイトによってトランザクション アトムとして実行される必要があることを意味します。 |
<<: AWS が常にクラウドコンピューティングの最前線にいられるのはなぜでしょうか? AWS テクノロジーサミット北京で答えを見つけましょう!
>>: パブリッククラウドのセキュリティは依然として組織にとって大きな懸念事項である
hostus.us は誰にも気づかれずに新しいタイプの VPS を開始しました。これは KVM ベー...
Vultr は米国西海岸のユーザーが多すぎて、全体的な使用効果があまり理想的ではないと感じていません...
含まれるウェブサイトの数は、ウェブマスターにとって常に最も頭を悩ませる問題の 1 つです。含まれるウ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています著者: D...
誕生日特別版 KVM VPS を入手しませんでしたか?チャンスが来ました。BlueVM が改訂され、...
あるネットユーザーは知乎でこう質問した。「百度で「淘宝」というキーワードを検索すると、なぜ麦宝宝のウ...
クラウドやクラウドに関する最善の決定を組織内の他の人に説明するときは、それを裏付けるデータが必要です...
コンテナ化テクノロジーは、現代のソフトウェア開発と展開において重要な役割を果たします。これらは、開発...
みなさんこんにちは。私は次男です。面接のシナリオでは、デバッグの問題に関して、通常次のような会話が行...
Weiboマーケティングは、現在主流のマーケティング手法の一つとなっています。多くの人がWeiboを...
Hostmybytes は、中国の 12 月 12 日の当日、電子メール グループを通じて 4 つの...
Kubernetes のアーキテクチャは大規模な組織には適していますが、中小規模の組織にとっては複雑...
[51CTO.com からのオリジナル記事] 今日、ほぼすべての IT インフラストラクチャがクラウ...
5月22日、テンセントデジタルエコシステムカンファレンスのAIセッションで、テンセントクラウドはビッ...
SEOでは、訪問数、キーワード、ランディングページなど、さまざまなウェブサイトのデータを頻繁に確認す...