分散アプリケーションは、現代のソフトウェア開発業界の定番です。これらはクラウド ストレージ サービスの鍵であり、大規模な 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 つある場合があります。ロード バランサは、各リクエストが到着するとそれを評価し、適切なシャードに分散します。 状態のサイズが単一のステートレス コンテナーには大きすぎることが多いため、フォークされたサービスはステートフル サービスの構築によく使用されます。シャーディングを使用すると、単一のシャードを国の規模に合わせて拡張できます。 サービスをフォークすると、優先度の高いリクエストをより速く処理することもできます。優先度の高いリクエスト専用のシャードは、リクエストをキューに入れるのではなく、リクエストが届いた瞬間に処理するために常に利用可能です。 利点:
欠点:
使用例: シャード サービングは、システムが予測可能なリクエスト タイプの不均衡を受信し、一部のリクエストが優先される場合に最適に機能します。 |
>>: 穆海傑: 企業がデジタル変革の「高速レーン」に入るのを支援
ロシアワールドカップが開幕した。 4年に一度開催されるファンカーニバルとして、このスーパーIPを巡る...
今日のインターネットは、その神秘性を失って久しい。過去数年間、インターネットについて語られると、ほと...
網易科技ニュース:先日、Lagou.comの創設者兼会長である徐丹丹氏は、先週土曜日に網易科技「五道...
先週、DigitalOcean は、さらに 3,700 万ドルの資金を調達し、さまざまな開発に使用す...
医療ウェブ編集者は患者と関わるため、優れた医療ウェブ編集者になるためには、常に患者の考えを最優先に考...
2次元プラットフォームとしてスタートしたビリビリは、投資主導の企業になりつつある。関連メディアデータ...
Kubernetes クラスターで HTTPS プロトコルを使用するには、証明書マネージャーと自動...
【Ebrun Power Network News】6月16日、ちょうど「蜜月期」に入ったテンセント...
どの業界にいても、最も恐れられるのは無謀で盲目的な行動であり、SEOでも同じです。多くのウェブマスタ...
Greencloudvps は、デフォルトの帯域幅が 1Gbps、トラフィックが無制限のライセンス付...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています熊張浩の登...
理想は満ち溢れているが、現実は乏しい。一方では「金目当ての人」がP2Pプラットフォームに殺到し、他方...
QNデータセンターは先月、CEO/CFOをはじめとする人事の交代を完了しました。直下のPacific...
2011年4月に設立されたホスティング会社であるstockserversは、現在、ドイツ(Hetzn...
10月21日、アリババは世界初の多言語リアルタイム翻訳電子商取引ライブ放送を完了し、AIが騒がしい環...