Wie funktionieren CDN (Content Distribution Networks)?

25366
p2pnode

Akamai als CDN nehmen. Soweit ich weiß, geht die Anfrage an einen Client, wenn ein Client eine Seite anfordert, an den zentralen Akamai-Server, der dann je nach Standort des Clients einen Akamai-Edge-Server aufnimmt und nachfolgende Anfragen vom Client direkt an diesen Edge-Server. Meine Frage ist das:

Wenn ein Client eine Website (anhand des Namens) anfordert, sobald der DNS den Namen in die IP-Adresse des zentralen Akamai-Servers auflöst und an den Client weiterleitet, behält der Client diese IP-Adresse bei, wie die nachfolgenden Anforderungen in der Lage sind gehen Sie direkt zur IP-Adresse der Akamai-Edge-Server?

Oder ist es notwendig, dass bei der Verwendung von CDN die DNS-Auflösung selbst vom CDN-Server ausgeführt wird?

Haben Biggies wie Google, Amazon oder Facebook eigene CDN-Server oder sind sie auf CDN-Anbieter von Drittanbietern wie Akamai angewiesen? Sagen Sie Google und Yahoo! Beide verwenden Akamai-CDNs, dann wird der Inhalt von Yahoo! und Google befinden sich auf demselben Server? Ist dies nicht ein potenzielles Sicherheitsproblem?

37

6 Antworten auf die Frage

26
Der Hochstapler

Sie hosten nicht einfach die gesamte Site mit dem CDN, sondern nur Ihren Inhalt .

Ich habe gerade festgestellt, dass ich vor einiger Zeit eine ähnliche Frage beantwortet habe: Was macht akamaihd.net?

DatenanforderungsflussBild von WikiMedia

Ihre Site verweist also http://akamai/myfile.ext. Dies fordert myfile.extvon akamai. akamaikann dann eine HTTP-Weiterleitung an den eigentlichen Content-Server senden .

Wenn dieser letzte Schritt zwischengespeichert ist, werden alle zukünftigen Anforderungen an den nächsten Content-Server weitergeleitet.

Wie funktioniert das?

Nehmen wir an, diese Website:

<html> <body> <img src="http://cdn/oliver.png" /> </body> </html> 

Ich fordere diese Website von meinem eigenen Webserver an. Die .htmlDatei wird nicht mit gehostet cdn. Auch ist der DNS meines Webservers nicht.

Erstanfrage

Mein Browser hat also diese HTML-Datei erhalten und analysiert sie jetzt. Es findet das referenzierte Bild und die Notizen, unter denen es sich befindet http://cdn/oliver.png. Es fordert diese Datei an.

Dazu muss die IP-Adresse von ermittelt werden cdn. In unserem Beispiel lautet diese IP-Adresse 10.10.10.10.

Mit dieser IP-Adresse kann eine Verbindung zum cdnServer hergestellt und abgefragt werden /oliver.png.

Geo-Standort

Jetzt wird cdnklar: "Der Typ kommt aus Deutschland! " Anstatt mir mein fantastisches Bild zu schicken, das ich wollte, schickt es mir eine HTTP-Weiterleitung, die sagt:

/oliver.png ist nicht hier. Es ist bei10.10.33.33/oliver.png

Also wird mein Browser 10.10.33.33(der hoffentlich näher bei mir ist) nach dem Bild fragen .

Ernst?

Ich sage nicht so, dass ALLE CDNs funktionieren, aber es wäre ein Ansatz.

Sie können auch einen DNS-Daemon implementieren, der je nach Speicherort der Person, die die Abfrage gesendet hat, unterschiedliche Ergebnisse für die Namenssuche zurückgibt.
Aber ich bezweifle, dass dies in der Praxis geschieht. Aber vielleicht kann ich mir einfach nicht vorstellen, wie ich das richtig einrichten soll. Sehen Sie die Antwort von Fluffy, wie das funktionieren könnte.

Wer betreibt CDNs?

