-
STAND DER
TECHNIK
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft ein System und eine Vorrichtung zur
parallelen Zufuhr von Segmenten großer Nutzlastdateien in Echtzeit.
Im Besonderen sieht die vorliegende Erfindung eine effiziente Architektur
und eine Technik zum Speichern und zur Übermittlung von Dateien an
einen Anwender an einem entfernten Standort vor, wobei die Dateien
zum Beispiel Medieninhalte wie etwa Audio, Video und/oder Daten
aufweisen.
-
Beschreibung
des Stands der Technik
-
Die
Fortschritte auf dem Gebiet der Kommunikation und des Switching
bzw. Umschaltens in Telekommunikationsnetzen bzw. Fernmeldenetzen
entwickeln sich mit hoher Geschwindigkeit weiter. Die Übertragung großer Dateien
(z.B. von Medieninhalten wie etwa Audio- und/oder Videodateien)
zwischen Standorten bzw. Positionen ist jedoch weiterhin eine Aufgabe,
die viel Zeit in Anspruch nehmen kann. Bei der Zustellung einer großen Mediendatei
an einen Anwender bzw. Benutzer kann die Übertragungszeit zum Beispiel
im Bereich vieler Minuten bis Stunden liegen, bis die Nutzung der
Datei (z.B. das Ansehen eines Films) beginnen kann.
-
Eine
herkömmliche
Technik zur Vermeidung derartiger Verzögerungen bei der Präsentation
von Medieninhalten an einen Anwender ist das Replizieren von Kopien
des Inhalts an verschiedenen Orten bzw. Stellen in dem Netz bzw.
Netzwerk "in der
Nähe" des Anwenders. Dies
kann zwar das Problem der Verzögerung beheben,
allerdings ist es eine teuere Lösung,
da dafür
sehr große
Speicherkapazitäten
erforderlich sind, um mehrere Kopien der Mediendatei zu speichern.
Ferner ist dabei eine Medienmanagementanwendung für Betreiber
erforderlich, um die replizierten Kopien der Inhalte zu verwalten.
Speicheradministratoren müssen
die Speicherressourcen sorgfältig
verwalten, um sicherzustellen, dass keine Speichereinrichtung ihre
Kapazitätsgrenze
erreicht. Wenn einer Speichereinrichtung der Speicherplatz ausgeht,
schlägt
ein weiterer Versuch zum Replizieren von neuem Inhalt an der entsprechenden
Einrichtung fehl.
-
Zu
den anderen bekannten Techniken zählt das Proxy-Caching auf Anwendungsebene
wie etwa das Web-Caching und das Streaming-Caching. Derartige Lösungen erfordern nicht den
Einsatz nicht verwaltbarer Speichermengen. Die Lösung funktioniert allerdings
nur, wenn der gewünschte
Inhalt an einer Stelle in der Nähe
des anfordernden Anwenders bzw. Benutzers gecached wird. Wenn ein
Benützer
nicht im Cache gespeicherte Inhalte anfordert, so müssen die
Inhalte von einer anderen Stelle abgerufen werden, häufig in
Verbindung mit einer unzulässigen
Verzögerung.
-
Ein
weiteres Problem in Bezug auf Content-Delivery-Systeme bzw. Systeme
für die
Zufuhr von Inhalten ist es, dass jeder Systemprozessor oder Knoten
eine Mehrzahl gleichzeitig ablaufender Prozesse oder Threads bzw.
Prozessstränge
bearbeiten muss. Diese Mehrzahl von Threads und Prozessen erfordert
häufig einen
atomaren Zugriff auf gemeinsam genutzte Daten, die in Dateien gespeichert
werden. Wenn die Threads oder Prozesse auf einer einzigen Vorrichtung
ausgeführt
werden, können
Schutz- bzw. Sperrmechanismen verwendet werden, wie zum Beispiel
Mutexe oder Semaphore bzw. Flaggen, die durch das Betriebssystem
bereitgestellt werden, um eine Atomizität zu erreichen. Derartige Sperr-
bzw. Schutzmechanismen lassen sich jedoch über eine Mehrzahl bzw. ein
Cluster von Vorrichtungen schwerer implementieren. Darüber hinaus
ist ein derartiger Dateischutz beim Einsatz des Network File Systems
(NFS) für
die gemeinsame Nutzung von Dateien in einem Cluster von Vorrichtungen
nicht zuverlässig.
Eine Lösung
für dieses
Problem ist die Entwicklung eines Sperr- bzw. Schutzmanagers, um
anderen Prozessen oder Threads einen Schutz bzw. eine Sperrfunktion
zu gewähren.
Allerdings ist die Gestaltung eines Sperr- bzw. Schutzmanagers schwierig,
der Ausfallsicherungen behandeln bzw. bearbeiten kann. Da der Sperrmanager
stets die Kontrolle über
seine Clients aufweisen muss, kann die Wiederherstellung eines Zustands
nach einem Ausfall eine große
Herausforderung darstellen.
-
"Parallel-Access for
Mirror Sites in the Internet" von
Pablo Rodriguez, Andreas Kirpal, Ernst W. Biersack, Institut Eurocom,
März 2000
(2000–03),
Seiten 1–11,
XP002204896, offenbart ein System, bei dem Clients parallel auf
mehrere Spiegelorte zugreifen, um das Herunterladen von Dokumenten
zu beschleunigen, während
das Problem der Serverauswahl umgangen wird. Das offenbarte System
sorgt für
den Fall, dass ein Client ein bestimmtes Dokument anfordert und
das Dokument nicht in dem lokalen Cache gefunden wird, für eine Umleitung
der Anforderung an den besten benachbarten Cache mit einer Dokumentenkopie.
Dieses Referenzdokument offenbart ferner ein auf der Historie basierendes
Zugriffssystem, das Informationen der vorangehenden Übertragungsraten
zwischen dem Client und jedem Spiegel-Server verwendet. Das System
benötigt
diese Informationen, um zu entscheiden, welcher Dokumentenabschnitt
durch jeden Server geliefert werden soll. Wenn der Client alle Blöcke empfängt, setzt
er diese neu zusammen und rekonstruiert das ganze Dokument. Das
U.S. Patent US-A-6.081.840 offenbart einen Quellen-Content-Manager,
der die Dateninhalte eines Quellen-Content-Servers verwaltet. Dieses
Referenzdokument offenbart ferner für den Fall, dass in dem Quellen-Content-Server eine Dateiaktualisierung
auftritt, dass der Quellen-Content-Manager
eine Nachricht an einen Datenreplikations-Manager sendet, um die Datenreplikation
zu starten. Der Datenreplikations-Manager steuert danach das Verfahren,
wodurch die Daten von der Quelle an die lokalen Server kopiert werden.
-
Benötigt werden
ein System und ein Verfahren zur Verteilung großer Dateien, die die Einschränkungen bekannter
Systeme überwinden.
-
KURZE ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein Computerprogramm gemäß dem gegenständlichen
Anspruch 5.
-
Vorgesehen
ist gemäß einem
dritten Aspekt der vorliegenden Erfindung ein computerbasiertes
System gemäß dem gegenständlichen
Anspruch 7.
-
Vorgesehen
ist gemäß einem
vierten Aspekt der vorliegenden Erfindung eine Vorrichtung gemäß dem gegenständlichen
Anspruch 11.
-
Die
Erfindung behandelt bzw. verwaltet die Verteilung großer Dateien über ein
Netzwerk wie etwa über das
globale Internet.
-
Das
erfindungsgemäße skalierbare
Content-Delivery-Netzwerk (SCDN als englische Abkürzung von Scalable
Content Delivery Network) platziert mehrere Verteilungszentren oder
Verteilungsstationen in dem Netzwerk. Ein Mechanismus zum parallelen
Herunterladen stellt sicher, dass eine angeforderte Datei rechtzeitig
für den
Verbrauch bzw. Konsum durch einen Benutzer bzw, einen Anwender an
einer Station vorliegt. Dieser Mechanismus wird zum Lösen von
Caching- und Speicherproblemen für
lese-schreibfähige
integrierte Netzwerkdateisysteme eingesetzt, wobei es für die Zustellung
bzw. Lieferung großer
Dateien verwendet werden kann, wie sie etwa bei Video-on-Dernand vorkommen,
wobei dieses Problem in der Branche als durchaus schwer zu lösen angesehen
wird.
-
Der
erfindungsgemäße Mechanismus
zum parallelen Herunterladen teilt die Dateien in kleinere Einheiten
auf, die als Tracks bezeichnet werden, wobei die Aufteilung gemäß der Beschaffenheit
der Daten erfolgt, welche sie aufweisen. Diese Unterteilung bzw.
Aufteilung bildet die Basis für
das parallele Herunterladen. Beim parallelen Herunterladen lädt eine
Station in dem Netzwerk Blockdateien parallel und nicht zusammenhängend von
mehreren anderen Stationen herunter, wodurch eine höhere Leistung
erreicht wird. Darüber
hinaus lädt die
Station mehr Blockdateien von Stationen herunter, die eine höhere Netzwerkbandbreite
aufweisen und weniger (oder keine) Blockdateien von Stationen mit
geringerer Netzwerkbandbreite. Die Bestimmung, welche Stationen
eine hohe oder niedrige Netzwerkbandbreite aufweisen, erfolgt dynamisch
in Laufzeit.
-
Die
Parallelität
bei einem parallelen Download wird auf zwei Ebenen implementiert:
einer Prozessebene und einer Thread-Ebene. In jedem Verteilungszentrum sind
mehrere Verteilungs-Server für
die bedarfsbasierte Datenerfassung in jeder der Stationen zuständig. Ein
Cluster von Verteilungs-Servern
existiert an jeder Station und teilt sich das Arbeitsaufkommen des
Herunterladens einer Datei, wobei eine Parallelität auf Prozessebene
ausgeführt
wird. Ferner erzeugt ein einzelner Verteilungs-Server eine Reihe
von Threads bzw. Prozesssträngen
zur Erfassung von Blockdateien, wobei eine Parallelität auf Thread-Ebene
ausgeführt
wird.
-
Die
verschiedenen Threads und Prozesse, die an einem parallelen Download
beteiligt sind, müssen atomar
auf in den gemeinsam genutzten Dateien gespeicherte Metadaten zugreifen.
Ein Folgeserver sieht einen sperr- bzw. schutzfreien Mechanismus
für mehrere
Threads oder Prozesse für
den atomaren Zugriff auf Daten vor. Er ermöglicht Clients den sequenziellen
Zugriff auf Daten oder das Feststellen, ob gegen die Folge verstoßen worden
ist, so dass die Operation der Clients erneut versucht werden kann
oder korrigierende Maßnahmen
ergriffen werden können.
Der Folgeserver erreicht dies, indem jedem gemeinsam genutzten Datenobjekt
eine zufällige
bzw. wahlfreie "Folgenummer" zugewiesen wird.
Das gemeinsam genutzte Datenobjekt ist ein Zellen- oder Blockspeicherindex
oder eine Flagge, der bzw. die anzeigt, ob die angeforderte Blockdatei heruntergeladen,
nicht heruntergeladen oder zurzeit heruntergeladen wird. Wenn ein
Client bei dem Folgeserver den Wert des gemeinsam genutzten Datenobjekts
anfordert und dessen Intention anzeigt, den Wert zu verändern, so
erhöht
der Folgeserver die den Daten zugeordnete Folgenummer und gibt die
Daten sowie die (erhöhte)
Folgenummer an den Client zurück.
Der Client modifiziert bzw. verändert
den Datenwert (d.h. die Flagge) und führt diesen bzw. diese gemeinsam
mit der Folgenummer zurück
an den Folgeserver. Der Folgeserver vergleicht die zurückgegebene
Folgenummer mit der aktuellen Folgenummer für das Datenobjekt. Wenn sich die
Nummer unterscheidet, bedeutet dies, dass ein anderer Client zwischenzeitlich
den Wert der Datenzeit in der Absicht angefordert hat, diesen zu
modifizieren. Anders ausgedrückt
wurde gegen die erste Folge bzw. die Sequenz des Client verstoßen: er
hatte keinen exklusiven Zugriff auf die Daten während dem Zeitraum, als er versuchte,
eine Lese-Modifikations-Schreib-Operation
auszuführen.
Der Folgeserver weist somit die Aktualisierungsanforderung von dem
ersten Client auf und informiert den Client über den Folgeverstoß. Der erste
Client muss danach nach Bedarf korrigierende Maßnahmen vornehmen. Abhängig vom
Kontext und den Konventionen unter Clients versucht er die Operation
entweder erneut, wobei ein neuer Lesevorgang und eine neue Folgenummer
angefordert werden oder die Ausführung
der Operation wird dem anderen Client überlassen.
-
Das
erfindungsgemäße System
weist eine Mehrzahl von Verteilungszentren oder Stationen im Netzwerk
auf. Jedes Verteilungszentrum weist einen Verteilungs-Server-Cluster
mit einer Mehrzahl von Verteilungs-Servern, einem Lastverteiler
(Load Balancer) und einem Folgeserver. Das Verteilungszentrum weist
ferner eine Steuereinheit, ein virtuelles Dateisteuersystem-Cluster
zur Schnittstellverbindung von einem oder mehreren Anwendungs-Servern,
ein Speichersystem, einen Speicherschalter und einen Schalter in
Bezug auf die Steuerung zwischen Stationen auf.
-
Die
Erfindung speichert nur Abschnitte bzw. Teile von Dateien an Verteilungszentren.
Wenn später eine
Datei angefordert wird, kann die Zustellung bzw. Lieferung unter
Verwendung des lokal gespeicherten Abschnitts der Datei direkt beginnen.
Während
die lokal gespeicherten Teile der Datei zugestellt werden, kann das
Verteilungszentrum den Rest der Datei von einem oder mehreren Verteilungszentren
erfassen. Die Datei kann danach nur als Reaktion auf eine Benutzeranforderung
assembliert werden. Dies reduziert die erforderliche lokale Speicherkapazität der Datei,
da Dateien nicht an jedem Verteilungsort gespiegelt werden.
-
Das
erfindungsgemäße Verfahren
des Assemblierens einer Datei umfasst die folgenden Schritte: das Bestimmen
auf der Basis der Anforderung, welche Inhaltskomponenten (d.h. Blockdateien)
zum Assemblieren der Datei erforderlich sind; das Senden einer Suchanforderung,
wenn nicht alle Inhaltskomponenten an dem ersten Knoten vorhanden
sind, um zu bestimmen, welche anderen Knoten Inhaltskomponenten
aufweisen; das Empfangen von Antworten auf die Suchanforderung von
den anderen Knoten, wobei jede Antwort von einem antwortenden Knoten
anzeigt, welche Inhaltskomponenten von dem antwortenden Knoten zur
Verfügung stehen;
das Bestimmen einer gewünschten
Anordnung mindestens eines Knotens für das Herunterladen der Inhaltskomponenten;
das Herunterladen der Inhaltskomponenten von der gewünschten
Anordnung; und das Assemblieren der Datei aus den heruntergeladenen
Inhaltskomponenten. Die Anzahl der herunterzuladenden Inhaltskomponenten
oder Blockdateien wird zumindest teilweise auf der Basis der der
Datei zugeordneten Metadaten bestimmt.
-
Wenn
ein Verteilungszentrum Blockdateien von anderen Verteilungszentren
anfordert, wird eine hierarchische Struktur für die effiziente Datenübertragung
zwischen den Verteilungszentren verwendet, während die Anzahl der Knoten
beschränkt
ist, an welche eine Anforderung gesendet werden muss. Zum Beispiel
sind die Attribute der Verteilungszentren den benachbarten Verteilungszentren
bekannt. In ähnlicher Weise
weist jede Dateianforderung Verteilungskriterien für die angeforderte
Datei auf. Dies ermöglicht
jedem Verteilungskriterium einen Vergleich der Attribute, und wobei
nur Dateianforderungen durch die Baumstruktur an entsprechende Verteilungszentren
weitergeleitet werden. Zum Beispiel muss eine Datei mit einem Verteilungskriterium "Nur USA" nicht an ein Verteilungszentrum
in Europa gesendet werden, welches das Attribut "Europa" aufweist.
-
Die
Erfindung weist ferner ein Computerprogrammprodukt auf, das ein
computerlesbares Medium mit einer computerlesbaren Programmcodeeinrichtung
umfasst, ausgeführt
in dem Medium, um die Ausführung eines
Anwendungsprogramms auf einem Computer zum Assemblieren einer Datei
als Reaktion auf eine Anforderung von einem Benutzer zu bewirken,
die an einen ersten Knoten in einem Netzwerk mit einer Mehrzahl angeschlossener
Knoten gesendet wird. Die computerlesbare Programmcodeeinrichtung
umfasst:
eine erste computerlesbare Programmcodeeinrichtung,
die es bewirkt, dass der Computer auf der Basis der Anforderung
bestimmt, welche Inhaltskomponenten zum Assemblieren der Datei erforderlich
sind;
eine zweite computerlesbare Programmcodeeinrichtung,
die es bewirkt, dass der Computer eine Suchanforderung sendet, wenn
alle Inhaltskomponenten nicht an dem ersten Knoten vorhanden sind,
um zu bestimmen, welche anderen Knoten Inhaltskomponenten aufweisen;
eine
dritte computerlesbare Programmcodeeinrichtung, die es bewirkt,
dass der Computer von den anderen Knoten Antworten auf die Suchanforderung
empfängt,
wobei jede Antwort von einem antwortenden Knoten anzeigt, welche
Inhaltskomponenten von dem antwortenden Knoten zur Verfügung stehen;
eine
vierte computerlesbare Programmcodeeinrichtung, die es bewirkt,
dass der Computer eine gewünschte Anordnung
mit mindestens einem Knoten bestimmt, von dem die Inhaltskomponenten
heruntergeladen werden sollen;
eine fünfte computerlesbare Programmcodeeinrichtung,
die es bewirkt, dass der Computer die Inhaltskomponenten von der
gewünschten
Anordnung herunterlädt;
und
eine sechste computerlesbare Programmcodeeinrichtung, die
es bewirkt, dass der Computer die Datei aus den heruntergeladenen
Inhaltskomponenten assembliert.
-
Zu
den Vorteilen der vorliegenden Erfindung zählt die Fähigkeit, dass mehrere Threads
bzw. Prozessstränge
oder Prozesse eine Datei mit hoher Leistung bzw. Effektivität herunterladen
können,
indem Teile der Datei parallel heruntergeladen werden, und die Fähigkeit,
dass mehrere Threads und Prozesse auf unterschiedlichen Vorrichtungen
ausgeführrt
werden können,
um das parallele Download untereinander synchronisieren zu können. Diese
und weitere Merkmale und Vorteile der Erfindung werden nachstehend
in Bezug auf die beigefügten
Zeichnungen beschrieben.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den Zeichnungen sind die gleichen oder im Wesentlichen übereinstimmenden
Elemente mit den gleichen Bezugsziffern bezeichnet. Ferner bezeichnen
die am weitesten links angeordnete(n) Stelle(n) der Bezugsziffern
die Nummer der Zeichnung bzw. der Abbildung, in der die Bezugsziffer
zuerst verwendet wird. Die Zeichnungen veranschaulichen die vorliegende
Erfindung, und sie dienen in Verbindung mit der Beschreibung der
Erläuterung
der Grundsätze
der Erfindung und ermöglichen
einem Fachmann auf dem Gebiet die Realisierung und Nutzung der Erfindung.
In den beigefügten
Zeichnungen zeigen:
-
1 ein
skalierbares Content-Delivery-Netzwerk (SCDN) 100 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
2 eine
hierarchische Baumstruktur, in der die Knoten des Netzwerks 100 gemäß einem
Ausführungsbeispiel
der Erfindung angeordnet sind;
-
3 eine
beispielhafte Attribut-Bitmap gemäß einem Ausführungsbeispiel
der Erfindung;
-
4 ein
Blockdiagramm eines Verteilungszentrums 114 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
5 ein
detaillierteres Blockdiagramm eines Verteilungszentrums 114 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
6 ein
Blockdiagramm eines Verteilungs-Server-Clusters 406 gemäß einem
Ausführungsbeispiel der
Erfindung;
-
7 eine
Dateiverteilung in Form von Blockdateien über mehrere Verteilungszentren 114 in
einem Netzwerk 100 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
8 die
Verwaltung von Blockdateien über
mehrere Verteilungszentren 114 in dem Netzwerk 100 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
9 die
Art und Weise der Lastverteilung von Suchantworten auf verschiedene
Verteilungs-Server 504 in einem Verteilungszentrum 114 gemäß einem
Ausführungsbeispiel
der Erfindung;
-
10 die
Ausführung
eines parallelen Downloads durch die Verteilungs-Server 504 gemäß einem Ausführungsbeispiel
der Erfindung;
-
11 eine
zeitliche Darstellung für
das Herunterladen einer Blockdatei gemäß einem Ausführungsbeispiel
der Erfindung;
-
12 ein
Flussdiagramm der Schritte zum Abrufen der Blockdateien einer Nutzlastdatei
zum erneuten Assemblieren gemäß einem
Ausführungsbeispiel
der Erfindung;
-
13 ein
Flussdiagramm des Betriebs eines Folgeservers gemäß einem
Ausführungsbeispiel
der Erfindung; und
-
14 ein
Blockdiagramm eines Computersystems 1400, das eine repräsentative
Umgebung für
die Implementierung der vorliegenden Erfindung bereitstellt.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein Verfahren und ein System zum
Speichern und Verteilen großer Dateien.
Im Besonderen stellt die Erfindung eine hoch effiziente Architektur
und Technik zum Verarbeiten, Speichern und Bereitstellen von Dateien
wie etwa von Medieninhalten an einen Anwender bzw. einen Benutzer zu
Schulungs-, Unterhaltungs-, geschäftlichen oder einem beliebigen
anderen Zweck bereit. Ein Verfahren, System und Computerprogrammprodukt
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung erzeugen ein hoch entwickeltes lese-schreibfähiges integriertes
Netzwerkdateisystem, in dem die Verzeichnisdarstellung und die Datenspeicherung
getrennt sind. Das Verfahren und das System weisen die Unterteilung, Verteilung
und das erneute Assemblieren von Dateien auf, ohne dass dabei die
Darstellung des Inhalts an den Anwender bzw. Benutzer signifikant
verzögert
wird. Die Erfindung umfasst ferner das Erzeugen eines integrierten
Dateisystems und die Verteilung von Dateisystemobjekten einschließlich Volumina,
Verzeichnissen und Dateien.
-
Vorgesehen
ist gemäß einem
Ausführungsbeispiel
der Erfindung ein verbesserter Mechanismus zur Unterteilung und
Verteilung von Dateien (als "Nutzlast" oder "Inhalt" bezeichnet) über ein
Computernetzwerk (z.B. ein Internet wie etwa das globale Internet).
Vorgesehen ist gemäß einem
weiteren Ausführungsbeispiel der
Erfindung ein Verfahren zur Erzeugung einer integrierten Dateisystemansicht
mehrere Inhaltsknoten (auch als Stationen oder Verteilungszentren
bezeichnet). Vorgesehen ist gemäß einem
weiteren Ausführungsbeispiel
ein Verfahren zum Verteilen, Replizieren und Synchronisieren der
Aktualisierung von Dateisystemobjekten wie etwa von Volumina, Verzeichnissen
und Dateien. In der folgenden Beschreibung sind zahlreiche besondere
Einzelheiten ausgeführt,
um eine umfassendere Beschreibung der Ausführungsbeispiele der Erfindung
vorzusehen. Die Beschreibung schränkt die Erfindung nicht ein.
Zum Beispiel wird zwar auf das Internet Protocol (IP) und UNIX verwiesen,
wobei aber auch jedes andere Paketprotokoll und jedes beliebige
Betriebssystem verwendet werden können.
-
Der
hierin verwendete Begriff "Datei" bezeichnet eine
Sammlung digitaler Daten oder Informationen. Der Begriff "Datei" schließt sowohl
eine vollständige
Datei als auch jeden gewünschten
Abschnitt bzw. Teil einer Datei ein. Zu den Beispielen für Dateien
zählen
Textverarbeitungsdokumente, Bücher,
Datenbanken, Tabellen, digitale Bilder (z.B. JPEG, TIF, GIF, Bitmaps
etc.), Filme (z.B. MPEG-Dateien), Musik (z.B. MP3- und WAF-Dateien)
und dergleichen sowie jeder Teil bzw. Abschnitt dieser.
-
Die
vorliegende Erfindung stellt für
Endverbrauchersysteme eine Möglichkeit
für den
Zugriff auf Dateisystemobjekte bereit, ohne dabei das von dem Endverbrauchersystem
für die
Datenübermittlung
verwendete Netzwerk zu überlasten.
In einem Ausführungsbeispiel
erreicht das System dies, indem die Dateien in mehrere Abschnitte
bzw. Teile (Segmente oder Tracks bzw. Titel) unterteilt und diese
Abschnitte und anderen Dateisystemobjekte an Plätzen bzw. Stellen (z.B. Knoten)
gespeichert werden, die über
das Netzwerk verteilt sind. Die im Netzwerk gespeicherten Dateiabschnitte
und anderen Dateisystemobjekte werden unter Verwendung einer Flussoptimierungstechnik
verteilt, die eine intelligente Verwaltung der Dateisystemobjekte
und Datenabschnitte vorsieht. Dateisystemobjekte und Dateiabschnitte
werden somit an Stellen gespeichert, welche den erforderlichen Zeitraum
für die
Zustellung des Inhalts an das Endverbrauchersystem so gering wie
möglich
halten. Diese Stellen minimieren die der Zustellung bzw. der Lieferung
der Daten an das Endverbrauchersystem zugeordnete Latenz und werden
hierin als "Rand" des Netzwerks bezeichnet.
-
Jeder
Knoten am Rand des Netzwerks, der Aspekte der Erfindung verkörpert, ist
so konfiguriert, dass er so erscheint, als wäre die Datei lokal gespeichert,
wobei tatsächlich
Teile der Datei an anderen, über
das Netzwerk verteilten Knoten gespeichert sind. Dies erhöht die virtuelle
Speicherkapazität
jedes Netzwerkknotens erheblich, ohne dabei Systemressourcen zu
verbrauchen. Die Knoten verteilen und replizieren Datenblöcke und
andere Dateisystemobjekte auf eine Art und Weise, welche die Datenübertragungseffizienz
maximiert, während
der Bandbreitenverbrauch gleichzeitig minimiert wird. Wenn das Endverbrauchersystem
eine Anforderung für
Inhalte (z.B. eine Datei) ausgibt, wird die Anforderung zu dem naheliegendsten
Knoten geroutet, und dieser Knoten importiert nicht lokal vorhandene
Daten des angeforderten Inhalts von anderen Knoten auf eine Art
und Weise, die die geringste Zeit und die niedrigsten Kosten verursacht.
Das Endergebnis ist es, dass jeder Netzwerkknoten Zugriff auf zahlreiche
oder alle Dateisystemobjekte (Volumina, Verzeichnisse und Dateien)
aufweist, ohne dass der gesamte Inhalt jedes dieser Objekte lokal
gespeichert oder gepflegt werden muss.
-
Vorgesehen
sind gemäß der vorliegenden
Erfindung effiziente Verfahren und Systeme zur Aufteilung bzw. Unterteilung
einer Datei zum Speichern und zur folgenden Wiederherstellung der
Datei für
die Lieferung bzw. Zustellung. Das Verfahren der Aufteilung einer
großen
Datei wird als "Chunking" bezeichnet und ist
nachstehend im Text näher
beschrieben. Vorgesehen ist gemäß der vorliegenden
Erfindung ferner ein Verfahren zum Erzeugen eines integrierten Dateisystems
aus mehreren Knoten. Vorgesehen ist gemäß der Erfindung zudem ein Verfahren
zum Verteilen, Replizieren und Synchronisieren von Dateisystemobjekten
unter einem Netzwerk von Knoten, und wobei ein Verfahren und ein
System vorgesehen sind, um eine Gruppe virtueller Dateisysteme in
Clustern zusammenzufassen. Das Clustering einer Gruppe virtueller
Dateisysteme erhöht
die Zuverlässigkeit
und Verfügbarkeit
sowie die E/A-Bandbreite durch eine Lastverteilung.
-
Parallel
Download ist ein Mechanismus, der in dem skalierbaren Content-Delivery-Netzwerk
(SCDN) der Erfindung eingesetzt wird, um sicherzustellen, dass eine
nachgefragte Datei an einer Station rechtzeitig für den Konsum
durch einen Benutzer bzw. Anwender vorliegt. Dieser Mechanismus
wird zum Lösen
des Problems des Content-Cachings und -Speicherns für die Zustellung
großer
Dateien verwendet, wie diese etwa bei Video-on-Demand auftreten.
-
Im
Netzwerk werden die Dateien in kleinere Einheiten unterteilt, so
genannte "Tracks" bzw. Titel, wobei die
Aufteilung gemäß der Beschaffenheit
der in den Tracks enthaltenen Daten erfolgt. Die Tracks werden weiter
in kleinere Einheiten gleicher Größe unterteilt, die als "Blockdateien" bezeichnet werden.
Der Begriff "Inhaltskomponente" wird hierin zur
Bezeichnung einer oder mehrerer Blockdateien einer größeren Datei
verwendet. Die Unterteilung bildet die Basis für das parallele Herunterladen,
was in zwei Ebenen implementiert wird: auf Prozessebene und auf
Thread-Ebene. Hiermit wird festgestellt, dass jeder Prozess eine
Mehrzahl von Threads aufweisen kann. In dem Netzwerk ist eine als
Verteilungs-Server bezeichnete Komponente für die bedarfsgerechte Datenerfassung
in jeder der Stationen zuständig.
Ein Verteilungs-Server existiert neben anderen Verteilungs-Servern
in dessen Station, um die Arbeit der Erfassung eines bestimmten
Tracks gemeinsam auszuführen.
Alle Verteilungs-Server in einer Station arbeiten bei der Erfassung
der Blockdateien zusammen, wobei eine Parallelität auf Prozessebene ausgeführt wird.
Ferner bringt ein einzelner Verteilungs-Server eine Reihe von Threads
hervor, um Blockdateien zu erfassen, wobei eine Parallelität auf Thread-Ebene ausgeführt wird.
-
I. Überblick
-
Die
Abbildung aus 1 zeigt eine Ansicht des skalierbaren
Content-Delivery-Netzwerks (SCDN) 100 für die Zustellung bzw. Lieferung
großer
Nutzlasten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Das Netzwerk 100 kann ein Netzwerk
darstellen, wie etwa das Internet, das konzeptionell einen Netzwerkkern 102 (d.h.
Backbone), intermediäre
Netzwerksegmente 104, die "nah" bis "fern" in Bezug auf den
Kern 102 angeordnet sind. "Nah" und "fern" beziehen sich auf
die Entfernung und zeigen die relativen Pfadlatenzen (kurz bzw.
lang) zu dem Kern 102 an, wobei die Latenzen allgemein
von der Anzahl der intermediären
Hubs (z.B. Switches, Router und dergleichen) abhängig sind, die passiert werden,
um die Hochgeschwindigkeits-Backbones zu erreichen, die den Kern 102 des
Netzwerks 100 bilden und durch welche ein Großteil des Netzwerkverkehrs
geführt
wird. Hiermit wird festgestellt, dass jeder intermediäre Hub eine
begrenzte Verarbeitung ausführen
kann, was die Latenz erhöht,
bevor der Verkehr zu dem nächsten
Hub geleitet wird. Zu Veranschaulichungszwecken sind die Segmente 104A und 104C weit
von dem Kern 102 entfernt dargestellt, während das
Segment 104B nahe an dem Kern 102 dargestellt
ist.
-
Das
Netzwerk 100 weist eine Mehrzahl von Content Provider Clients
(CPCs) 106 auf, eine Mehrzahl von Endverbraucher-Clients (EUCs als
englische Abkürzung
von End-User Clients) 108 und einen oder mehrere Content
Management Server (CMSs) 110, die alle jenseits des Netzwerkrands 112 angeordnet
sind. Diese Anordnung dient Veranschaulichungszwecken und ist nicht
einschränkend.
Zum Beispiel können
ein Content Provider Client 106, ein Endverbraucher-Client 108 und/oder
ein Content Management Server 110 an jeder Stelle in dem
Netzwerk angeordnet sein, einschließlich jenseits eines Netzwerkrands,
an einem Netzwerkrand oder an jeder Stelle innerhalb des Netzwerks,
wie etwa in einem Netzwerksegment 104 oder dem Kern 102.
-
Eine
Mehrzahl von Verteilungszentren oder Stationen 114 ist
an verschiedenen Stellen in dem Netzwerk 100 platziert.
Die Verteilungszentren 114 sind für die Verwaltung der Content-Zustellung zuständig.
-
Im
Allgemeinen kann jeder Content Provider Client 106 mit
einem Content Management Server 110 verbunden (oder diesem
zugewiesen) werden, der wiederum mit einem zugeordneten Verteilungszentrum 114 verbunden
ist. Alternativ kann der Content Provider Client 106 mit
jedem Verteilungszentrum 114 verbunden (oder diesem zugeordnet)
sein. In dieser Umgebung kann jede vom Netzwerk 100 unterstützte Verbindung
verwendet werden. Zu den Beispielen für diese Verbindungen zählen unter
anderem ein physikalischer Übermittlungsabschnitt
(über jedes
verkabelte und kabellose Medium), ein Datenübermittlungsabschnitt, ein
logischer Übermittlungsabschnitt,
eine permanente virtuelle Schaltung, eine geschaltete virtuelle
Schaltung, ein verbindungsorientiertes Protokoll, ein verbindungsloses
Protokoll oder jede direkte oder indirekte Netzwerkverbindung und/oder
jedes Protokoll sowie Kombinationen dieser.
-
Bei
dem Content Provider Client 106 kann es sich um eine Anwendung
zur Verwaltung von Inhalten im Netzwerk handeln oder um einen allgemeinen
Dateisystem-Client, der eine Verbindung mit einem Steuersystem für virtuelle
Dateien (nicht abgebildet) in einem Verteilungszentrum 114 vorsieht.
Ein Inhaber von Inhalten erzeugt, verschiebt, löscht, verwaltet und benennt
Volumina und Verzeichnisse über
einen entsprechenden Content Provider Client 106 um. Ein
Inhaber von Inhalten lädt
zudem Dateien hoch, liest, aktualisiert und verwaltet diese im Netzwerk 100 über den
eigenen Content Provider Client 106. Der Endverbraucher-Client 108 ermöglicht einem
Endverbraucher des Inhalts Zugriff auf Dateien in dem Netzwerk 100.
Bei dem Endverbraucher-Client 108 kann es sich zum Beispiel
um jede Art von Browser handeln (einschließlich und ohne darauf beschränkt zu sein
eines Web-Browsers oder jedes anderen Dateisystem-Browsers), der
auf einer lokalen Endverbrauchervorrichtung ausgeführt wird.
Jede Art von Endverbrauchervorrichtung, die einen Endverbraucher-Client 108 unterstützen kann,
kann verwendet werden, einschließlich und ohne darauf beschränkt zu sein eines
Computers (z.B. eines Personalcomputers, einer Workstation oder
eines Servers), einer Set-Top-Box, eines Fernsehgeräts, eines
Telefons oder eines handgehaltenen IT-Geräts (z.B. Organizer, PDAs, Palm-Tops und dergleichen).
-
Der
Netzwerkrand 112 kann weit von dem Netzwerkkern 102 entfernt
sein. Der Abstand (d.h. die Pfadlatenz) zwischen dem Kern und dem
Rand kann auch uneinheitlich sein und für einzelne Content Provider
Clients 106 oder Enverbraucher-Clients 108 deutlich variieren.
In einem Ausführungsbeispiel
der vorliegenden Erfindung wird eine Mehrzahl von Verteilungszentren
(DC) 114A–114G zur
Aufrechterhaltung von Nutzlasten an dem Rand 112 des Netzwerks 100 gehalten,
wodurch die Latenz für
entsprechende Endverbraucher-Clients 108 reduziert oder
ganz aufgehoben wird. Der Nutzlastinhalt von einem Inhaber von Inhalten
wird von einem Verteilungszentrum 114 zu anderen Verteilungszentren 114 am
Rand 112 des Netzwerks 100 geschoben. Ein Endverbraucher,
der auf einen bestimmten Nutzlastinhalt zugreifen möchte (über einen
Client eines Netzwerkdateisystems oder einen Anwendungs-Server),
wird über
das am nächsten
angeordnete Verteilungszentrum 114 bedient, das den gewünschten
Inhalt aufweist. Die durch Pfadaspekte begründete Latenz wird minimiert,
da der Inhalt über
eine Mehrzahl von Verteilungszentren 114, die am Netzwerkrand 112 angeordnet
sind, zu dem Endverbraucher (z.B. einem entsprechenden Endverbraucher-Client 108)
verteilt wird. Die Verteilung umfasst somit das Erhalten von Dateisystemobjekten
von einem Content Provider Client 106 sowie die geografische
Platzierung dieser Objekte oder Abschnitte jedes Objekts an Vereilungszentren 114,
die allgemein nah an dem Rand des Netzwerks angeordnet sind.
-
Die
Verteilungszentren 114A–114G in dem Netzwerk 100 aus 1 sind
praktisch in Form eines Baums angeordnet, wie dies zum Beispiel
in 2 dargestellt ist. Diese virtuelle Baumanordnung
wird primär für die Übertragung
von Steuerinformationen und Signalen zwischen den Knoten (d.h. den
Verteilungszentren 114) des Netzwerks 100 verwendet.
Das Herunterladen von Daten kann von jedem Knoten in dem Netzwerk ausgeführt werden,
der die gewünschten
Daten aufweist, und zwar vorzugsweise von dem am nächsten angeordneten
Knoten (in Bezug auf den Netzwerkabstand). Die Knoten A bis I aus 2 stellen
eine Mehrzahl von Verteilungszentren 114 dar (z.B. die
Verteilungszentren 114A–114G plus zwei weitere
Knoten, die Knoten H und I). Die Knoten sind in einer logischen
Reihenfolge angeordnet. Wenn zum Beispiel angenommen wird, dass
der Knoten B Europa-England darstellt, so kann es sich bei den logischen
Unterknoten in Europa zum Beispiel um Europa-Frankreich (z.B. Knoten
D) und Europa-Deutschland (z.B. Knoten E) handeln, und ein Unterknoten
von Europa-Frankreich kann zum Beispiel Europa-Italien (z.B. Knoten
H) sein. Wenn in diesem Beispiel die linke Seite des Baums Europa
darstellt, so kann die rechte Seite Asien darstellen. Der Knoten
A ist der Wurzelknoten und kann eine zentrale Steuerstation darstellen
(z.B. die zentrale Steuerstation 114A aus 1).
-
Wie
dies nachstehend im Text beschrieben ist, wenn ein Verteilungszentrum 114 Blockdateien
von anderen Verteilungszentren 114 anfordert, wird die
hierarchische Baumstruktur für
die effiziente Datenübertragung
zwischen den Verteilungszentren verwendet, während die Anzahl der Knoten
begrenzt wird, an welche eine Anforderung gesendet werden muss.
Zum Beispiel sind die Attribute (z.B. Position, Zugriffsrechte,
Haupt- und Unterknoten in dem Baum, allgemeiner Inhalt, etc.) eines
Verteilungszentrums allen anderen Verteilungszentren bekannt. In ähnlicher
Weise weist jede Dateianforderung Verteilungskriterien (z.B. Dateityp,
Ablauf, etc.) der angeforderten Datei auf. Dies ermöglicht es,
dass jedes Verteilungszentrum Attribute vergleicht und nur Dateianforderungen
durch die Baumstruktur an entsprechende Verteilungszentren weiterleitet.
Zum Beispiel muss eine Datei mit Verteilungskriterien, die "Nur USA" enthalten, nicht
an ein in Europa angeordnetes Verteilungszentrum gesendet werden,
das das Attribut "Europa" aufweist.
-
In
einem oder mehreren Ausführungsbeispielen
weist jeder Knoten in dem Baum eine eindeutige Attributanordnung
auf, die den Namen des Knotens darstellt. Die Attributanordnung
für einen
Knoten ist in dem Knoten gespeichert und kann in jeder geeigneten
Datenstruktur dargestellt werden. Die Attributanordnung kann zum
Beispiel als variable Bitmap dargestellt werden (eine Bitmap ist
eine binäre
Darstellung eines Objekts, wie z.B. einer Nummer bzw. Zahl). Jeder
Knoten weist ferner eine Darstellung der Attributanordnung aller Unterknoten
(Kinder, Enkelkinder, Urenkelkinder, etc.) des Knotens auf (d.h.
alle von dem Knoten als Wurzelknoten abstammende Knoten – direkte
Abkömmlinge).
Diese Darstellung wird englisch als "Rolled Up Set of Attributes" (aufgerollte Attributanordnung)
bezeichnet, und wobei jede geeignete Datenstruktur zum Speichern dieser
Anordnung verwendet werden kann. Das aufgerollte Attribut eines
Knotens ist somit eine Darstellung des aufgerollten Attributs dessen
Abkömmlingen.
Zum Beispiel kann ein "Rolled
Up Bitmap" verwendet
werden, das eine Kombination der aufgerollten Attribut-Bitmaps aller
Abkömmlinge
des Knotens ist. Ein "Rolled Up
Bitmap" kann als "binäres ODER" (bitweises ODER)
der aufgerollten Attribute der Abkömmlinge des Knotens verwendet
werden.
-
Die
Abbildung aus 3 zeigt das Attribut-Bitmap
und das aufgerollte Bitmap gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Die Bitmaps 300, 310, 320, 330, 340 und 350 verwenden
zu Veranschaulichungszwecken 16 Bits. Da die Bitmaps jedoch variabel
sind, können
sie nach Bedarf variieren, um jeden Knoten zu identifizieren und
weitere notwendige Informationen vorzusehen. Das Bitmap 300 stellt
die Attributanordnung für
den Knoten B aus 2 dar, das zur Kennung die auf
Eins gesetzten Bits 1, 4 und 13 aufweist, und wobei alle anderen
Bits auf Null gesetzt sind. Zum Beispiel ist das Bit 1 so gesetzt,
dass es anzeigt, dass es sich bei dem Knoten B um einen Unterknoten
von A handelt, wobei das Bit 4 so gesetzt ist, dass es Europa darstellt,
und wobei das Bit 13 so gesetzt ist, dass es England darstellt.
Das Bitmap 310 stellt die Attributanordnung für den Knoten
D aus 2 dar, einen Unterknoten von B, und wobei die
Bits 1, 4 und 14 auf Eins und alle anderen Bits auf Null gesetzt
sind. Zum Beispiel stellt das Bit 14 Frankreich dar. Das Bitmap 320 stellt
die Attributanordnung für
den Knoten E aus 2 dar, ebenfalls ein Unterknoten
von B, mit den Bits 1, 4 und 15, die auf Eins gesetzt sind, wobei
alle anderen Bits auf Null gesetzt sind. Das Bit 15 kann zum Beispiel Deutschland
darstellen. Das Bitmap 330 stellt die Attributanordnung
für den
Knoten H aus 2 dar, einem Unterknoten von
D, und wobei die Bits 1, 4 und 16 auf Eins und alle anderen Bits
auf Null gesetzt sind. Das Bit 16 kann zum Beispiel Italien darstellen.
Wie dies bereits vorstehend im Text erwähnt worden ist, handelt es sich
bei der aufgerollten Bitmap für
den Knoten D (z.B. 340) um die Attribut-Bitmap des Knotens
H (da H keine Abkömmlinge
aufweist), und das aufgerollte Bitmap des Knotens B (z.B. 350)
ist das binäre
ODER der Bitmaps 310, 320 und 330. Das
Ergebnis des binären
ODER ist es, dass alle in den Bitmaps 310, 320 und 330 gesetzten
Bits auch in der aufgerollten Bitmap 350 gesetzt sind (d.h.
die Bits 1, 4, 14, 15 und 16).
-
Die
Content Management Server 110 können mit jedem Knoten des Baums
verbunden werden. Obwohl ein Content Management Server 110 und
ein Verteilungszentrum 114 für gewöhnlich nicht kollokiert werden,
bietet der Content Management Server 110 dem Inhaber von
Inhalten somit eine Möglichkeit,
Dateisystemobjekte in Verteilungszentren 114 einzuführen und
die Dateisystemobjekte in dem Netzwerk 100 zu verwalten.
Ein Content Management Client 106 kann direkt mit einem
Verteilungszentrum 114 zur Ausführung ähnlicher Funktionen verbunden
werden, wie sie von einem Content Management Server 110 vorgesehen
werden. In einem Ausführungsbeispiel
handelt es sich bei dem Content Management Server 110 um
einen Computer, der die Dateisystemobjekte des Inhalteinhabers zur
Verteilung in dem Netzwerk 100 verarbeitet. In einem anderen
Ausführungsbeispiel
kann es sich bei dem Content Management Server 110 zum
Beispiel um eine Untergruppe von Tools handeln (z.B. maschinenabhängige Objekte),
die eine Verwaltung, Verteilung, einen Zugriff auf und die Steuerung
von Dateisystemobjekten in dem Netzwerk 100 ermöglichen;
die Tools können
somit in dem Computer des Inhabers von Inhalten integriert sein,
um die große
Nutzlastdatei in dem Netzwerk zu verarbeiten und zu verteilen. In
einem weiteren Ausführungsbeispiel
kann es sich bei dem Content Provider Client 106 um einen
normalen Dateisystem-Client handeln, der eine direkte Verbindung
zu dem virtuellen Dateisteuersystem eines Verteilungszentrums 114 vorsieht,
während
die Verarbeitungstools in das virtuelle Dateisteuersystem integriert
sein können.
Nachdem ein Content Provider Client 106 ein Dateisystemobjekt
in einen Content Management Server 110 geladen hat, kann
der Content Management Server 110 das Objekt verarbeiten
und es an ein Verteilungszentrum 114 weiterleiten.
-
II. Verteilungszentren
-
Die
Abbildungen der 4 und 5 zeigen
ein repräsentatives
Verteilungszentrum 114. Hiermit wird festgestellt, dass
das Verteilungszentrum 114 auch als Station (STN) oder
Datenzentrum bezeichnet wird. Das Verteilungszentrum 114 weist
einen Verteilungs-Server-Cluster (DSC) 406, einen Anwendungs-Server-Cluster (ASC) 408,
eine Steuereinheit (CU) 402, ein gemeinsam genutztes Speichersystem 414,
einen Speicherschalter 412 und einen Schalter 410 für die Steuerung
zwischen Stationen auf. Der Verteilungs-Server-Cluster 406 kommuniziert
unter Verwendung der Kommunikationsübermittlungsabschnitte 407 und 411 über den
Speicherschalter 412 mit dem Speichersystem 414.
Der Anwendungs-Server-Cluster 408 kommuniziert unter Verwendung
der Kommunikationsübermittlungsabschnitte 409 und 413 über den
Speicherschalter 412 mit dem Speichersystem 414.
Die Steuereinheit 402, der Verteilungs-Server-Cluster 406 und
der Anwendungs-Server-Cluster 408 kommunizieren alle über den Schalter 410 für die Steuerung
zwischen den Stationen, der mit dem Speicherschalter 412 kommuniziert.
-
A. Anwendungs-Server-Cluster
-
Wie
dies in der Abbildung aus 5 dargestellt
ist weist der Anwendungs-Server-Cluster 408 einen Lastverteilungs-
und Routingblock 506, eine Mehrzahl von Anwendungs-Servern 508,
einen Lastverteilungs- und Routingblock 510 und einen virtuellen
Dateisteuersystem-Server (VFCS-Server) 512 auf. In einem
ersten Ausführungsbeispiel
sind die Anwendungs-Server 508 nicht wirklich Bestandteil
des Verteilungszentrums 114, wobei dies lediglich zu Zwecken
der Beschreibung dargestellt ist. In dem vorliegenden Ausführungsbeispiel sind
die Anwendungs-Server 508 für gewöhnlich mit einem Verteilungs-Server 114 in
einem Datenzentrum kollokiert. Die Anwendungs-Server 508 sind Nutzer des
Netzwerks 100 gemäß der Erfindung.
Bei den Anwendungs-Servern 508 kann es sich zum Beispiel
um Streaming-Video-Server handeln. Das Verteilungszentrum 114 fungiert
als eine Schnittstelle mit den Streaming-Video-Servern. In diesem Beispiel verwendet
der Streaming-Video-Server
tatsächlich
das Verteilungszentrum 114 und das Netzwerk 100 für den Abruf
des zuzustellenden Inhalts (oder der Mediennutzlast). In ähnlicher
Weise ist der Lastverteilungs- und
Routingblock 506 für gewöhnlich nicht
Bestandteil des Verteilungszentrums 114, sondern extern
vorgesehen, und wobei der Block den in die Anwendungs-Server eintretenden
Verkehr verwaltet.
-
In
einem zweiten Ausführungsbeispiel
sind die Anwendungs-Server 508 in
Software implementiert und können
tatsächlich
einen Bestandteil des Verteilungszentrums 114 darstellen.
-
VFSC-Server 512 empfangen
Dateianforderungen von Anwendungs-Servern 508 über den
Lastverteilungs- und Routingblock 510. Die VFCS-Server 512 sehen
daraufhin eine Schnittstelle mit dem Verteilungs-Server-Cluster 406 für die Erfassung
der angeforderten Dateien vor. Die angeforderten Dateien werden danach über die
VFCS-Server 512 zu den Anwendungs-Servern 508 zurückgeführt. Auf
diese Weise fungiert das Verteilungszentrum 114 als ein
Datei- oder Verzeichnissystem für
die Anwendungs-Server 508.
-
B. Verteilungs-Server-Cluster
-
Wie
dies in der Abbildung aus 5 dargestellt
ist, kann eine Mehrzahl von Verteilungs-Servern 504 in
einem Verteilungszentrum 114 zusammengefasst werden, um
deren Nutzlast auszugleichen bzw. zu verteilen. Der Verteilungs-Server-Cluster 406 stellt
unter anderem eine Systemfehlertoleranz sowie eine Skalierbarkeit
bereit. Zwar weist ein Verteilungszentrum 114 mehrere Verteilungs-Server 504 auf,
wobei diese allerdings als eine Schnittstelle mit den anderen Verteilungszentren
erscheinen. Ein Lastverteiler 502 sieht eine Schnittstelle
für die
Verteilungs-Server 504 aus dem Netzwerk heraus vor. Der
Lastverteiler 502 gibt Anforderungen an Verteilungs-Server 504 im
Bewusstsein über
die aktuelle Auslastung jedes Servers aus.
-
Die
Abbildung aus 6 zeigt eine Darstellung eines
Verteilungs-Server-Clusters 406. Der Verteilungs-Server-Cluster 406 weist
eine Mehrzahl von Verteilungs-Servern 504-1 bis 504-N (gemeinsam 504)
und einen Lastverteiler 502 auf. Jeder Verteilungs-Server 504 greift
auf Daten (z.B. Blockdateien) in Speichervolumina 603-1 bis 603-V (gemeinsam 603)
in dem gemeinsam genutzten Speichersystem 414 über den Schalter 412 zu.
Ein Verteilungs-Server 504 (z.B. der Verteilungs-Server 504-1)
in dem Verteilungs-Server-Cluster 406 kann eine Anforderung
(z.B. eine Suchanforderung) an einen Verteilungs-Server 504 eines
benachbarten Verteilungs-Zentrums 504 über Anforderungen ausgeben,
die Komponenten des abgehenden Verkehrs 604 sind. In ähnlicher
Weise kann der Verteilungs-Server 504 eines benachbarten
Verteilungszentrums 114 eine Anforderung (z.B. eine Lernanforderung)
an einen Verteilungs-Server 504 in dem Verteilungs-Server-Cluster 406 über Anforderungen
ausgeben, die Komponenten des eingehenden Verkehrs 606 sind.
Der Lastverteiler 502 gibt den eingehenden Verkehr 606 an
einen der Verteilungs-Server 504-1 bis 504-N aus.
Der Lastverteiler 502 kann als ein Lastverteilungs-Router
in verschiedenen topologischen Kombinationen mit einem Standard-Router
implementiert werden und ferner den abgehenden Verkehr 604 von
dem Verteilungszentrum 504 bearbeiten.
-
Jeder
Verteilungs-Server 504 behandelt seine Anforderungen (Such-,
Lernanforderungen, etc.) als auszuführende Aufgaben. Die Aufgaben
werden in Aufgabenwarteschlangen 601-1 bis 601-N (gemeinsam 601)
in dem Speicher (z.B. dem Direktzugriffsspeicher) jedes entsprechenden
Verteilungsservers 504 gespeichert und verwaltet. Die Auftragswarteschlangen-Abbilder 602-1 bis 602-N (gemeinsam 602),
die den entsprechenden Auftragswarteschlangen 601-1 bis 601-N entsprechen,
werden in einer Datenbank in dem Speichersystem 414 gespeichert.
Wie dies nachstehend im Text beschrieben ist, verwaltet die Steuereinheit 402 des Verteilungszentrums
diese und eine Reihe weiterer Datenbanken in dem Speichersystem 414.
Hiermit wird festgestellt, dass die Datenbank, welche das Auftragswarteschlangen-Abbild 602 aufweist,
nur zu Veranschaulichungszwecken in die Speichervolumina 603 abgebildet
ist. Für
den Fachmann auf dem Gebiet ist es ersichtlich, dass die Auftragswarteschlangen-Abbilddatenbank und
andere verwandte Datenbanken des Netzwerks 100 auf jedes
verfügbare
Speichervolumen abgebildet werden können.
-
Jeder
Verteilungs-Server 504 verzeichnet periodisch einen "Herzschlag" in einer Datenbank
der Steuereinheit in dem Speichersystem 414. Periodisch
prüft jeder
Verteilungs-Server 504 die Datenbank auf die Herzschläge anderer
Verteilungs-Server.
Während
dem Einschaltvorgang votiert jeder Verteilungs-Server 504 in
einem Verteilungs-Server-Cluster 406 für einen "Master-Server". Wenn der Verteilungs-Server 504-1 zum Beispiel
h Herzschläge
verpasst, wobei h einen konfigurierbaren Parameter darstellt, wird
angenommen, dass der Verteilungs-Server 504-1 nicht länger funktionstüchtig ist.
Der Master Server verteilt die dem Verteilungs-Server 504-1 zugeordneten
Aufträge
danach an die aktiven (d.h. sich im Einsatz befindenden) Verteilungs-Server 504 in
dem Verteilungs-Server-Cluster 406. Wenn der Master Server
nicht mehr arbeitet, votieren alle sich im Einsatz befindenden bzw.
aktiven Verteilungs-Server 504 für einen neuen Master Server.
Der neue Master Server verteilt danach die verwaisten Aufträge des Master
Servers neu, sofern diese existieren.
-
Für den Fall,
dass nicht mehr auf die Datenbank der Steuereinheit zugegriffen
werden kann, arbeiten die Verteilungs-Server 504 auf normale
Art und Weise, mit der Ausnahme, dass ihre Auftragswarteschlangen in
eine lokale Speichereinheit (nicht abgebildet) jedes einzelnen Verteilungs-Servers 504 gespiegelt
werden. Während
diesem Zeitraum kann es vorkommen, dass entweder nicht auf die Auftragswarteschlangen-Datenbank
eines Verteilungs-Servers zugegriffen werden kann oder ein Verteilungs-Server
ausfällt.
-
Wenn
keines dieser Ereignisse eintritt, so müsste der jeweilige Verteilungs-Server
letztlich neu eingeschaltet werden. Dieser würde dann alle vor dem Ausfall
in dem lokalen Speicher (d.h. dem Speichersystem 414) gespeicherten
Aufträge
auslesen und wiederherstellen.
-
III. Verteilung und Abruf
von Dateien
-
Der
Parallel Download bzw. das parallele Herunterladen ist der Mechanismus,
der in dem Netzwerk 100 eingesetzt wird, um sicherzustellen,
dass eine nachgefragte Datei an einem Verteilungszentrum 114 rechtzeitig
für den
Konsum durch einen Verbraucher zur Verfügung steht. Bei einem parallelen
Download werden Dateien aufgrund der Art der darin enthaltenen Daten
in kleinere Einheiten aufgeteilt, die als "Tracks" bzw. "Titel" bezeichnet werden. Tracks werden in
noch kleinere Einheiten mit einheitlicher Größe unterteilt, die als "Blockdateien" bezeichnet werden.
Die Unterteilung bzw. Aufteilung bildet die Basis für das parallele
Herunterladen, das in zwei Ebenen implementiert wird: Prozessebene
und Thread-Ebene. Die Verteilungs-Server 504 teilen sich
die Arbeit der Erfassung eines bestimmten Tracks. Alle Verteilungs-Server 504 in
einem Verteilungszentrum 114 können zusammenarbeiten, so dass
sie die Blockdateien gemeinsam erfassen, wobei eine Parallelität auf Prozessebene
ausgeführt
wird. Ferner kann ein einzelner Verteilungs-Server 504 eine
Anzahl von Threads für
die Erfassung von Blockdateien hervorbringen, wobei eine Parallelität auf Thread-Ebene
ausgeführt
wird.
-
Zur
Minimierung der Speichernutzung werden Dateien nicht als Ganzes
in jedem Verteilungszentrum 114 gespeichert. Für jeden
Track werden nur wenige der Blockdateien vorab eingespeichert. Die
restlichen Blockdateien werden bei Bedarf von anderen Verteilungszentren 114 erfasst,
die die Blockdateien aufweisen. Das Konzept ist in der Abbildung
aus 7 veranschaulicht. In der Abbildung aus 7 wurde
ein Track einer bestimmten Datei in Blockdateien unterteilt und
an fünf
Verteilungszentren 114-1 bis 114-5 in dem Netzwerk 100 verteilt.
Das Verteilungsverhältnis
unterscheidet sich unter den Verteilungszentren 114 aufgrund
der unterschiedlichen Betrachtungsmuster dieser besonderen Datei
an jedem Verteilungszentrum. Zum Beispiel speichert das Verteilungszentrum 114-1 alle
zehn Blöcke
der Datei, während
die Station 114-4 nur einen einzigen Block speichert.
-
Wenn
das Verteilungszentrum 114-1 im Betrieb aufgefordert wird,
die Datei zu liefern, so kann dies ohne Verzögerung erfolgen, da alle Blöcke lokal
gespeichert sind. Während
in dem Verteilungszentrum 114-2 lokal nur die ersten fünf Dateiblöcke gespeichert
sind, kann es in ähnlicher
Weise die Datei ohne längere
Verzögerung
liefern. Dies wird durch die Lieferung der ersten fünf Blöcke erreicht
(die lokal in dem Verteilungszentrum 114-2 gespeichert
sind), während
die verbleibenden fünf
Blöcke
von dem Verteilungszentrum 114-1 erfasst werden. Die anderen
Verteilungszentren 114 arbeiten auf ähnliche Art und Weise. Zum
Beispiel liefert das Verteilungszentrum 114-4 die einzige
lokal gespeicherte Blockdatei, während
die anderen neun Blockdateien von einem oder mehreren anderen Verteilungszentren 114 erfasst
werden.
-
A. Dateiverteilungsprotokoll
(FDP)
-
Die
Verteilungszentren 114 in dem Netzwerk 100 kommunizieren über ein
Protokoll mit der Bezeichnung Dateiverteilungsprotokoll (FDP als
englische Abkürzung
von File Distribution Protocol) miteinander. Eine Untergruppe (d.h.
vorbereiten, suchen und erfassen bzw. holen) von FDP ist Gegenstand
des parallelen Herunterladens. Die Abbildungen der 8 bis 10 veranschaulichen,
wie die Verteilungszentren 114 in einem Netzwerk 100 unter
Verwendung von FDP für
den Datenaustausch miteinander kommunizieren.
-
Zuerst
wird eine Anforderung PREPARE (Vorbereiten) von einem virtuellen
Dateisteuersystem-Server (VFCS) 512 in dem Anwendungs-Server-Cluster 408 (siehe 5)
als Reaktion auf eine Benutzeranforderung erzeugt. Die Anforderung
PREPARE wird von dem VFCS-Server 512 über den Schalter 410 zu
den Verteilungs-Servern 504 gesendet. Die Anforderung PREPARE
löst bei
einem Verteilungs-Server 504 das Hervorbringen eines Threads
zum Suchen nach fehlenden Blockdateien eines Tracks einer bestimmten
Datei aus. Wenn eine Anforderung PREPARE für die ganze Datei ausgegeben
wird, so bringt der Verteilungs-Server 504, der
die Anforderung bereitstellt, so viele Threads hervor wie die Anzahl
der Tracks bzw. Spuren bzw. Titel in der jeweiligen Datei, um die
Blockdateien jedes Tracks separat zu erfassen. Jeder Thread sendet
danach eine Anforderung SEARCH (Suchen) an das Netzwerk 100,
wobei nach Antworten von den Verteilungszentren 114 gesucht
wird, in denen der gewünschte
Track gespeichert ist. Die Antworten, die von anderen Verteilungszentren 114 zurückkommen,
codieren einen Bereich von Blockdateien, die sie für den gewünschten
Track aufweisen. Die Antworten können
an allen Verteilungs-Servern 504 in einem Verteilungs-Server-Cluster 406 ankommen,
und nicht unbedingt nur an dem Verteilungs-Server 504,
der die Suche ursprünglich
gesendet hatte.
-
Ein
Verteilungs-Server 504, der eine Suchantwort empfängt, sendet
danach eine Anforderung GET (Holen) an ein Verteilungszentrum 114,
das antwortet, indem es anfordert, dass das antwortende Verteilungszentrum 114 den
Bereich von Blockdateien sendet, die das antwortende Verteilungszentrum
aufweist. Dies ist in der Abbildung aus 8 veranschaulicht,
die zum Beispiel das anfordernde Verteilungszentrum 114 zeigt, das
Suchantworten von den Verteilungszentren 114-1, 114-2, 114-3 und 114-5 empfängt. Für jede empfangene Suchantwort
bringt der Verteilungs-Server 114-4 einen Thread zur Erfassung der
Blockdateien von dem antwortenden Verteilungszentrum 114 hervor.
Da die Verteilungszentren 114 in dem Netzwerk sich überschneidende
Bereiche von Blockdateien für
einen bestimmten Track aufweisen können, gibt es die Möglichkeit,
dass viele der Suchantworten für
den gleichen Bereich der Blockdateien vorgesehen sein können. Ein
Folgeserver 505 (siehe 5) stellt
sicher, dass nur ein Thread versucht, eine bestimmte Blockdatei
von einem der anderen Verteilungszentren herunterzuladen.
-
Da
der Lastverteiler 502 eine Lastverteilung der von den verschiedenen
Verteilungszentren 114 gesendeten Suchantworten ausführt, werden
die Suchantworten gleichmäßig bzw.
einheitlich zu verschiedenen Verteilungs-Servern 504 an
dem gleichen Verteilungszentrum 114 geleitet. Dies ist
in der Abbildung aus 9 dargestellt. In dem Fall,
dass eine Suchantwort an einem anderen Verteilungs-Server 504 als
dem Urheber der Suchanforderung ankommt, so erfasst der empfangende
Verteilungs-Server 504 automatisch Blockdateien von dem
Verteilungszentrum 114, das mit der Annahme antwortet,
dass einer der Verteilungs-Server 504 an dem gleichen Verteilungszentrum
die Suche eingeleitet hat. Der Verteilungs-Server kann somit Blockdateien parallel
zu den anderen Verteilungs-Servern erfassen, die auch Suchantworten
auf die gleiche Anforderung empfangen haben. Nachstehend werden
Einzelheiten dazu beschrieben, wie verschiedene Verfahren bzw. Prozesse
und Threads den Folgeserver 506 nutzen, um unter sich das
Arbeitsaufkommen der Erfassung der Blockdateien aufteilen, die sich
auf einen Track beziehen. Alle Verteilungs-Server 504,
die Suchantworten empfangen, arbeiten bei der Erfassung der Blockdateien
zusammen, bis alle erforderlichen Blockdateien heruntergeladen worden
sind. Dies ist in der Abbildung aus 10 dargestellt.
-
B. Paralleles Herunterladen
von Blockdateien
-
Die
Blockdateien sehen eine ausreichende Granularität für die Aufteilung des Arbeitsaufwands
für die Verteilungs-Server 504 vor.
Ein Blockdatei-Sperrmechanismus wird von einem Thread eingesetzt,
um das Recht zur Erfassung eines Blocks von einem entfernten Verteilungszentrum 114 zu
beanspruchen. Jede dieser Blockdateien kann global gesperrt werden
im Verhältnis
zu jedem Thread an allen Verteilungs-Servern 504 in einem
Verteilungszentrum 114. Wenn die Erfassung des gleichen
Bereichs von Blockdateien vorgesehen ist, versuchen verschiedene
Threads an den Verteilungs-Servern 504 zuerst, eine Sperre
für die
nächste
fehlende Blockdatei zu erhalten. Wenn ein Thread die Sperre erfolgreich
realisiert, fährt
er mit der Erfassung des Blocks von dem verwandten Verteilungszentrum
vor, das die Suchantwort gesendet hat. Wenn ein Thread bei der Realisierung
einer Sperre für
die nächste
fehlende Blockdatei fehlschlägt,
so bedeutet dies, dass in dem eigenen Prozess ein weiterer Thread
vorhanden ist oder ein weiterer Verteilungs-Server 504,
der die Sperre erreicht hat. Für
den Fall, dass eine Sperre auftritt, fährt der Thread mit dem Versuch
fort, eine Sperre für
die nächste fehlende
Blockdatei zu erhalten.
-
Die
Abbildung aus 11 zeigt eine zeitliche Darstellung
des Verfahrens, wie sich verschiedene Prozesse ihre Last teilen.
In diesem Zusammenhang kann ein Prozess einen oder mehrere Threads
aufweisen. Hiermit wird festgestellt, dass die Begriffe "Prozess" und "Thread" bei der Erörterung
der von einem Thread oder einem Prozess ausgeführten Funktionen austauschbar
verwendet werden, da ein Prozess einen oder mehrere Threads aufweisen
kann. Zur besseren Veranschaulichung wird angenommen, dass die Suchantworten
ungefähr
gleichzeitig erfolgen. Gemäß der Darstellung
empfängt
der Verteilungs-Server
DS1 zwei Suchantworten. Die beiden Verteilungs-Server DS2 und DS3
empfangen beide eine Suchantwort. Für jede Antwort wird mit einem
antwortenden Verteilungszentrum 114 ein Thread an ein Peer-Zentrum
hervorgebracht. Danach arbeiten die Threads beim Herunterladen der
Blockdateien von verwandten Verteilungszentren 114 zusammen.
Hiermit wird festgestellt, dass der Thread 1 im Wettbewerb um die
Blockdateien 1, 2 und 3 fehlschlägt,
da die Threads 2, 3 und 4 in Bezug auf die Erfassung der Sperre
schneller sind. Der Thread 1 erlangt erfolgreich die Sperren für die Blöcke 4, 5,
6, 8, 9 und 10 und lädt
diese herunter. Der Thread 2 erfasst erfolgreich nur die
Sperre für
die Blockdateien 1 und 8. Der schnellste Thread, der Thread 1, übernimmt
den Großteil des
Aufwands des Herunterladens.
-
C. Dateiserving-Operation
-
Die
Abbildung aus 12 zeigt ein Flussdiagramm der
Schritte zur Bereitstellung (Serving) der Dateien gemäß einem
Ausführungsbeispiel
der Erfindung. In einem Schritt 1202 empfängt ein
Verteilungs-Server eine Anforderung PREPARE von einem VFCS-Server 512 (als
Reaktion auf eine Benutzeranforderung). In einem Schritt 1204 bringt
der Verteilungs-Server 504 als Reaktion auf die Anforderung
PREPARE einen Thread zur Bereitstellung der Anforderung hervor.
In einem Schritt 1205 erfolgt eine Registrierung des Threads
mit einem anderen Thread in dem Verteilungs-Server 504 mit
der Bezeichnung DSSearchReplyCollector. Auf der Basis von DSSearchReplyCollector
bestimmt der Verteilungs-Server 504 (in dem Schritt 1208),
ob bereits ein anderer Thread eine vorherige Anforderung bedient,
welche den Bereich der Blockdateien abdeckt, der angefordert worden
ist. Wenn dies der Fall ist, wird die Anforderung PREPARE fallengelassen
und das Verfahren endet mit dem Schritt 1226. Im anderen
Fall gilt der Thread als gültig
und das Verfahren springt zu dem Schritt 1210.
-
In
dem Schritt 1210 sendet der Thread Anforderungen SEARCH
an andere Verteilungszentren, um nach den angeforderten Blockdateien
zu suchen. In dem Schritt 1212 wartet der Thread auf Antworten
auf die Anforderungen SEARCH. In dem Schritt 1214 wird
das Warteintervall mit einem vorbestimmten Timeout-Intervall verglichen.
Wenn das Timeout-Intervall zu Ende ist, fährt das Verfahren mit dem Schritt 1216 fort.
Im anderen Fall wartet der Thread weiter. Das Timeout-Intervall
wird zur Beurteilung verwendet, ob eine Suchanforderung zu lange
gebraucht hat, um Antworten zu erlangen. Die Situation kann eintreten,
wenn die anderen Verteilungszentren, welche die gewünschten
Blockdateien aufweisen, sehr weit von dem suchenden Verteilungszentrum
entfernt sind oder wenn die Suchantworten alle zu anderen Verteilungs-Servern 504 in
dem Cluster 406 geleitet werden.
-
In
einem Schritt 1216 werden Anforderungen GET (Holen) ausgegeben,
um die angeforderten Blockdateien von den antwortenden Verteilungszentren
zu erfassen. Ein neuer Thread wird für jede GET Anforderung eingeleitet.
Hiermit wird festgestellt, dass in einem bevorzugten Ausführungsbeispiel
der Schritt 1216 vor dem Schritt 1214 ausgeführt werden
kann. Das heißt,
die Anforderungen GET können
eingeleitet werden, obwohl der Such-Thread weiter auf zusätzliche
Antworten von entfernten Verteilungszentren wartet.
-
In
dem Schritt 1218 wird bestimmt, ob noch angeforderte Blockdateien
fehlen. Das heißt,
wenn das Timeout-Intervall abgelaufen ist und die Positionen bestimmter
Blockdateien weiterhin unbekannt sind, so ergreift der Such-Thread
Maßnahmen
zur Erfassung der verbleibenden Blockdateien von einem vorher bezeichneten
Verteilungszentrum, von dem bekannt ist, dass es die gewünschten
Blockdateien aufweist. Dies wird in dem Schritt 1220 angezeigt.
Für den
Fall, dass andere Verteilungs-Server 504 die Suchantworten
empfangen haben, arbeiten die lokalen Threads mit den Threads in
diesen Verteilungs-Servern 504 zusammen, um das parallele
Herunterladen auszuführen.
In beiden Fällen
wartet der Schritt 1222 auf die vollständige Ausführung aller Threads.
-
Für eine Fehlertoleranz
in Bezug auf Situationen wie etwa den Ausfall eines Verteilungs-Servers 504 wird
in dem Schritt 1224 ein Plausibilitätstest vorgenommen, und zwar
nach der Rückkehr
der Threads, die zur Erfassung von Blockdateien hervorgebracht worden
sind. Wenn durch einen ausgefallenen Verteilungs-Server bewirkte
fehlende Blockdateien vorhanden sind, so bringt der Thread einen
neuen Thread zur Erfassung der fehlenden Blöcke von einem zugeordneten
Verteilungszentrum 114 hervor. Dies wird durch einen Rücksprung zu
dem Schritt 1220 angezeigt.
-
Nachdem
alle angeforderten Blockdateien erfasst worden sind, endet das Verfahren
in dem Schritt 1226.
-
IV. Folgeserver
-
In
jedem Verteilungszentrum 114 laufen zahlreiche Prozesse
oder Threads gleichzeitig ab. Zum Beispiel gibt es mehrere VFCS-Server 512 (VFCS
als englische Abkürzung
von Virtual File Control System), die auf verschiedenen physikalischen
Vorrichtungen in einem Anwendungs-Server-Cluster 408 ausgeführt werden;
und jeder VFCS-Server 512 weist mehrere Threads auf. In ähnlicher
Weise gibt es mehrere Verteilungs-Server 504, die auf verschiedenen
physikalischen Vorrichtungen ausgeführt werden, wobei jeder Verteilungs-Server 504 mehrere
Threads aufweist. Diese Mehrzahl von Threads und Prozessen bedürfen häufig eines
atomaren Zugriffs auf gemeinsam genutzte Daten. Wenn zum Beispiel
mehrere Threads eines Verteilungs-Servers 504 Blockdateien herunterladen,
so wird es bevorzugt, dass nur ein Thread die gleiche Blockdatei
herunterlädt.
-
Wenn
die Threads oder Prozesse auf einer einzigen Vorrichtung ausgeführt werden,
so können
die durch das Betriebssystem vorgesehenen Sperr- bzw. Schutzmechanismen
verwendet werden, wie etwa Mutexe oder Flaggen, um die Atomizität zu erreichen.
Derartige Sperrmechanismen arbeiten jedoch nicht über einen
Cluster von Vorrichtungen. Obwohl die durch ein gemeinsam genutztes
Dateisystem vorgesehenen Dateisperren als Sperrmechanismen in einem
Cluster verwendet werden können,
weist das für
gewöhnlich
verwendete Network File System (NFS) keine zuverlässige Dateisperre
auf. Wenn man einen separaten Sperrverwaltungsprozess verwendet,
der Threads Sperren bzw. Schutz gewährt, so ist die Behandlung
von Fehlersituationen schwierig, wie etwa wenn ein Client eine Sperre
erfasst und danach stirbt. In einem. bevorzugten Ausführungsbeispiel
der Erfindung sieht der Folgeserver 505 einen sperr- bzw.
schutzfreien Ansatz für
Threads und Prozesse vor, die auf verschiedenen Maschinen bzw. Vorrichtungen
in einem Cluster ausgeführt
werden, um einen atomaren Zugriff auf Daten vorzusehen. Der sperrfreie
Zugriff erleichtert die Ausfall- bzw.
Fehlerbehandlung.
-
A. Beschreibung des Folgeservers
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, sieht der
Folgeserver 505 einen sperrfreien Mechanismus für mehrere
Threads oder Prozesse vor, die auf verschiedenen Vorrichtungen ausgeführt werden,
um atomar auf Daten zuzugreifen. Dieser ermöglicht Clients einen sequenziellen
Zugriff auf Daten oder das Bestimmen, ob gegen die Folge bzw. die
Sequenz verstoßen
worden ist, so dass di Clients ihre Operation neu versuchen bzw.
wiederholen oder korrigierende Maßnahmen ergreifen können. Der
Folgeserver erreicht dies durch die Zuordnung einer wahlfreien "Folgenummer" in Verbindung mit
jedem gemeinsam genutzten Datenobjekt. Wenn ein Client bei einem
Folgeserver 505 den Wert des gemeinsam genutzten Datenobjekts anfordert
und die Absicht anzeigt, den Wert zu modifizieren, so erhöht der Folgeserver 505 die
den Daten zugeordnete Folgenummer und führt die Daten sowie die (erhöhte) Folgenummer
zu dem Client zurück.
Der Client modifiziert den Datenwert und gibt diesen gemeinsam mit
der Folgenummer an den Folgeserver 505 zurück. Danach
vergleicht der Folgeserver 505 die zurückgeführte Folgenummer mit der aktuell
für das
Datenobjekt vorhandenen Folgenummer. Wenn sich die Nummer unterscheidet,
so bedeutet dies, dass ein anderer Client zwischenzeitlich den Wert
des Datenobjekts in der Absicht diesen zu verändern angefordert hat. Anders ausgedrückt wurde
gegen die Folge des ersten Client verstoßen; dieser hatte keinen exklusiven
Zugriff auf die Daten während
dem Zeitraum, in dem der Client versucht hat, eine Lese-Modifikations-Schreib-Operation
auszuführen.
Der Folgeserver 505 weist somit die Aktualisierungsanforderung
des ersten Client zurück
und informiert den Client über
den Verstoß gegen
die Folge. Der erste Client muss danach nach Bedarf korrigierende Maßnahmen
ergreifen. Abhängig
vom Kontext und von den Konventionen zwischen den Clients kann die
Operation entweder erneut versucht werden, indem erneut eine neue
Lese- und eine neue Folgenummer angefordert wird, oder die Ausführung der
Operation kann einfach einem anderen Client überlassen werden.
-
Die
Abbildung aus 13 zeigt ein Flussdiagramm der
Art und weise, wie zwei Threads den Folgeserver 505 für die Ausführung einer
atomaren Lese-Modifikations-Schreib-Operation an einem gemeinsam
genutzten Datenobjekt einsetzen. Die Schritte 1301–1306 stellen
einen ersten Thread dar, und die Schritte 1307 bis 1312 stellen
einen zweiten Thread dar. In den Schritten 1301 und 1307 fordern
beide Threads die Daten und eine Folgenummer von dem Folgeserver 505 an.
Als Reaktion auf die Anforderung durch den Thread 1 erhöht der Folgeserver 505 die
Folgenummer und führt
die Daten und die Folgenummer zu dem Thread 1 zurück (Schritt 1302).
Als Reaktion auf die Anforderung von Thread 2 wird danach erneut
die Folgenummer erhöht
und die Daten und die neue Folgenummer werden an den Thread T2 zurückgegeben
(Schritt 1308). Als Folge dessen weisen beide Threads die
Daten auf, jedoch sich unterscheidende Folgenummern.
-
Wie
dies durch die Schritte 1303 und 1309 angezeigt
wird, modifizieren als nächstes
beide Threads die Daten und führend
die modifizierten Daten sowie die erhaltene Folgenummer zurück. In den
Schritten 1304 und 1310 vergleicht der Folgeserver 505 den
aktuellen Wert mit den durch die Threads zurückgegebenen Folgenummern. Wenn
die Folgenummern übereinstimmen,
wie dies im Falle von Thread 2 der Fall ist, akzeptiert der Folgeserver 505 die
neuen Daten (siehe die Schritte 1311 und 1312).
Wenn die Folgenummern nicht übereinstimmen,
wie im Falle von Thread 1, weist der Folgeserver 505 die
neuen Daten ab (siehe die Schritte 1305 und 1306).
Der Thread 1 kehrt daraufhin zu dem Schritt 1301 zurück und wiederholt
die Schrittfolge. Auf diese Weise wird die Atomizität der Lese-Modifikations-Schreib-Operation
für jeden
Thread garantiert.
-
Nachstehend
ist ein Beispiel bereitgestellt, das die Erläuterung für die Notwendigkeit eines atomaren Zugriffs
und den Betrieb des Folgeservers 505 umfasst. Zum Hintergrund
sei folgendes erwähnt;
wenn eine Datei gespeichert wird, so erfolgt ein als "Chunking" bezeichneter Prozess,
der die Datei in Blöcke
und Metadaten aufteilt, welche die Blöcke beschreiben. Das Chunking
wird in näheren
Einzelheiten in der U.S. Patentanmeldung 09/681,665, eingereicht
am 17. Mai 2001 beschrieben, die hierin durch Verweis enthalten
ist. Der Verteilungs-Server 504 aktualisiert die einer
Blockdatei zugeordneten Metadaten auf eine Art und Weise, die mit
dem Status der realen Daten verträglich ist. Anders ausgedrückt müssen die
Metadaten zu jedem beliebigen Zeitpunkt präzise die Realität darstellen.
Während
des (kurzen) Intervalls, in dem die Metadaten nicht die Realität darstellen,
besteht ansonsten die Gefahr, dass ein anderer Thread auf ungenaue
Metadaten zugreifen und fehlerhafte Maßnahmen ergreifen kann.
-
In
einem Beispiel weist der Verteilungs-Server 504 jeder Blockdatei
einen Speicherindex zu. Der Speicherindex wird dazu verwendet, den
ganzen Pfad zu der Datei zu bestimmen. Dieses Konzept wird dazu
verwendet, es zu ermöglichen,
dass verschiedene Blockdateien für
eine höhere
Leistungsfähigkeit
in verschiedenen Speicherbausteinen gespeichert werden können. Wenn
zum Beispiel n Speichervorrichtungen bzw. Speicherbausteine existieren,
reichen die Speicherindizes von 1 bis n, und der Verteilungs-Server 504 weist Blockdateien
Indizes auf eine Art und Weise zu, so dass die Last auf die Speicherbausteine
verteilt wird. In einem Ausführungsbeispiel
wird eine Lastverteilung unter Verwendung einer Round-Robin-Verteilung erreicht.
-
Ferner
verwendet der Verteilungs-Server 504 in dem vorliegenden
Beispiel die folgende Konvention: ein Speicherindex von Null bedeutet,
dass die Blockdatei nicht auf Platte vorhanden ist; ein negativer
Speicherindex bedeutet, dass der Block entweder geschrieben oder
gelöscht
wird, wobei die Operation jedoch nicht abgeschlossen ist (mit anderen
Worten ist sie belegt und andere sollten sie zu diesem Zeitpunkt
nicht verwenden); und eine positive Zahl bedeutet, dass die Blockdatei
auf Platte zur Verfügung
steht, und wobei die Nummer dazu verwendet werden kann, den vollständigen Pfadnamen
der Datei zu bestimmen.
-
In
Abwesenheit eines Folgeservers lautet der Algorithmus zum Herunterladen
und Speichern einer Blockdatei (durch den Verteilungs-Server
504)
in eine Gruppe lokaler Speichervolumina in dem Speichersystem
414 wie
folgt:
-
Hiermit
wird festgestellt, dass für
den Fall, dass zwei Threads den oben beschriebenen Algorithmus für die gleiche
Blockdatei ausführen,
die folgende Ereignisabfolge auftreten kann:
-
Da
die letzte in den Metadaten gespeicherte Nummer eine 2 ist, wird
in dem Speicherindex 1 eine Waisendatei heruntergeladen, ohne dass
diese in den Metadaten verzeichnet ist. Wenn mehrere Threads versuchen,
eine Datei herunterzuladen (wie dies in einem Verteilungs-Server 504 als
Reaktion auf SEARCH-REPLY erfolgt), existiert Potenzial für derartige
Waisendateien.
-
Das
Problem tritt auf, da die beiden Prüf-und-Setzoperationen – zuerst
von 0 auf –1
und danach von –1
auf +1 – nicht
atomar sind. Somit wird ein Mechanismus benötigt, durch den mehrere Threads
atomar auf Daten zugreifen können,
wenn dies erforderlich ist. Der Folgeserver 505 sieht eine
Möglichkeit
vor, den atomaren Zugriff ohne den Einsatz von Sperren zu erreichen.
-
B. Betrieb des Folgeservers
-
Die
Grundidee ist es, dass alle Threads über den Folgeserver
505 auf
die Speicherindizes in dem Speichersystem
414 zugreifen.
Wie dies bereits vorstehend im Text beschrieben worden ist, ordnet
der Folgeserver 505 jedem Speicherindex eine wahlfreie Folgenummer
zu. Zum Beispiel:
-
Wenn
ein Thread den Speicherindex "mit
Modifikationsabsicht liest",
so erhöht
der Folgeserver 505 die Folgenummer und gibt den Wert des
Index sowie die (erhöhte)
Folgenummer zurück.
Der Thread kann danach den Wert modifizieren und den neuen Wert
zu dem Folgeserver 505 in Verbindung mit der Folgenummer zurückführen. Der
Folgeserver 505 prüft,
ob die Folgenummer mit der aktuellen Folgenummer für den Speicherindex übereinstimmt.
Wenn der Server dies ausführt,
nimmt er den modifizierten Wert an. Falls nicht, so bedeutet dies,
dass ein anderer Thread den Wert zwischenzeitlich gelesen hat, oder
der Folgeserver 505 hat sich gerade von einem Ausfall erholt
und. neue Folgenummern erzeugt. In jedem Fall weist der Folgeserver 505 die
Aktualisierung zurück
und gibt eine Fehlermeldung zurück.
Der Thread muss danach den Fehler auf bestimmte Art und Weise abhängig davon,
welche Operation er auszuführen
versucht, behandeln. Er kann entweder jede Handlung unterlassen
oder für
einen kurzen, vorbestimmten oder wahlfreien Zeitraum in den Ruhemodus
wechseln und danach die Lese-Modifikations-Aktualisierung erneut
versuchen.
-
Der
Folgeserver 505 speichert die Speicherindizes im Speicher
(z.B. einem Direktzugriffsspeicher) und eine Kopie in einer Datei
auf einer lokalen Platte oder in einem Speichersystem 414.
Alle Änderungen
der Indizes werden ferner in der Datei auf der Basis der "Write-Through-Methode" aktualisiert. Die
Folgenummern sind in keiner Datei gespeichert. Bei einem Ausfall
wird der Folgeserver 505 einfach erneut gestartet und liest die
Speicherindizes aus der Datei und erzeugt die neuen Folgenummern.
-
Wenn
der Folgeserver
505 für
atomare Aktualisierungen der Speicherindex-Metadaten verwendet wird,
so wird der Algorithmus zum Herunterladen und Speichern einer Blockdatei
zu:
-
Wenn
zwei Threads jetzt den oben genannten Algorithmus für die gleiche
Blockdatei ausführen,
so kann die folgende Folge von Ereignissen auftreten:
-
C. Aufbau der Ausfallsicherung
-
Es
gibt Fehlermodi, die behandelt werden müssen: der Ausfall des Folgeservers 505 und
der Ausfall eines Clients (Thread) mit einer negativen Ziffer für einen
Speicherindex (was bedeutet, dass der Block als belegt bzw. beschäftigt zu
behandeln ist). Die Ausfallsicherung für den Folgeserver 505 ist
eindeutig, da keine Sperren gegeben sind. Die Herzschläge des Folgeservers 505 werden
unter Verwendung herkömmlicher Techniken überwacht.
Wenn der Folgeserver 505 stirbt (z.B. der Herzschlag nicht
mehr wahrnehmbar ist), kann er einfach neu gestartet werden. Wenn
er neu gestartet wird, liest er die Speicherindizes aus der Datei ein
(soweit vorhanden) und erzeugt eine neue Anordnung (wahlfreier)
Folgenummern. Wenn ein beliebiger Client versucht, den Speicherindex
mit einer alten Folgenummer zu aktualisieren, so schlägt die Operation
fehl und der Client muss den Versuch auf die normale Art und Weise
wiederholen.
-
Wenn
ein Client ausfällt,
nachdem eine negative Nummer bzw. Ziffer (die eine unvollständige Operation
anzeigt) für
einen Speicherindex gesetzt worden ist, müssen andere Clients nicht unendlich
lange darauf warten, bis sich der Speicherindex in Null oder eine
positive Nummer bzw. Ziffer ändert
(wodurch eine ausgeführte
Operation angezeigt wird). Der Folgeserver 505 behandelt
diese Situation wie folgt. Es wird angenommen, dass der Client A
einen Speicherindex für
eine bestimmte Blockdatei auf –1
setzt und danach ausfällt bzw.
stirbt. Wenn ein anderer Client, wie etwa der Client B, den Speicherindex
liest und diesen mit einem Wert von –1 feststellt, so verfährt er auf
normale Art und Weise weiter, sofern dies möglich ist (abhängig von
dem, was er gerade ausführt).
Er könnte
zum Beispiel mit dem Herunterladen der nächsten Blockdatei fortfahren. Wenn
der Client B jedoch nicht fortfahren kann, bis sich dessen negative
Ziffer ändert,
so ruht er für
einen Zeitraum, der ausreicht, um anzuzeigen, dass der Client A
gestorben ist, und wobei dann angenommen wird, dass A gestorben
ist. Wenn der Client zum Beispiel eine Plausibilitätsprüfung ausführt, um
zu ermitteln, ob alle Blöcke
heruntergeladen worden sind, so fährt er fort und lädt den Block
herunter.
-
V. Rechenumgebung
-
Die
vorliegende Erfindung kann in Software, Hardware oder einer Kombination
dieser Möglichkeiten implementiert
werden, und sie kann unter Verwendung eines oder mehrerer Computersysteme
oder anderer Verarbeitungssysteme implementiert werden. Ein Beispiel
für ein
Computersystem, das zum Beispiel zur Implementierung eines Content
Management Servers 110, eines Content Provider Clients 106,
einer Verteilerstation 114, einer Steuereinheit 402,
eines Verteilungs-Servers 504, eines Anwendungs-Servers 508,
eines Folgeservers 505 oder jeder anderen Rechenplattform
(hierin auch als "Vorrichtungen" oder "Maschinen" oder "Server" bezeichnet) verwendet
werden kann, ist das in der Abbildung aus 14 dargestellte
Computersystem 1400. Das Computersystem 1400 weist
einen oder mehrere Prozessoren auf, wie etwa den Prozessor 1404.
Der Prozessor 1404 ist mit einer Kommunikationsinfrastruktur 1406 (z.B.
einem Bus oder einem Netzwerk) verbunden. Verschiedene Ausführungsbeispiele
können
in Verbindung mit diesem beispielhaften Computersystem beschrieben
werden. Beim Lesen der vorliegenden Beschreibung wird es für den Fachmann
auf dem jeweiligen Gebiet jedoch ersichtlich, wie die Erfindung
unter Verwendung anderer Computersysteme und/oder Computerarchitekturen
implementiert werden kann.
-
Das
Computersystem 1400 weist ferner einen Hauptspeicher 1408 auf,
vorzugsweise einen Direktzugriffsspeicher (RAM), und wobei es auch
einen sekundären
Speicher 1410 aufweisen kann. Der sekundäre Speicher 1410 kann
zum Beispiel ein Festplattenlaufwerk 1412 und/oder ein
Wechselspeicherlaufwerk 1414 aufweisen, das ein Floppy-Disk-Laufwerk,
ein Magnetbandlaufwerk, ein optisches Disk-Laufwerk, etc. darstellt. Das
Wechselspeicherlaufwerk 1414 liest aus und/oder schreibt
in eine Wechselspeichereinheit 1418 auf eine allgemein
bekannte Art und Weise. Die Wechselspeichereinheit 1418 stellt
eine Floppy-Disk, ein Magnetband, eine optische Disk, etc. dar.
Hiermit wird festgestellt, dass die Wechselspeichereinheit 1418 ein
in einem Computer verwendbares Speichermedium auf, auf dem Computersoftware
und/oder Daten gespeichert sind.
-
Der
sekundäre
Speicher 1410 kann ferner ähnliche Einrichtungen aufweisen,
die das Laden von Computerprogrammen oder Eingabedaten in das Computersystem 1400 ermöglichen.
Bei diesen Einrichtungen kann es sich zum Beispiel um eine Wechselspeichereinheit 1422 und
eine Schnittstelle 1420 handeln. Zu den Beispielen zählen eine
Programmkassette und eine Kassettenschnittstelle (wie etwa in Videospielgeräten), ein entfernbarer
Speicherchip (wie etwa ein EPROM oder PROM) und ein zugeordneter
Socket sowie andere Wechselspeichereinheiten 1422 und Schnittstellen 1420,
die eine Übertragung
von Software und Daten von der Wechselspeichereinheit 1422 an
das Computersystem 1400 ermöglichen.
-
Das
Computersystem 1400 kann ferner eine Kommunikationsschnittstelle 1424 aufweisen.
Die Kommunikationsschnittstelle 1424 ermöglicht die Übertragung
von Software und Daten zwischen dem Computersystem 1400 und
externen Vorrichtungen. Zu den Beispielen für die Kommunikationsschnittstelle 1424 zählen ein
Modem, eine Netzwerkschnittstelle (wie etwa eine Ethernet-Karte),
ein Kommunikationsanschluss, ein PCMCIA-Steckplatz und eine PCMCIA-Karte,
etc. Die über
die Kommunikationsschnittstelle 1424 übertragene Software sowie die
Daten sind in Form von Signalen 1428 gegeben, bei denen
es sich um elektronische, elektromagnetische, optischer oder andere
Signale handeln kann, die von der Kommunikationsschnittstelle 1424 empfangen
werden können.
Diese Signale werden über
einen Kommunikationspfad (d.h. Kanal) 1426 an die Kommunikationsschnittstelle 1424 vorgesehen.
Der Kanal 1426 führt
Signale 1428 in das und aus dem Computersystem 1400 und
kann unter Verwendung von Drähten
oder Kabeln, Glasfasertechnik, einer Telefonleitung, einem Mobiltelefonübermittlungsabschnitt,
einem HF-Übermittlungsabschnitt
und anderen Kommunikationskanälen
implementiert werden.
-
In
einem Ausführungsbeispiel
der Erfindung können
die Signale 1428 Dateiinhalte oder verschiedene Signale übertragen,
die durch die auf dem Computersystem 1400 ausgeführten Prozesse
erzeugt werden, und zwar zur Erfassung und dem Senden von Blockdateien
sowie der Verwaltung des Assemblierens einer Dateinutzlast.
-
Die
in dem vorliegenden Dokument verwendeten Begriffe "Computerprogrammmedium" und "von einem Computer
verwendbares Medium" betreffen
allgemein Medien wie etwa ein Wechselspeicherlaufwerk 1414,
eine in einem Festplattenlaufwerk 1412 installierte Festplatte
und Signale 1428. Diese Computerprogrammprodukte sind Einrichtungen,
die dazu dienen, dem Computersystem 1400 Software bereitzustellen.
Die vorliegende Erfindung umfasst derartige Computerprogrammprodukte.
-
Computerprogramme
(die auch als Computersteuerlogik bezeichnet werden) werden in dem
Hauptspeicher 1408 und/oder dem sekundären Speicher 1410 gespeichert.
Computerprogramme können
auch über die
Kommunikationsschnittstelle 1424 empfangen werden. Wenn
derartige Computerprogramme ausgeführt werden, ermöglichen
sie es dem Computersystem 1400 die hierin beschriebenen
Merkmale der vorliegenden Erfindung auszuführen. Im Besonderen ermöglichen
die ausgeführten
Computerprogramme dem Prozessor 1404 die Ausführung der
Merkmale der vorliegenden Erfindung. Demgemäß stellen derartige Computerprogramme
Steuereinheiten des Computersystems 1400 dar.
-
VI. Schlussfolgerung
-
Vorstehend
wurden verschiedene Ausführungsbeispiele
der vorliegenden Erfindung beschrieben, wobei hiermit jedoch festgestellt
wird, dass diese ausschließlich
Beispielszwecken dienen und keine einschränkende Funktion besitzen. Für den Fachmann
auf dem jeweiligen Gebiet ist es ersichtlich, dass verschiedene Abänderungen
in Bezug auf die dargestellten Details möglich sind, ohne dabei vom
Umfang der Erfindung abzuweichen. Die vorliegende Erfindung ist
somit nicht durch eines der vorstehend beschriebenen Ausführungsbeispiele
beschränkt.
Vielmehr ist sie ausschließlich
gemäß den folgenden
Ansprüchen
definiert.