Was ist ein CDN und wie funktioniert es?



Zahlen und Fakten (statt Einführung)


  • Im Jahr 2010 betrug die durchschnittliche Webseitengröße 481 kB. Im Jahr 2019 - bereits 1936,7 kB ( detaillierte Statistik ). In den letzten drei Jahren ist der Wert dieses Indikators um 314,7% gestiegen. Studien zeigen, dass die Tendenz zur Vergrößerung von Webseiten anhält .
  • Streaming-Audio- und -Videodienste werden derzeit immer beliebter. Im April 2019 betrug die Anzahl der Abonnenten des beliebten Spotify-Dienstes 217 Millionen.
  • Umfragen zufolge verlassen 25% der Benutzer eine Webseite, wenn sie länger als 4 Sekunden geladen wird. 74% der Benutzer, die eine Website von einem mobilen Gerät herunterladen, möchten nicht warten, wenn der Download länger als 5 Sekunden dauert. 46% der Benutzer lehnen es ab, mit einem Webdienst umzugehen, wenn dieser langsam ist.


Wofür zeugen die oben genannten Tatsachen?

Die Tatsache, dass das Internet von Jahr zu Jahr „schwerer“ wird.
Und auch, dass in der modernen Welt die Geschwindigkeit von Websites und Diensten eine große Rolle spielt. Wenn die Geschwindigkeit zu niedrig ist - dies ist mit dem Verlust des Publikums behaftet und in vielen Fällen auch von Gewinn. Eine zuverlässige Möglichkeit, dieses Problem zu lösen, ist die Verwendung von Content Delivery Networks (CDNs).

Selectel bietet seit 2014 CDN-Dienste an, und wir haben die technische Seite des Problems eingehend untersucht. In diesem Artikel werden wir über das Gerät und die Funktionen des modernen CDN sprechen.

Schlüsselbegriffe


Bevor Sie eine ausführliche Diskussion über die Funktionen von CDN beginnen, definieren wir die grundlegende Terminologie.

CDN (Content Delivery Network) ist eine geografisch verteilte Netzwerkinfrastruktur, die Benutzern von Webdiensten und Websites eine schnelle Bereitstellung von Inhalten ermöglicht. Die im CDN enthaltenen Server sind geografisch so angeordnet, dass die Antwortzeit für Benutzer der Site / des Dienstes minimal ist.

Ursprung (Ursprung) - Der Server, auf dem die über das CDN verteilten Quelldateien oder Daten gespeichert sind.

PoP (Point of Presence) - ein Caching-Server innerhalb des CDN, der sich an einem bestimmten geografischen Ort befindet. Der Begriff Kante wird auch verwendet, um sich auf solche Server zu beziehen.

Dynamischer Inhalt - Inhalt, der zum Zeitpunkt des Eingangs der Anforderung auf dem Server generiert wurde (entweder vom Benutzer geändert oder aus der Datenbank heruntergeladen).

Statischer Inhalt - Inhalt, der unverändert auf dem Server gespeichert wird (z. B. Binärdateien, Audio- und Videodateien, JS und CSS).

Ein bisschen Geschichte und Theorie


Der starke Anstieg des Internets Mitte der neunziger Jahre führte dazu, dass die Server der Belastung standhielten. Bei Servern dieser Zeit (die manchmal in den technischen Spezifikationen schwächer waren als die produktivsten modernen Laptops) musste ich verschiedene Tricks anwenden: Google, zum Beispiel „hierarchisches Caching“ und Datenautobahn - jetzt werden diese Sätze nur noch in Artikeln zur Geschichte der Internet-Technologien verwendet . Um zu verstehen, wie sich die Technologie der Inhaltsverteilung entwickelt hat, lassen Sie uns einen kleinen theoretischen Exkurs machen.

Hinweis: Die Verteilung von statischem und dynamischem Inhalt ist mit verschiedenen Arten der Serverlast verbunden. Bei dynamischen Inhalten, deren Generierung mit Aufrufen der Datenbank verbunden ist, sind die Prozessorgeschwindigkeit und die RAM-Größe wichtig.