Die meisten Global Player verfügen in gewisser Weise über ein eigenes Netzwerk zur Bereitstellung von Inhalten (so würde ich davon ausgehen). Einige Anbieter verschieben bestimmte Dienste nur auf größere CDNs (wie Microsoft es bei MSDN-Downloads tut). Und das berührt vielleicht irgendwie dein zweites Thema.

Beachten Sie, dass Microsoft in der MSDN Produkt-Downloads anbietet. Diese Downloads werden von Akamai bereitgestellt. Wenn Sie die URL für diesen Download ermitteln können, können Sie das Produkt einfach herunterladen, ohne jemals mit Microsoft Kontakt aufzunehmen.

Ist das eine Sicherheitsfrage? Nicht wirklich, weil das, was heruntergeladen wird, immer noch geschützt ist (durch einen Produktschlüssel).

Aber wie steht es mit anderen Daten?

Wenn Ihre Daten sicherheitsrelevant sind, handelt es sich nicht um CDN-Material. Wenn Sie nicht etwas wollen so weit wie möglich zur Verfügung stehen, nicht in einem CDN setzen.

Angenommen, die Site ist http: //somewebsite/file.txt. Angenommen, Akamai DNS wird verwendet. Dann geht die erste Anforderung des Clients an eine andere Website oder die erste Anfrage selbst geht an Akamai (weil das DNS, das vom Client verwendet wird, weiß, dass Akamai CDN verwendet wird)? p2pnode vor 12 Jahren 0
Und vielleicht verstehe ich nicht die HTTP-Weiterleitung und was sie damit erreichen können, daher bleibt meine Frage immer noch die Frage, wie der Client die IP-Adresse von Akamai-Edge-Servern verwenden kann, damit die zentralen Server von Akamai nicht in Erscheinung treten müssen alles.. p2pnode vor 12 Jahren 0
@ p2pnode: Ich habe die Antwort etwas erweitert. Hoffentlich beinhaltet es, worüber Sie sich wundern. Der Hochstapler vor 12 Jahren 0
Gibt es keinen signifikanten Performance-Erfolg? Anstelle der gesamten Datenübertragung über einen einzigen TCP-Stream werden mehrere Streams verwendet, mehr Aufwand durch das Handshaking usw. Akash vor 12 Jahren 1
@Akash: Normalerweise würden Sie kein CDN für * alles * verwenden, sondern nur für einzelne, große Dateien. In der Praxis ist das also kein Thema. Der Hochstapler vor 12 Jahren 0
11
fluffy

Ein ziemlich verbreiteter Ansatz für CDN ist die Verwendung von sogenannten " Anycasts ". Wie dies funktioniert, ist, dass Ihre verteilten Server mit DNSs zusammengeschlossen sind, die mit diesem Server als Ziel antworten. Sie könnten beispielsweise drei Server in unterschiedlichen Hosting-Einrichtungen haben, und ihre jeweiligen DNSs behaupten alle, dass ihre IP-Adresse die kanonische Adresse für Ihren Server ist (nennen Sie sie beispielsweise content.example.com). Die DNSes sind jeweils so konfiguriert, dass sie dieselbe globale IP-Adresse haben, und dann verwenden alle Einrichtungen des Servers BGP-Aktualisierungen, um die Route zum nächstgelegenen Server zu gewinnen. Wenn Sie also nach einem Namen suchen content.example.com, wird der schnellste bzw. der nächstgelegene Server gesucht / most available DNS antwortet auf die Anfrage mit seinem HTTP-Server.

Auf diese Weise sind keine GeoIP-Tricks erforderlich, und der Server, der für Sie der schnellste ist, wird immer mit Inhalten bedient. Dies kann aufgrund der heterogenen Natur des Internets etwas mit seinem physischen Standort zu tun haben oder nicht.

Nach meinem Verständnis arbeitet Akamai auf diese Weise zumindest teilweise.

5
Fiasco Labs

Außerdem sind Origin-Pull-CDNs verfügbar.

Amazon Cloudfront kann diese Technik verwenden.

