【システム設計シリーズ】DNSとCDN

システムデザインシリーズの初志


システム設計入門書: 和文档 GitHub - donnemartin/system-design-primer: 大規模システムを設計する方法を学びます。システム設計面接の準備をします。Anki フラッシュカードが含まれています。

中国語版: https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md

本来の目的は主にシステム設計を学ぶことですが、中国語版は機械翻訳っぽいので、今でも手作業で簡単なメモを取り、わかりにくい部分はAIを活用して英語版と比較しながら学習しています。翻訳と知識の拡大。

ドメインネームシステム(DNS)

                                                出典: DNS セキュリティの概要

DNSとは

ドメイン ネーム システムは、  www.example.comなどのドメイン名を IP アドレスに変換します。

ここでは、DNS プロトコルを理解する必要があります。

DNS プロトコルの機能は、コンピュータがドメイン名を介して通信できるように、ドメイン名を IP アドレスに変換することです。たとえば、ユーザーがブラウザに URL を入力すると、DNS プロトコルがその URL に対応するドメイン名を IP アドレスに解決し、コンピュータはこの IP アドレスを通じてターゲット サーバーに接続し、対応する Web ページを取得できます。情報。同時に、DNS は逆解決、つまり IP アドレスから対応するドメイン名を見つけることもサポートしています。

ドメイン ネーム システムは階層構造になっており、いくつかの DNS サーバーが最上位にあります。(ドメイン名) IP をクエリすると、ルーターまたは ISP は DNS サーバーに接続するための情報を提供します。下位レベルの DNS サーバーはマッピングをキャッシュしますが、DNS 伝播の遅延により無効になる可能性があります。DNS の結果は、有効期間 TTLに応じて、ブラウザまたはオペレーティング システムに一定期間キャッシュされることがあります

  • NS レコード (ドメイン ネーム サービス) - ドメイン名またはサブドメイン名を解決する DNS サーバーを指定します。
  • MX レコード (メール交換) - メッセージの送信先のメール サーバーを指定します。
  • レコード (アドレス) ─ ドメイン名に対応する IP アドレス レコードを指定します。
  • CNAME (正規) – ドメイン名は、別のドメイン名または CNAME レコード (example.com は www.example.comを指します )、または A レコードにマップされます。

CloudFlare や Route 53などのプラットフォームは、  DNS を管理する機能を提供します。一部の DNS サービスは、集中的な方法でトラフィックをルーティングします。

  • 加重ラウンドロビンスケジューリング
    • メンテナンス中のサーバーへのトラフィックの流入を防止する
    • 異なるサイズのクラスター間での負荷分散
    • A/B テスト
  • 遅延ベースのルーティング
  • 地理的位置に基づいたルーティング

DNSクエリ方式

DNS (Domain Name System) には主に次のような問い合わせ方法があります。

再帰的クエリ:

再帰的クエリは、クエリ結果が受信されるまでクエリ要求を他の DNS サーバーに渡す方法です。クライアントがローカル ドメイン ネーム サーバーにクエリ要求を送信すると、ローカル ドメイン ネーム サーバーは、対応する IP アドレスが見つかるまで、またはトップレベルのドメイン ネーム サーバーがクエリされるまで、クライアントに代わってドメイン名ツリーの上向きにクエリを実行します。このプロセスでは、ローカル ドメイン ネーム サーバーはまず自身のキャッシュにクエリを実行し、キャッシュに対応するレコードがない場合は、応答を受信するまで他の DNS サーバーにクエリ リクエストを送信します。

反復クエリ:

反復クエリは、別のクエリ方法です。クライアントは、ローカル ドメイン ネーム サーバーにクエリ リクエストを送信します。ローカル ドメイン ネーム サーバーに対応するレコードがない場合、有効な IP アドレスが得られるまで、クエリ リクエストを他の DNS サーバーに順番に転送します。が受け取られます。反復クエリ プロセス中、クライアントとサーバーの間で複数の対話が行われ、サーバーはクエリ プロセス中に答えが見つかるまで徐々に上向きに検索します。