Für die Verteilung statischer Inhalte, die in den meisten Fällen sehr "schwer" sind und sehr schnell heruntergeladen werden müssen, ist zunächst die Netzwerkgeschwindigkeit wichtig. Technische Lösungen zur Beschleunigung der Verteilung der Statik haben folgende Bedeutung: Bereitstellung einer horizontalen Skalierung ohne komplexe bidirektionale Synchronisation mit dem Hauptserver.

Um die Belastung zu verringern, begannen die Eigentümer von Webdiensten Ende der neunziger Jahre, Statik und Dynamik von verschiedenen Servern zu verteilen. Große Webprojekte mit einem großen Publikum auf der ganzen Welt begannen, statische Server an verschiedenen geografischen Standorten zu hosten.

Ende der neunziger Jahre tauchten dann Unternehmen auf, in denen die Organisation der Verteilung von Statik zu einem der Hauptgeschäftsbereiche wurde. 1998 gründeten der MIT-Student Daniel Levine und der Mathematiklehrer Thomson Leighton Akamai. Jetzt ist es einer der größten (wenn nicht der größte) CDN-Anbieter der Welt.

Bereits im Jahr 2004 verwendeten mehr als 3.000 Unternehmen CDNs. Die Gesamtkosten für die Bereitstellung von Inhalten betrugen bis zu 20 Millionen US-Dollar pro Monat.

Die Anzahl der CDNs auf der ganzen Welt wächst stetig: Relevante Dienste werden sowohl von großen internationalen Unternehmen (z. B. Akamai, Amazon, Cloudflare) als auch von zahlreichen regionalen Anbietern bereitgestellt ( detaillierte Überprüfungen ).

CDN wird nicht nur zur Verteilung von Statiken im engeren Sinne verwendet: Durch die Verteilung von Inhalten auf mehrere Server auf der ganzen Welt wird die Verfügbarkeit in Spitzenzeiten sichergestellt.

In den letzten 10 bis 12 Jahren hat sich im Internet eine andere Art von Inhalten verbreitet - Streaming (zahlreiche Streaming-Audio- und -Videodienste, die heute sehr beliebt sind und ein Millionen-, wenn nicht Milliardstel-Publikum haben). Die heutige Verteilung ist ein weiterer häufiger Anwendungsfall für CDN.

Betrachten Sie die Funktionsprinzipien und Funktionen der Verwendung von CDN genauer.



Wie funktioniert CDN?


Stellen Sie sich einen Webdienst vor, der von Menschen in ganz Russland genutzt wird. Die Hauptserver befinden sich in St. Petersburg, und Benutzer befinden sich an verschiedenen geografischen Standorten: beispielsweise in Krasnodar (2 604,2 km von St. Petersburg entfernt), Nowosibirsk (3 826,1 km), Irkutsk (5 661, 7 km) oder Wladiwostok (9 602, 4 km). Je weiter der Benutzer vom ursprünglichen Server entfernt ist, desto länger ist die „ursprüngliche“ Antwort. Zu Beginn der Runet, Anfang der 2000er Jahre, konnten die Bewohner von Juschno-Sachalininsk oder Petropawlowsk-Kamtschatski 5 bis 10 Minuten warten, bis eine vollständige Webseite vollständig geladen war.

Bei der Verwendung von CDN geschieht alles anders: Ein Benutzer aus Wladiwostok wird als Teil des CDN zum geografisch nächstgelegenen Caching-Server umgeleitet, wodurch die Bereitstellung statischer Inhalte erheblich beschleunigt wird.



Um die Verteilung der Dynamik bei Verwendung von CDN zu beschleunigen, werden andere Mechanismen verwendet: Der CDN-Anbieter reduziert die Netzwerkroute aufgrund seines Netzwerks.

