分散アプリケーションは、現代のソフトウェア開発業界の定番です。これらはクラウド ストレージ サービスの鍵であり、大規模な Web アプリケーションの応答性を維持できるようにします。プログラマーがこれらのシステムを構築する際には、出発点として使用でき、共通の語彙で通信できる基本的な構成要素が必要です。 ここで、分散システムの設計パターンが非常に重要になります。これらは使いすぎられることもありますが、その使い方を理解することは、採用担当者が求める重要なスキルであり、高度なシステム設計の面接で目立つために不可欠です。 今日は、5 つの優れた分散システム設計パターンについて説明し、その長所と短所、そしていつ使用するかを理解できるようにします。
分散システム設計パターンとは何ですか?デザイン パターンは、特定のユース ケースに適合する各システムに対して実証およびテストされたアプローチです。これらは実装ではなく、抽象的に構造化されたシステムです。ほとんどのデザイン パターンは、長年にわたってさまざまな開発者によって開発および更新されているため、多くの場合、非常に効果的な出発点となります。 デザイン パターンは、プログラマーがシステムごとにゼロから始めるのではなく、既存の知識を活用できるようにするビルディング ブロックです。また、システム設計用の標準モデルのセットを作成し、他の開発者が自分のプロジェクトが特定のシステムとどのようにインターフェースするかを確認できるようにしました。 創造的デザイン パターンは、新しいオブジェクトを構築する際のベースラインを提供します。構造パターンはソリューションの全体的な構造を定義します。動作パターンは、オブジェクトとそれらが相互に通信する方法を説明します。 分散システムの設計パターンは、基本的にエンド ユーザーに対して単一のコンピューターとして機能するコンピューターとデータ センターの集合である分散システムを開発するときに使用される設計パターンです。これらの分散設計パターンは、異なるノードが相互に通信する方法、各ノードによって処理されるタスク、およびさまざまなタスクに使用されるプロセス フローを理解するソフトウェア アーキテクチャの概要を示します。 これらのパターンは、大規模なクラウド コンピューティングやスケーラブルなマイクロサービス ソフトウェア システム向けの分散システム アーキテクチャの設計に広く使用されています。 分散設計パターンの種類ほとんどの分散設計パターンは、次の 3 つの機能カテゴリのいずれかに基づいています。
1. コマンドとクエリの責任分離 (CQRS)CQRS パターンは、スケーラビリティと安全性を向上させるために、分散システムの読み取り操作と書き込み操作を分離することに重点を置いています。このモデルでは、コマンドを使用して永続ストレージにデータを書き込み、クエリを使用してデータを検索および取得します。 これらは、ユーザーからのリクエストを受信するコマンド センターによって処理されます。その後、コマンド センターはデータを取得して必要な変更を加え、データを保存し、読み取りサービスに通知します。次に、読み取りサービスは読み取りモデルを更新して、変更をユーザーに表示します。 利点:
欠点:
使用例: CQRS は、SQL や NoSQL データベース管理システムなどのデータ集約型アプリケーションに最適です。また、データ量の多いマイクロサービス アーキテクチャにも役立ちます。ライター/リーダーの区別は不変性に役立つため、これはステートフル アプリケーションを処理する上で非常に重要です。 2. 2フェーズコミット(2PC)2PC は、トランザクション アプローチとコア コマンドへの依存において CQR に似ていますが、パーティション分割はコマンドの種類と完了段階によって処理されます。 2 つのフェーズは、準備フェーズ (中央制御がサービスにデータを準備するように指示する) とコミット フェーズ (準備されたデータをサービスに送信する) です。 デフォルトでは、2PC システム内のすべてのサービスはロックされており、データを送信できません。ロックする場合、サービスは準備フェーズに入力して、ロック解除を送信する準備を整えます。コーディネーターはサービスを 1 つずつロック解除し、そのデータを要求します。サービスがデータをコミットする準備ができていない場合、コーディネーターは別のサービスに進みます。準備されたすべてのデータが送信されると、すべてのサービスがブロック解除され、コーディネータからの新しいタスクを待機します。 2PC は基本的に、一度に 1 つのサービスのみが動作できるようにすることで、プロセスの耐性を高め、CQRS の一貫性を高めます。 利点:
欠点:
使用例: 2PC は、リソース効率よりも精度が優先される、リスクの高いトランザクション操作を処理する分散システムに最適です。エラーに強く、大規模でも追跡が容易です。 3. サガSAGA は、中央コントローラーを使用せず、代わりにサービス間で完全に通信する非同期パターンです。これにより、これまでに説明した同期モードの欠点の一部が克服されます。 SAGA はアクティビティ バスを使用して、マイクロサービス システム内でサービスが相互に通信できるようにします。バスはサービス間でリクエストを送受信し、参加している各サービスはローカル トランザクションを作成します。参加しているサービスは、その都度、他のサービスのアクティビティを発行します。他のサービスはすべてイベントをリッスンします。アクティビティを最初に受信したサービスが必要なアクションを実行します。サービスが操作を完了できない場合は、他のサービスに送信されます。 この構造は、1 人がタスクを完了できない場合にサービスが循環するという点で 2PC 設計に似ています。ただし、Saga では中央制御要素を削除してトラフィックをより適切に管理し、必要な前後の通信の量を削減します。 利点:
欠点:
使用例: SAGA の分散型アプローチは、一度に多数の並列リクエストを処理できるスケーラブルなサーバーレス機能に最適です。 AWS は、STEPS や LAMBDA 関数などの多くの機能で SAGA ベースの設計を使用しています。 4. レプリケーション負荷分散サービス (RLB)RLBS パターンは、最も単純で最も一般的に使用される設計パターンです。最も基本的なレベルでは、中央のロード バランサーにレポートする複数の同一サービスで構成されます。各サービスはタスクを処理することができ、失敗した場合には複製することができます。ロード バランサは、エンド ユーザーからのリクエストを受信し、ラウンドロビン方式で、または場合によってはより複雑なルーティング アルゴリズムを使用して、リクエストをサービスに配布します。 重複したサービスにより、アプリケーションはユーザー要求に対して高い可用性を維持し、サービスの 1 つのインスタンスに障害が発生した場合でも作業を再配布できるようになります。 RLBS は、ワークフロー ベースの自動サービス スケーリングを提供する Microsoft のオープン ソース コンテナー オーケストレーション テクノロジである Azure Kubernetes でよく使用されます。 利点:
欠点:
使用例: RLBS は、Netflix や Amazon Prime などのエンターテイメント Web アプリケーションなど、全体的に一貫性がないものの、低レイテンシを維持する必要があるワークロードに適しています。 5. シャーディングサービスレプリカベースの設計の代替案としては、それぞれが特定のタイプの要求のみを完了できるさまざまなサービスを作成することです。これは、リクエスト ストリームを複数の不均等な部分に分割するため、「シャーディング」と呼ばれます。たとえば、すべてのキャッシュ要求を受け入れるシャード サービスと、優先度の高い要求のみを処理するシャード サービスが 1 つある場合があります。ロード バランサは、各リクエストが到着するとそれを評価し、適切なシャードに分散します。 状態のサイズが単一のステートレス コンテナーには大きすぎることが多いため、フォークされたサービスはステートフル サービスの構築によく使用されます。シャーディングを使用すると、単一のシャードを国の規模に合わせて拡張できます。 サービスをフォークすると、優先度の高いリクエストをより速く処理することもできます。優先度の高いリクエスト専用のシャードは、リクエストをキューに入れるのではなく、リクエストが届いた瞬間に処理するために常に利用可能です。 利点:
欠点:
使用例: シャード サービングは、システムが予測可能なリクエスト タイプの不均衡を受信し、一部のリクエストが優先される場合に最適に機能します。 |
>>: 穆海傑: 企業がデジタル変革の「高速レーン」に入るのを支援
インターネット マーケティングにはさまざまな手段がありますが、どのインターネット マーケティング方法...
raksmartの日本データセンターにある独立サーバー(物理マシン)は現在プロモーション中で、最小帯...
胡錦濤国家主席は北京で開催された中国共産党第18回全国代表大会で、中国は閉鎖的で硬直した発展の古い道...
hostens.eu はつい最近設立されたばかりなので、あまり知られていない方も多いかもしれません。...
孫悟空は岩の割れ目から飛び出しました。 Alibaba の P8Plus の友人数人が、Pinduo...
長年SEOに携わってきた人なら、ユーザーの言葉にとても敏感になっているはずです。では、ユーザーはラン...
年に一度の超割引がまたやって来ます。ブラック フライデーから、Crocodile Host は超割引...
「共に力を合わせてより良い世界を創る」2018 JD Cloud パートナーカンファレンスが北京で開...
最近、著者は「3 年間のモバイル インターネットに関する 8 つの予測」という記事を公開しました。8...
5月16日、テンセントクラウドは同社の主要クラウド製品の数種類の値下げを発表し、一部の製品ラインでは...
三国時代には三つの勢力が対立していたと言われており、『三国志演義』は歴史上の最高傑作です。しかし今、...
まず、クラウド コンピューティングのビジネス アイデアを、クラウド コンピューティングのサービス モ...
spinserversの最新ニュース:24コア、48スレッド、DDR4、大容量HDD、SSDを搭載し...
Racknerd の第 2 回クリスマス プロモーション フラッシュ セールが始まりました。ロサンゼ...