Sie richten einen CNAME wie media.example.com ein, der auf den zugewiesenen Servernamen verweist und Ihren gesamten Inhalt auf Ihrem Server belässt. Für Bilder und Inhalte, die über das CDN übermittelt werden sollen, verwenden Sie media.example.com in der URL. Die Anfrage geht an ihr Servernetzwerk. Wenn der Inhalt nicht verfügbar ist, holen die Server den Inhalt von Ihrem Server. Sobald er sich im System befindet, wird der Inhalt an Serverfarmen verteilt, die sich am nächsten befinden, wo der Bedarf besteht, und bleibt dort für die zugewiesene TTL. Ihr Server sieht keinen Datenverkehr mehr im zwischengespeicherten Inhalt, bis die TTL abgelaufen ist und Cloudfront ihn aktualisieren muss.

1
igorlord

Akamai funktioniert nicht so. Unterschiedliche CDNs arbeiten unterschiedlich, aber Akamai führt für ihre Webserver insbesondere keine Übertragung durch.

Wenn ein Benutzer in NY möchte www.acme.com, leitet der Nameserver von acme.com zu einem Akamai-Nameserver um ("delegiert"). Der Akamai-Nameserver erkennt, wo sich der Rechner befindet, der die Frage stellt (basierend auf seiner IP-Adresse) und gibt die IP-Adresse des nächstgelegenen / besten Akamai-Servers zurück, der bedient werden soll www.acme.com.

Wie es funktioniert? Der Akamai-Nameserver empfängt eine Anfrage direkt vom Benutzer oder vom Benutzer-DNS-Server, der an den Akamai-Nameserver delegiert. Es wird also nach dem DNS-Server-Standort geografisch geordnet, nicht nach dem des Benutzers? odiszapc vor 9 Jahren 0
0
Brad Parks

Eine großartige Zusammenfassung der Funktionsweise von Akamais CDN finden Sie hier

Zusamenfassend:

  • CDN-Server verfügen über einen CNAME-Eintrag, der auf die DNS-Server von Akamai verweist.
  • Bei der ersten Anforderung, die ein Client-Browser an einen CDN-Server sendet, wird sein DNS beim Akamai-DNS-Server nachgeschlagen. Dieser antwortet mit der IP-Adresse eines Akamai-Servers, der sich in der Nähe des Benutzers befindet (als "Edgeserver" bezeichnet).
  • Diese Edgeserver können statische Elemente aus einem lokalen Cache bereitstellen, wenn sie kürzlich von einem anderen Benutzer angefordert wurden, und müssen nicht einmal zu Ihrem Server zurückkehren, um eine Kopie des Assets abzurufen.
  • Fehlende Elemente oder nicht zwischengespeicherte Seiten werden durch das Akamai-Netzwerk zu einem anderen Edge-Server in der Nähe des Hosts geleitet. Dieser Edge-Server stellt die eigentlichen Anforderungen an die Host-Site und leitet sie über das Netzwerk zurück an den ursprünglichen Edge-Server. Von dort werden sie an den Endbenutzer zurückgegeben.
  • Da die Edge-Server intern über die proprietären Protokolle von Akamai und das Routing um Engpässe miteinander kommunizieren, kann der Datenverkehr viel schneller fließen als über das öffentliche Internet.

Wie bereits in dem oben genannten Blogeintrag erwähnt, lösen einige große Unternehmen DNS mit ihren eigenen Servern auf, was einige Vorteile der Verwendung eines CDNs zunichte machen kann.

-2
abhimanyu rail

CDN funktioniert auf Anycast-DNS. Anycast DNS funktioniert auf Anycast IP. Anycast-IP: Eine IP-Zuweisung auf mehreren Servern. Wenn der Benutzer den DNS-Resolver anfordert, wird diese Abfrage vom nächstgelegenen Server verarbeitet und liefert Daten vom Server mit der geringsten Latenzzeit.

Inwiefern verbessert dies die vorhandenen, viel umfassenderen Antworten? Chenmunka vor 8 Jahren 0