Ein weiteres interessantes Szenario für die Verwendung von CDN ist das sogenannte Live-Streaming: Internetnutzer aus aller Welt können die Sendung von den Veranstaltungsorten aus in einem Browser (und manchmal in einer speziellen Anwendung) sehen oder anhören. Es ist so angeordnet: Ein oder mehrere Ursprungsserver empfangen einen Broadcast-Stream von der Kamera, der sofort an die Präsenzpunkte weitergeleitet wird. Origin-Server verteilen keine Inhalte an Clients. Streaming-CDNs enthalten auch Load Balancer, die Anforderungen an die derzeit am wenigsten belasteten Edgeserver umleiten.

Wie ist die Verteilung von Inhalten organisiert?


Um die Verteilung statischer Inhalte über CDN zu konfigurieren, müssen Sie in der Regel die folgenden Schritte ausführen:

Schritt 1: Verschieben Sie die Site-Statik in eine separate Domäne, z. B. static.example.com - dies ist der Ursprung.

Schritt 2: Um CDN zu bearbeiten, erstellen Sie eine Domain mit dem Formular cdn.example.com.

Schritt 3: Verbinden Sie das CDN vom Anbieter. Um eine Verbindung herzustellen, muss der Eigentümer des Webdienstes den Anbieter über Folgendes informieren:
die Domain, von der statics übernommen wird - static.example.com;
Die Domain, von der aus die Distribution gehen wird, ist cdn.example.com.

Schritt 4: Konfigurieren Sie bei Ihrem DNS-Registrar einen CNAME-Eintrag von cdn.example.com in der Domäne des CDN-Anbieters, den der CDN-Anbieter bei Verbindung zuweist.
In CDN Selectel hat eine solche Domäne beispielsweise die Form 85e77c09-bc03-43bf-b8f3-9492ae33390f.selcdn.net, wobei 85e72c09-bc03-43bf-b8f3-9492ae33390f automatisch generiert wird.

Schritt 5: Ändern Sie auf Ihrer Site die Domain für die Statik, die Sie über CDN an cdn.example.com verteilen möchten.

Der Benutzer gibt in die Browserleiste die Adresse www.example.com ein , von der er eine HTML-Seite erhält. Darüber hinaus werden alle statischen Inhalte, z. B. Grafiken, vom CDN geladen (von der Adresse cdn.example.com).

Statische Inhalte, die zur Verteilung bestimmt sind, werden häufig in Objektspeichern abgelegt (darüber haben wir vor sechs Jahren geschrieben ). Es gibt viele Plugins und Erweiterungen für beliebte CMS (Wordpress, Joomla, Drupal, 1C Bitrix und andere), mit denen Sie die Integration in Cloud-Speicherdienste und die Verteilung von Statik über CDN konfigurieren können.

Nach dem Verbinden des CDN funktioniert der Webdienst auf demselben ursprünglichen Server. Die zwischengespeicherten Teile der Site werden auf die Server des CDN-Netzwerks hochgeladen. Das System findet den nächstgelegenen Server für den Benutzer und lädt die Statik der Site so schnell wie möglich von ihm.

Beachten wir einen wichtigen Punkt: Die im CDN enthaltenen Server ähneln nicht den Dateiservern, auf denen der Inhalt für den späteren Download gehostet wird. CDNs werden nicht zum Speichern von Inhalten verwendet, sondern zum Zwischenspeichern basierend auf bestimmten Algorithmen.

Wie versteht das CDN, wo sich der nächste Caching-Server befindet?


Zum Laden von Inhalten aus CDN werden in der Regel zwei gängige Technologien verwendet: GeoDNS und AnyCast.

Mit GeoDNS können Sie mehrere IP-Adressen an einen einzelnen Domänennamen binden. Abhängig vom geografischen Standort (bestimmt durch die IP-Adresse, von der die Anforderung stammt) wird der Benutzer zum nächsten Server umgeleitet. In diesem Artikel (auf Englisch) können Sie die Funktionen von GeoDNS nachlesen.