逆引きクエリ:

逆引き参照は、IP アドレスに基づいてホスト名を照会する方法です。クライアントが IP アドレスを知っていて、対応するホスト名をクエリしたい場合は、逆クエリ要求を送信できます。ローカル ドメイン ネーム サーバーはこのリクエストを受信し、他の DNS サーバーにクエリ リクエストを送信し、最終的に対応するホスト名を返します。

負荷分散クエリ:

負荷分散クエリは、複数のサーバー間の負荷分散テクノロジーです。ドメイン名が複数の IP アドレスに対応する場合、単一サーバーへの過剰な負荷を避けるために、これらの IP アドレスを複数のサーバーに割り当ててサーバー クラスターを形成できます。現時点では、ドメイン ネーム サーバーは複数の IP アドレスを A レコードに保存し、これらの A レコードを異なるサーバーに割り当てる必要があります。クライアントがクエリ要求を送信すると、ローカル ドメイン ネーム サーバーは、最初の有効な IP アドレスを受信するまで、これらのサーバーにクエリ要求を順番に送信します。

これらのクエリ方法はドメイン名解決プロセスで重要な役割を果たし、さまざまなシナリオやニーズに応じてさまざまなクエリ方法が適しています。

DNSの欠陥

CDN (コンテンツ配信ネットワーク コンテンツ配信ネットワーク)

CDNとは

コンテンツ配信ネットワーク (CDN) は、ユーザーに近い場所からコンテンツを提供するプロキシ サーバーのグローバルに分散されたネットワークです。通常、HTML/CSS/JS、画像、ビデオなどの静的コンテンツは CDN によって提供されますが、Amazon CloudFront などは動的コンテンツもサポートしています。CDN の DNS 解決は、クライアントにどのサーバーに接続するかを指示します。

コンテンツを CDN に保存すると、次の 2 つの方法でパフォーマンスが向上します。

  • ユーザーに近いデータセンターからリソースを提供
  • CDN を使用すると、サーバーが実際にリクエストを処理する必要がなくなります。

CDNプッシュ

サーバー上のコンテンツが変更された場合は、CDN をプッシュして新しいコンテンツを受け入れます。CDN に直接プッシュし、コンテンツの CDN アドレスを指すように URL アドレスを書き換えます。コンテンツの有効期限がいつ切れるか、いつ更新されるかを構成できます。コンテンツは変更または追加された場合にのみプッシュされるため、トラフィックは最小限に抑えられ、ストレージは最大化されます。トラフィックが少ない Web サイトや、コンテンツが頻繁に更新されない Web サイトは、プッシュ CDN を有効に活用できます。コンテンツは定期的に再取得されるのではなく、CDN に一度配置されます。

CDNプル

CDN プルは、最初のユーザーがリソースを要求したときにサーバーからリソースをプルします。コンテンツを独自のサーバー上に保持し、CDN アドレスを指すように URL を書き換えます。コンテンツが CDN にキャッシュされるまで、リクエストは遅くなるだけです。

存続時間 (TTL) によって、キャッシュする期間が決まります。CDN プル方式では、CDN 上の記憶域スペースが最小限に抑えられますが、ファイルの有効期限が切れて実際に変更される前にプルされた場合、冗長なトラフィックが発生する可能性があります。

トラフィックがより均等に分散され、最近リクエストされたコンテンツのみが CDN 上に保持されるため、トラフィックの多い Web サイトは CDN プルでうまく機能します。

CDNのデメリット

トラフィックによっては、CDN のコストが高くなる場合がありますが、CDN を使用しない場合に発生する可能性のある追加コストと比較検討する必要があります。

TTL の有効期限が切れる前にコンテンツを更新すると、コンテンツが古くなってしまう可能性があります。

CDN では、CDN を指すように静的コンテンツの URL を変更する必要があります。

おすすめ

転載: blog.csdn.net/u013379032/article/details/132725934
おすすめ