メインコンテンツへ移動

CDN_システム設計ノート 4

無料2020-01-26#Back-End#Scattered CDN#Consolidated CDN#CDN Architecture#CDN架构图#CDN实现原理

CDN とは何か?どのような用途があるか?どのような外見か?どのように動作するか?

一.概念

CDN(Content Delivery Network、コンテンツ配信ネットワーク)は、異なる地理位置に分散したプロキシサーバーとそのデータセンターで構成されるネットワークです:

A content delivery network or content distribution network (CDN) is a geographically distributed network of proxy servers and their data centers.

空間距離上でユーザーに近接したサービスを提供し、可用性とパフォーマンスを向上させることを目的としています

The goal is to provide high availability and high performance by distributing the service spatially relative to end-users.

P.S.空間距離はネットワーク伝送上でホップ数(hop)として現れます。クライアントからサーバーまで経由するホップ数が多いほど、距離が遠く、一般に遅延も大きくなります

二.作用

CDN は一般的に Web リソース(テキスト、画像、スクリプトを含む)、ダウンロード可能なリソース(メディアファイル、ソフトウェア、ドキュメントなど)、アプリケーション(電子商取引、ポータルサイトなど)、ストリーミングメディアおよびソーシャルメディアサイトのホスティングに使用され、これらのリソースへのアクセスを加速します

パフォーマンス面では、CDN を導入する作用は以下の通り:

  • ユーザーが受信するコンテンツは最も近いデータセンターから提供され、遅延が低く、コンテンツ読み込みが速い

  • 一部のリソースリクエストが CDN にアウトソーシングされ、サーバー負荷が軽減される

一方ではコンテンツとエンドユーザーとの距離を短縮し、他方ではコンテンツを直接サーバーから取得しないため、サーバーの計算リソースを節約し、オリジンサーバーの圧力を分担します

セキュリティ上、CDN は DDoS、MITM などのネットワーク攻撃の防御に役立ちます:

  • DDoS(Distributed Denial of Service):異常トラフィックを監視分析し、リクエスト頻度を制限

  • MITM(Man-In-The-Middle):オリジンサーバーから CDN ノードから ISP(Internet Service Provider)まで、全リンク HTTPS 通信

さらに、基本的なクラウドサービス(IaaS)として、CDN はリソースホスティング、需要に応じた拡張(トラフィックピークに対応可能)などの利点も持ちます:

This reduces content providers' infrastructure requirements, and lets them deploy or expand services more quickly and easily.

P.S.IaaS、PaaS、SaaS の詳細情報については [IaaS-PaaS-SaaS 定義](/articles/iaas-paas-saas 定義/) を参照

三.構造

トポロジ構造上、CDN は分散式(Scattered CDN)と統合式(Consolidated CDN)の 2 種類に分類されます

Scattered CDN

世界各地にできるだけ多くのサーバーを展開するものを、分散式 CDN と呼びます:

Scattered CDNs aim to have as many servers scattered around the world as possible.

初期の CDN は大量の中低性能サーバーで選択された地理的領域を密集して埋め尽くしました。这些小規模ノードは展開が容易で、特に低接続性(low-connectivity)の領域に適しています

グローバル接続性の不断の向上に伴い、物理距離を縮小する利益は徐々に減少し、大量ノードの維持コストも顕著になり、統合式 CDN が登場しました

Consolidated CDN

統合式 CDN は主要なデータセンターにのみ少量のノードを持ちますが、ノードのパフォーマンスはより強力で、ネットワーク、スループット、DDoS 耐性を含みます:

Consolidated CDNs have fewer points, but bigger ones built for network performance, throughput, and DDoS resistance.

この集中式構造は全体的な応答能力の向上に役立ち、ユーザーとネットワークオペレーターに更多的制御を提供しますが、展開は比較的複雑で、低接続性領域では効果が劣ります

四.分類

CDN はコンテンツ配信方式により Push CDN と Pull CDN に分類されます

前者はコンテンツサーバーが事前にコンテンツを CDN に「プッシュ」してキャッシュし、後者はユーザーがコンテンツにアクセスする際に CDN が目標リソースを「プル」してキャッシュします

Push CDN

コンテンツが変化するたびに、新しいコンテンツを Push CDN にアップロードします。追加されたコンテンツと変化したコンテンツのみをアップロードすればよいため、伝送に使用されるトラフィックは比較的少ないですが、存储するコンテンツは比較的也多くなります

したがって、Push CDN は小トラフィック、またはコンテンツ更新が頻繁でないサイトに適しています。コンテンツは一度 CDN に配置され、周期的に再プルする必要はありません。トラフィック負荷がもともと重い場合、またはコンテンツ変更が頻繁な場合、Push CDN はサーバーに追加の圧力をもたらします

Pull CDN

Pull CDN は手動アップロードが不要で、ユーザーが初めてアクセスする際に自動的にサーバーから新しいコンテンツをプルし、キャッシュします。需要に応じたキャッシュは CDN 存储スペースを節約しますが、ファイル期限切れまたは変化がない場合に再プルすると、不要なトラフィックオーバーヘッドが発生します

したがって、Pull CDN は大トラフィックサイトに適しています。最近使用された(最も人気のある)コンテンツのみをキャッシュし、一度設定すれば需要に応じたキャッシュが可能で、維持コストが低いです

五.原理

いくつかの用語が含まれます:

  • オリジンサーバー(Origin server):コンテンツ(データ)ソースを提供するサーバー

  • エッジサーバー(Edge server):オリジンサーバーからのコンテンツをキャッシュするために使用されるサーバー

  • ポイントオブプレゼンス(Point of Presence、PoP):エッジサーバーが所在する物理的位置。1 つの PoP に複数のエッジサーバーが存在する可能性があります

  • CDN リバースプロキシ(CDN Reverse Proxy):ユーザーリクエストをオリジンサーバーに転送し、オリジンサーバーからのレスポンスをキャッシュします。Pull CDN に使用

  • バックツーソース(Back-to-source):CDN ノードがリクエストリソースをキャッシュしていない、またはキャッシュリソースが期限切れの場合、オリジンサイトからリソースを取得し、クライアントに返します

動作原理

Pull CDN を例にすると、特定地域のユーザーが初めてリソースにアクセスする際、オリジンサーバーから取得し、コンテンツレスポンスをユーザーに返した後、リソースはその地域のエッジサーバーにキャッシュされます。同一地域のユーザーが再度同じリソースをリクエストすると、エッジサーバーからレスポンスされます:

![](https://www.keycdn.com/img/support/what-is-a-cdn-how-does-it-work-lg @2x.webp)

P.S.レスポンスヘッダーの特定フィールドを通じて、コンテンツレスポンスがオリジンサーバーからか CDN キャッシュからかを区別できます。例えば:

  • X-Cache: HIT:キャッシュヒット、レスポンスコンテンツは CDN キャッシュから

  • X-Cache: MISS:キャッシュミス、レスポンスコンテンツはオリジンサーバーから

実装原理

実装上、サブドメインの解析権を CNAME 記録 を通じて CDN に委譲し、続いて 地理位置の近接度に基づくルーティング戦略 を通じて、リクエストをユーザーに最も近いエッジサーバーにマッピングします:

Push CDN の場合、エッジサーバーはキャッシュサービスのみを提供し、キャッシュミスなら 404 を返します。Pull CDN の場合、エッジサーバーはリバースプロキシサービスを提供し、キャッシュミス時にオリジンに取得に行きます

参考資料

コメント

コメントはまだありません

コメントを書く