Bei Verwendung der Anycast-Technologie sind die Adressen üblich, das Routing erfolgt jedoch an "ihre" Server in der Region. Beim Zugriff auf die Adresse www.example.com wird der Benutzer zum nächstgelegenen Präsenzpunkt weitergeleitet. Der Anbieter des Benutzers empfängt mehrere Ansagen von verschiedenen Netzwerken, die einen Präsenzpunkt haben, und der Router des Anbieters wählt die nächstgelegene aus. Die Antwort wird ebenfalls auf dem kürzesten Weg zurückgegeben.

Wie werden Inhalte zwischengespeichert?


Am gebräuchlichsten ist das Erstzugriffsschema : Der Benutzer, der zuerst auf den ursprünglichen Server zugreift, verbringt die maximale Zeit zum Herunterladen. Alle nachfolgenden Benutzer erhalten Daten, die an ihrem nächstgelegenen Ort zwischengespeichert werden.

Die Geografie ist hier sehr wichtig: Wenn beispielsweise ein Benutzer aus Rio de Janeiro anruft, werden die Daten auf einem Server in Brasilien zwischengespeichert, wodurch die Probleme mit der Zugriffsgeschwindigkeit für Benutzer aus Paris oder London nicht gelöst werden.

Um die durch dieses Schema auferlegten Einschränkungen zu überwinden, werden regionale Extraktionstechnologien verwendet: Im CDN enthaltene benachbarte Server nehmen Inhalte voneinander und greifen nicht auf den ursprünglichen Server zu.

Bei den meisten CDNs wird der Benutzer, der die Anforderung für statischen Inhalt sendet, zum nächstgelegenen Präsenzpunkt umgeleitet und erhält von diesem eine zwischengespeicherte Version dieses Inhalts. Wenn der nächstgelegene Präsenzpunkt die Dateien nicht finden kann, beginnt eine Suche nach benachbarten Präsenzpunkten, von denen aus die Antwort des Benutzers umgeleitet wird. In Akamai CDN wird dieses Verfahren als gestufte Verteilung bezeichnet (Sie können es als „mehrstufige Verteilung“ ins Russische übersetzen).

Wofür werden CDNs verwendet?


Am häufigsten wird CDN verwendet, um die Antwortzeit von zwischengespeicherten Inhalten zu verkürzen, was, wie oben erwähnt, den Abfluss von Besuchern aufgrund des langsamen Ladens der Ressource verringert und dadurch mögliche finanzielle Verluste verringert. CDN verringert auch das Risiko, den Zugriff auf Inhalte aufgrund eines Ausfalls des Primärservers zu verlieren. Der Inhalt ist jederzeit verfügbar, während Sie den Hauptserver wiederherstellen.

Durch die Verwendung von CDN wird die Belastung des Hauptservers erheblich reduziert, wodurch das Problem der Spitzenlasten gelöst werden kann. Das moderne CDN kann sehr große Lasten überstehen. Ende 2018 kündigte Akamai ein Rekordvolumen des übertragenen CDN-Verkehrs an : 72 Tb / s.

Heutzutage werden CDNs auch aktiv zur Verbreitung von Streaming-Inhalten verwendet.

Was ist bei der Arbeit mit CDN zu beachten?


Wie jede Technologie verfügt CDN über eine Reihe von Funktionen.

Das allererste Problem, auf das CDN-basierte Webdienste stoßen können, ist die Cache-Latenz. Die folgende Situation ist sehr wahrscheinlich: Auf dem Hauptserver wurde die Datei geändert, auf Caching-Servern bleibt sie jedoch unverändert. Dies ist besonders wichtig, wenn häufig aktualisierte Inhalte über CDN verbreitet werden (Fotos aus der Szene, neue Softwareversionen usw.).

