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

P.S.レスポンスヘッダーの特定フィールドを通じて、コンテンツレスポンスがオリジンサーバーからか CDN キャッシュからかを区別できます。例えば:
-
X-Cache: HIT:キャッシュヒット、レスポンスコンテンツは CDN キャッシュから -
X-Cache: MISS:キャッシュミス、レスポンスコンテンツはオリジンサーバーから
実装原理
実装上、サブドメインの解析権を CNAME 記録 を通じて CDN に委譲し、続いて 地理位置の近接度に基づくルーティング戦略 を通じて、リクエストをユーザーに最も近いエッジサーバーにマッピングします:
Push CDN の場合、エッジサーバーはキャッシュサービスのみを提供し、キャッシュミスなら 404 を返します。Pull CDN の場合、エッジサーバーはリバースプロキシサービスを提供し、キャッシュミス時にオリジンに取得に行きます
コメントはまだありません