Um die Bereitstellung von "frischem" Inhalt in modernen CDNs sicherzustellen, gibt es eine Cache-Löschfunktion, dh das Entfernen von Inhalten aus dem Cache-Pool. Darüber hinaus können die Eigentümer von Websites und Diensten die Einstellungen mithilfe der Validator-Header selbst verwalten (siehe unsere Empfehlungen zu diesem Thema in einem zuvor veröffentlichten Artikel ).

Eine weitere Schwierigkeit ist mit dem Blockieren verbunden: Wenn aus dem einen oder anderen Grund Dienste, die Ihre "Nachbarn" vom IP CDN-Anbieter sind, blockiert werden, wird Ihre Site möglicherweise mit Ihnen blockiert. Dieses Problem kann jedoch gelöst werden: Auf Anfrage können CDN-Anbieter Ihre IP-Adresse ändern.

Wer braucht ein CDN?


CDN wird hauptsächlich für Projekte mit einem großen Publikum in verschiedenen Regionen oder Ländern benötigt. Hier ist alles klar: Reduzierung von Verzögerungen, schnelle Verteilung von Inhalten und Erhöhung des Komforts sowie damit zufriedenere Benutzer.

CDN kann auch für Entwickler mobiler Anwendungen nützlich sein: Laut Statistik weigern sich Benutzer aufgrund von Geschwindigkeitsproblemen häufig, mit der Anwendung weiterzuarbeiten. In jüngster Zeit sind spezielle technische Lösungen erschienen, die sich auf die Verteilung von Inhalten auf mobile Geräte konzentrieren. Sie werden als mobile CDNs bezeichnet. Die entsprechenden Dienste werden von vielen großen CDN-Anbietern angeboten - zum Beispiel Akamai oder Amazon.

Benötigen Sie CDN und Projekte, die sich auf die Verbreitung von Spielen, Multimedia-Inhalten und Streaming konzentrieren (wie oben erwähnt).

Worauf Sie bei der Auswahl eines CDN-Anbieters achten sollten (anstelle einer Schlussfolgerung)


Die Anzahl der Benutzer Ihres Webdienstes wächst, die Zielgruppe wächst und Sie möchten ein CDN anschließen, um die Verteilung der Statik zu optimieren und zu beschleunigen und die Belastung der Hauptserver zu verringern.

Worauf sollte ich bei der Auswahl eines CDN-Anbieters achten?

Erstens die Anzahl der Präsenzpunkte . Dies gilt insbesondere für Projekte mit einem breiten internationalen Publikum. Es ist hilfreich, Informationen zu Präsenzpunkten in den für Sie interessantesten Regionen zu erhalten und diese mit dem potenziellen Publikum der Website zu vergleichen.

Zweitens ist es das Vorhandensein von Verbindungen mit Telekommunikationsbetreibern . Dies ist auch ein wichtiger Faktor, von dem die Geschwindigkeit und Effizienz des CDN abhängt. Beispielsweise kann ein CDN-Anbieter mit Präsenzpunkten in 100 Städten, jedoch mit einer geringen Anzahl von Verbindungen, eine längere Verzögerung haben als ein Anbieter mit Präsenzpunkten in 5 Städten, es gibt jedoch viel mehr Verbindungen zu Telekommunikationsbetreibern.

Leider veröffentlichen CDN-Anbieter in den meisten Fällen solche Informationen nicht, sodass Sie alles nur durch Testen überprüfen können.

Drittens die Verfügbarkeit zusätzlicher Dienste und Funktionen . Viele CDN-Anbieter bieten Dienste wie das Analysieren von Verbrauchsstatistiken, das Verwalten von Caching-Richtlinien, das Verwalten von HTTP-Headern, das Vorladen sehr „schwerer“ Inhalte (ab 200 MB) und das vollständige und selektive Löschen des Caches.

Darüber hinaus müssen Sie bei der Auswahl eines CDN-Anbieters prüfen, ob dieser die von Ihnen benötigten Technologien und Protokolle unterstützt (HTTP / 2-, IPv6-, SSL-Zertifikate und andere).

Source: https://habr.com/ru/post/de463915/


All Articles