DE60111072T2 - Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten - Google Patents

Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten Download PDF

Info

Publication number
DE60111072T2
DE60111072T2 DE60111072T DE60111072T DE60111072T2 DE 60111072 T2 DE60111072 T2 DE 60111072T2 DE 60111072 T DE60111072 T DE 60111072T DE 60111072 T DE60111072 T DE 60111072T DE 60111072 T2 DE60111072 T2 DE 60111072T2
Authority
DE
Germany
Prior art keywords
node
flag
file
sequence number
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60111072T
Other languages
English (en)
Other versions
DE60111072D1 (de
Inventor
Desmond Cho-Hung Chan
Young Siew SIM
Rajeev Thakur
Trygve Isaacson
D. William GROPP
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Prismedia Networks Inc San Jose
PRISMedia Networks Inc
Original Assignee
Prismedia Networks Inc San Jose
PRISMedia Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/681,644 external-priority patent/US6970939B2/en
Application filed by Prismedia Networks Inc San Jose, PRISMedia Networks Inc filed Critical Prismedia Networks Inc San Jose
Publication of DE60111072D1 publication Critical patent/DE60111072D1/de
Application granted granted Critical
Publication of DE60111072T2 publication Critical patent/DE60111072T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Description

  • 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) 114A114G 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 114A114G 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 114A114G 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 13011306 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:
    Figure 00420001
  • 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:
    Figure 00420002
  • 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:
    Figure 00430001
  • 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:
    Figure 00450001
  • Wenn zwei Threads jetzt den oben genannten Algorithmus für die gleiche Blockdatei ausführen, so kann die folgende Folge von Ereignissen auftreten:
    Figure 00460001
  • 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.

Claims (14)

  1. Verfahren zum Assemblieren einer Datei als Reaktion auf eine Anforderung von einem Benutzer, die an einen ersten Knoten in einem Netzwerk mit einer Mehrzahl angeschlossener Knoten gesendet worden ist, wobei das Verfahren folgendes umfasst: das Bestimmen (1202) auf der Basis der Anforderung, welche Inhaltskomponenten 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 (1210); das Empfangen (1212, 1214) von Antworten auf die genannte Suchanforderung von den genannten anderen Knoten, wobei jede Antwort von einem antwortenden Knoten anzeigt, welche Inhaltskomponenten von dem genannten antwortenden Knoten zur Verfügung stehen; das Bestimmen einer gewünschten Anordnung mindestens eines Knotens für das Herunterladen der Inhaltskomponenten; das Herunterladen (1216) der Inhaltskomponenten von der gewünschten Anordnung; und das Assemblieren (1224) der Datei aus den heruntergeladenen Inhaltskomponenten; das Erzeugen mehrerer Prozesse an dem genannten ersten Knoten, wobei jeder Prozess eine Anforderung für eine Inhaltskomponente von einem der genannten mehreren Knoten darstellt; das Zuweisen (1301) einer Flagge an jede herunterzuladene Inhaltskomponente, wobei die genannte Flagge anzeigt, ob eine zugeordnete Inhaltskomponente bereits heruntergeladen worden ist, noch nicht heruntergeladen worden ist oder gerade heruntergeladen wird; das Zuordnen (1301) einer eindeutigen Folgenummer zu jeder Flagge; das Erhöhen (1302) der genannten Folgenummer und das Übermitteln der genannten erhöhten Folgenummer an den genannten Leseprozess als Reaktion auf das Lesen der genannten Flagge durch einen der genannten Mehrzahl von Prozessen, um zu bestimmen, ob die genannte zugeordnete Inhaltskomponente bereits heruntergeladen worden ist; das Vergleichen (1304) der genannten erhöhten Folgenummer, die an den genannten Leseprozess übermittelt worden ist, mit der genannten erhöhten Folgenummer, die der genannte Flagge zugeordnet ist, und zwar als Reaktion auf eine Anforderung durch den genannten Leseprozess zur Modifikation der genannten Flagge, um anzuzeigen, dass die genannte zugeordnete Inhaltskomponente gerade heruntergeladen wird; das Annehmen (1305) der genannten Modifikation der genannten Flagge, wenn die genannte erhöhte Folgenummer, die zu dem genannten Leseprozess übermittelt wird, mit der genannten erhöhten Folgenummer übereinstimmt, die der genannten Flagge zugeordnet ist; und das Abweisen (1306) der genannten Modifikation der genannten Flagge, wenn die genannte erhöhte Folgenummer, die zu dem genannten Leseprozess übermittelt wird, mit der genannten erhöhten Folgenummer nicht übereinstimmt, die der genannten Flagge zugeordnet ist.
  2. Verfahren nach Anspruch 1, wobei die genannten Inhaltskomponenten Blockdateien umfassen, und wobei das genannte Bestimmen folgendes umfasst: das Bestimmen einer Anzahl erforderlicher Blockdateien zumindest teilweise auf der Basis der der Datei zugeordneten Metadaten.
  3. Verfahren nach Anspruch 1, wobei die Knoten in einem virtuellen Baum angeordnet sind, und wobei das genannte Senden folgendes umfasst: das Senden einer Benachrichtigung an benachbarte Knoten in dem virtuellen Baum zum Bestimmen des Vorhandenseins der Inhaltskomponenten, wobei die Benachrichtigung Verteilungskriterien zumindest einer der Inhaltskomponenten aufweist.
  4. Verfahren nach Anspruch 3, wobei das genannte Senden ferner folgendes umfasst: das Verteilen der Suchanforderung an mindestens einen Knoten in dem Netzwerk, der die Verteilungskriterien erfüllt.
  5. Computerprogramm mit einer Computerprogrammcodeeinrichtung, welche in der Lage ist, die Schritte des Verfahrens aus Anspruch 1 auszuführen, wenn das genannte Programm auf einem Computer ausgeführt wird.
  6. Computerprogramm nach Anspruch 5, ausgeführt auf einem computerlesbaren Medium.
  7. Computerbasiertes System zum Assemblieren einer Datei als Reaktion auf eine Anforderung von einem Benutzer, die an einen ersten Knoten in einem Netzwerk mit einer Mehrzahl angeschlossener Knoten gesendet worden ist, wobei das genannte System folgendes umfasst: eine Einrichtung zum Bestimmen (1202) auf der Basis der Anforderung, welche Inhaltskomponenten zum Assemblieren der Datei erforderlich sind; eine Einrichtung zum Senden (1204) einer Suchanforderung, wenn nicht alle Inhaltskomponenten an dem ersten Knoten vorhanden sind, um zu bestimmen, welche anderen Knoten Inhaltskomponenten aufweisen; eine Einrichtung zum Empfangen (1206) von Antworten auf die genannte Suchanforderung von den genannten anderen Knoten, wobei jede Antwort von einem antwortenden Knoten anzeigt, welche Inhaltskomponenten von dem genannten antwortenden Knoten zur Verfügung stehen; eine Einrichtung zum Bestimmen (1210) einer gewünschten Anordnung mindestens eines Knotens für das Herunterladen der Inhaltskomponenten; eine Einrichtung zum Herunterladen (1216) der Inhaltskomponenten von der gewünschten Anordnung; und eine Einrichtung zum Assemblieren (1224) der Datei aus den heruntergeladenen Inhaltskomponenten; eine Einrichtung zum Erzeugen mehrerer Prozesse an dem genannten ersten Knoten, wobei jeder Prozess eine Anforderung für eine Inhaltskomponente von einem der genannten mehreren Knoten darstellt; eine Einrichtung (1301) zum Zuweisen einer Flagge an jede herunterzuladene Inhaltskomponente, wobei die genannte Flagge anzeigt, ob eine zugeordnete Inhaltskomponente bereits heruntergeladen worden ist, noch nicht heruntergeladen worden ist oder gerade heruntergeladen wird; eine Einrichtung (1301) zum Zuordnen einer eindeutigen Folgenummer zu jeder Flagge; eine Einrichtung (1302) zum Erhöhen der genannten Folgenummer und das Übermitteln der genannten erhöhten Folgenummer an den genannten Leseprozess als Reaktion auf das Lesen der genannten Flagge durch einen der genannten Mehrzahl von Prozessen, um zu bestimmen, ob die genannte zugeordnete Inhaltskomponente bereits heruntergeladen worden ist; eine Einrichtung (1304) zum Vergleichen der genannten erhöhten Folgenummer, die an den genannten Leseprozess übermittelt worden ist, mit der genannten erhöhten Folgenummer, die der genannte Flagge zugeordnet ist, und zwar als Reaktion auf eine Anforderung durch den genannten Leseprozess zur Modifikation der genannten Flagge, um anzuzeigen, dass die genannte zugeordnete Inhaltskomponente gerade heruntergeladen wird; eine Einrichtung (1305) zum Annehmen der genannten Modifikation der genannten Flagge, wenn die genannte erhöhte Folgenummer, die zu dem genannten Leseprozess übermittelt wird, mit der genannten erhöhten Folgenummer übereinstimmt, die der genannten Flagge zugeordnet ist; und eine Einrichtung (1306) zum Abweisen der genannten Modifikation der genannten Flagge, wenn die genannte erhöhte Folgenummer, die zu dem genannten Leseprozess übermittelt wird, mit der genannten erhöhten Folgenummer nicht übereinstimmt, die der genannten Flagge zugeordnet ist.
  8. Computerbasiertes System nach Anspruch 7, wobei die genannten Inhaltskomponenten Blockdateien umfassen, und wobei die genannte erste Bestimmungseinrichtung folgendes umfasst: eine Einrichtung zum Bestimmen einer Anzahl erforderlicher Blockdateien zumindest teilweise auf der Basis von der Datei zugeordneten Metadaten.
  9. Computerbasiertes System nach Anspruch 7, wobei die genannte Einrichtung zum Empfangen folgendes umfasst: eine Einrichtung zum Empfangen von Antworten auf jede genannte Suchanforderung von der genannten Mehrzahl von Knoten, wobei jede Antwort von einem antwortenden Knoten anzeigt, welche Inhaltskomponenten von dem genannten antwortenden Knoten zur Verfügung stehen sowie der Leistungsmerkmale des genannten antwortenden Knotens.
  10. Computerbasiertes System nach Anspruch 7, wobei die genannte Einrichtung zum Herunterladen folgendes umfasst: eine Einrichtung zum Herunterladen eines ersten Teils der Inhaltskomponenten von einem ersten antwortenden Knoten parallel zu dem Herunterladen eines zweiten Teils der Inhaltskomponenten von einem zweiten antwortenden Knoten.
  11. Vorrichtung zum Assemblieren einer Datei als Reaktion auf eine Anforderung eines Benutzers, die an einen ersten Knoten in einem Netzwerk mit einer Mehrzahl angeschlossener Knoten gesendet worden ist, das einen zweiten Knoten aufweist, wobei der genannte erst Knoten einen ersten Prozessor umfasst, und wobei der genannte zweite Knoten einen zweiten Prozessor umfasst, wobei der genannte erste Prozessor dazu dient: zu bestimmen, welche Inhaltskomponenten zum Assemblieren der genannten Datei erforderlich sind, wobei eine Suchanforderung gesendet wird, wenn nicht alle Inhaltskomponenten an dem genannten ersten Knoten vorhanden sind, um zu bestimmen, welche Knoten der Mehrzahl von Knoten Inhaltskomponenten aufweisen; Antworten auf jede Suchanforderung zu empfangen, wobei jede Antwort von einem entsprechenden Knoten anzeigt, welche Inhaltskomponenten von dem entsprechenden Knoten zur Verfügung stehen; und eine gewünschte Anordnung mindestens eines Knotens zu bestimmen, von der die genannten Inhaltskomponenten herunterzuladen sind; und wobei der genannte zweite Knoten dazu dient: die genannten Inhaltskomponenten von der genannten gewünschten Anordnung herunterzuladen; die genannte Datei aus den genannten heruntergeladenen Inhaltskomponenten zu assemblieren; eine Mehrzahl von Prozessen zu erzeugen, wobei jeder Prozess eine Anforderung für eine Inhaltskomponente von einem Knoten der Mehrzahl von Knoten darstellt; jeder herunterzuladenen Inhaltskomponente eine Flagge zuzuweisen, wobei die genannte Flagge anzeigt, ob eine zugeordnete Inhaltskomponente bereits heruntergeladen worden ist, noch nicht heruntergeladen worden ist oder gerade heruntergeladen wird; jeder Flagge eine eindeutige Folgenummer zuzuordnen; die genannte eindeutige Folgenummer zu erhöhen, wobei die genannte erhöhte Folgenummer als Folge des Lesens der genannten Flagge durch einen Prozess der genannten Mehrzahl von Prozesse zu dem genannten Leseprozess übermittelt wird, um zu bestimmen, ob die genannte zugeordnete Inhaltskomponente bereits heruntergeladen worden ist; die genannte erhöhte Folgenummer, die an den genannten Leseprozess übermittelt worden ist, mit der genannten erhöhten Folgenummer, die der genannten Flagge zugeordnet ist, zu vergleichen, und zwar als Reaktion auf die genannte Anforderung durch den genannten Leseprozess, die genannte Flagge zu modifizieren, so dass angezeigt wird, dass die genannte zugeordnete Inhaltskomponente gerade heruntergeladen wird; eine Modifikation durch die genannte Flagge anzunehmen, wenn die genannte an den genannten Leseprozess übermittelte erhöhte Folgenummer mit der genannten erhöhten Folgenummer übereinstimmt, die der genannten Flagge zugeordnet ist; und die genannte Modifikation der genannten Flagge abzuweisen, wenn die genannte erhöhte Folgenummer, die an den genannten Leseprozess übermittelt worden ist, nicht mit der genannten erhöhten Folgenummer übereinstimmt, die der genannten Flagge zugeordnet ist.
  12. Vorrichtung nach Anspruch 11, wobei die genannten Inhaltskomponenten Blockdateien umfassen, und wobei der genannte erste Knoten ferner eine Anzahl erforderlicher Blockdateien zumindest teilweise auf der Basis von der genannten Datei zugeordneten Metadaten bestimmt.
  13. Vorrichtung nach Anspruch 11, wobei der genannte erste Knoten ferner dazu dient, von der genannten Mehrzahl von Knoten Antworten auf die genannte Suchanforderung zu empfangen, wobei jede Antwort von einem antwortenden Knoten anzeigt, welche Inhaltskomponenten von dem genannten antwortenden Knoten zur Verfügung stehen, sowie die Leistungsmerkmale des genannten antwortenden Knotens.
  14. Vorrichtung nach Anspruch 11, wobei der genannte zweite Knoten ferner dazu dient, einen ersten Teil der genannten Inhaltskomponenten von einem ersten antwortenden Knoten herunterzuladen, und zwar parallel zu dem Herunterladen eines zweiten Teils der genannten Inhaltskomponenten von einem zweiten antwortenden Knoten.
DE60111072T 2000-10-26 2001-10-26 Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten Expired - Lifetime DE60111072T2 (de)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US26628600P 2000-10-26 2000-10-26
US266286P 2000-10-26
US27840801P 2001-03-23 2001-03-23
US27828901P 2001-03-23 2001-03-23
US27841001P 2001-03-23 2001-03-23
US278410P 2001-03-23
US278289P 2001-03-23
US278408P 2001-03-23
US09/681,644 US6970939B2 (en) 2000-10-26 2001-05-15 Method and apparatus for large payload distribution in a network
US681644 2001-05-15
PCT/US2001/042816 WO2002039323A2 (en) 2000-10-26 2001-10-26 Method and apparatus for real-time parallel delivery of segments of a large payload file

Publications (2)

Publication Number Publication Date
DE60111072D1 DE60111072D1 (de) 2005-06-30
DE60111072T2 true DE60111072T2 (de) 2006-01-26

Family

ID=27540497

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60111072T Expired - Lifetime DE60111072T2 (de) 2000-10-26 2001-10-26 Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten

Country Status (7)

Country Link
US (1) US7076553B2 (de)
EP (1) EP1330907B1 (de)
CN (1) CN100431320C (de)
AT (1) ATE296514T1 (de)
AU (1) AU2002236435A1 (de)
DE (1) DE60111072T2 (de)
WO (1) WO2002039323A2 (de)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
WO2002035359A2 (en) 2000-10-26 2002-05-02 Prismedia Networks, Inc. Method and system for managing distributed content and related metadata
JP3543322B2 (ja) * 2001-02-02 2004-07-14 日本電気株式会社 移動通信システム及び移動通信システムにおけるデータ転送方法
US8477616B1 (en) * 2001-06-05 2013-07-02 Avaya Inc. Method for achieving high-availability of itineraries in a real-time network scheduled packet routing system
US20020198930A1 (en) * 2001-06-25 2002-12-26 International Business Machines Corporation Method and apparatus for wide-spread distribution of electronic content in a peer to peer fashion
JP2003323301A (ja) * 2002-02-27 2003-11-14 Fuji Xerox Co Ltd ソフトウェアをダウンロードする情報処理装置、ダウンロード方法及びダウンロードプログラム
CA2377649C (en) * 2002-03-20 2009-02-03 Ibm Canada Limited-Ibm Canada Limitee Dynamic cluster database architecture
US20030204602A1 (en) 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US7991827B1 (en) 2002-11-13 2011-08-02 Mcafee, Inc. Network analysis system and method utilizing collected metadata
US7451359B1 (en) * 2002-11-27 2008-11-11 Oracle International Corp. Heartbeat mechanism for cluster systems
US7139559B2 (en) * 2002-12-09 2006-11-21 Qualcomm Inc. System and method for handshaking between wireless devices and servers
US9372870B1 (en) 2003-01-21 2016-06-21 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems and cluster storage system
US8626820B1 (en) 2003-01-21 2014-01-07 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
JP4265245B2 (ja) * 2003-03-17 2009-05-20 株式会社日立製作所 計算機システム
JP4123365B2 (ja) * 2003-04-03 2008-07-23 ソニー株式会社 サーバ装置と、デジタルデータのバックアップおよび復元方法
US20050033822A1 (en) * 2003-08-05 2005-02-10 Grayson George Dale Method and apparatus for information distribution and retrieval
KR100462807B1 (ko) * 2004-04-28 2004-12-17 엔에이치엔(주) 무선 네트워크를 통한 마일리지 제공 방법 및 그 시스템
US7577721B1 (en) * 2004-06-08 2009-08-18 Trend Micro Incorporated Structured peer-to-peer push distribution network
US20060010203A1 (en) * 2004-06-15 2006-01-12 Nokia Corporation Personal server and network
US7712102B2 (en) * 2004-07-30 2010-05-04 Hewlett-Packard Development Company, L.P. System and method for dynamically configuring a plurality of load balancers in response to the analyzed performance data
CN100377536C (zh) * 2004-07-30 2008-03-26 Ut斯达康通讯有限公司 用于流媒体服务的负载模拟器以及负载模拟系统
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US20060168084A1 (en) * 2004-11-29 2006-07-27 Leonid Kogan Method and apparatus for rendering load balancing and failover
US7191215B2 (en) * 2005-03-09 2007-03-13 Marquee, Inc. Method and system for providing instantaneous media-on-demand services by transmitting contents in pieces from client machines
US20090025046A1 (en) * 2005-03-09 2009-01-22 Wond, Llc Hybrid architecture for media services
US8219635B2 (en) 2005-03-09 2012-07-10 Vudu, Inc. Continuous data feeding in a distributed environment
US20080022343A1 (en) 2006-07-24 2008-01-24 Vvond, Inc. Multiple audio streams
US7937379B2 (en) 2005-03-09 2011-05-03 Vudu, Inc. Fragmentation of a file for instant access
US7698451B2 (en) * 2005-03-09 2010-04-13 Vudu, Inc. Method and apparatus for instant playback of a movie title
US9176955B2 (en) 2005-03-09 2015-11-03 Vvond, Inc. Method and apparatus for sharing media files among network nodes
US8904463B2 (en) 2005-03-09 2014-12-02 Vudu, Inc. Live video broadcasting on distributed networks
US8099511B1 (en) 2005-06-11 2012-01-17 Vudu, Inc. Instantaneous media-on-demand
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
CN1852307B (zh) * 2005-10-10 2010-12-08 华为技术有限公司 一种数据下载方法
US7447940B2 (en) * 2005-11-15 2008-11-04 Bea Systems, Inc. System and method for providing singleton services in a cluster
WO2007061440A2 (en) * 2005-11-15 2007-05-31 Bea Systems, Inc. System and method for providing singleton services in a cluster
US7702947B2 (en) * 2005-11-29 2010-04-20 Bea Systems, Inc. System and method for enabling site failover in an application server environment
US7725446B2 (en) * 2005-12-19 2010-05-25 International Business Machines Corporation Commitment of transactions in a distributed system
US20070156928A1 (en) * 2005-12-30 2007-07-05 Makaram Raghunandan Token passing scheme for multithreaded multiprocessor system
CA2653447A1 (en) * 2006-06-01 2008-05-08 Igeacare Systems, Inc. Remote health care diagnostic tool
WO2007148300A2 (en) * 2006-06-20 2007-12-27 Gal Zuckerman Methods and systems for push-to-storage
JP5140952B2 (ja) 2006-07-10 2013-02-13 日本電気株式会社 コンテンツ配信システム、コンテンツ配信サーバ、コンテンツ再生端末、プログラム、コンテンツ配信方法
US8327266B2 (en) 2006-07-11 2012-12-04 Napo Enterprises, Llc Graphical user interface system for allowing management of a media item playlist based on a preference scoring system
US8059646B2 (en) 2006-07-11 2011-11-15 Napo Enterprises, Llc System and method for identifying music content in a P2P real time recommendation network
US9003056B2 (en) 2006-07-11 2015-04-07 Napo Enterprises, Llc Maintaining a minimum level of real time media recommendations in the absence of online friends
US7970922B2 (en) * 2006-07-11 2011-06-28 Napo Enterprises, Llc P2P real time media recommendations
KR100841317B1 (ko) * 2006-07-14 2008-06-26 엘지전자 주식회사 텔레비젼의 시스템 구동과 관련된 소프트웨어를 송수신하는 방법 및 그 장치
US8090606B2 (en) 2006-08-08 2012-01-03 Napo Enterprises, Llc Embedded media recommendations
US8620699B2 (en) 2006-08-08 2013-12-31 Napo Enterprises, Llc Heavy influencer media recommendations
US8510459B2 (en) * 2006-09-01 2013-08-13 Pacbyte Software Pty Limited Method and system for transmitting a data file over a data network
US8296812B1 (en) 2006-09-01 2012-10-23 Vudu, Inc. Streaming video using erasure encoding
US20080104170A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Collaborative Networks for Parallel Downloads of Content
US8103247B2 (en) 2006-10-31 2012-01-24 Microsoft Corporation Automated secure pairing for wireless devices
US7962460B2 (en) 2006-12-01 2011-06-14 Scenera Technologies, Llc Methods, systems, and computer program products for determining availability of presentable content via a subscription service
EP2100223B1 (de) * 2006-12-05 2011-01-19 QUALCOMM Incorporated Vorrichtung und verfahren für einen einzelnullpunktfehler-lastenverteiler
US8166194B2 (en) * 2006-12-13 2012-04-24 Microsoft Corporation Lock-free shared audio buffer
US20080172448A1 (en) * 2007-01-16 2008-07-17 Microsoft Corporation Packetized boot service broadcasting
US20080244042A1 (en) * 2007-03-26 2008-10-02 Sugih Jamin Method and system for communicating media over a computer network
US9224427B2 (en) 2007-04-02 2015-12-29 Napo Enterprises LLC Rating media item recommendations using recommendation paths and/or media item usage
US8112720B2 (en) * 2007-04-05 2012-02-07 Napo Enterprises, Llc System and method for automatically and graphically associating programmatically-generated media item recommendations related to a user's socially recommended media items
US8019830B2 (en) * 2007-04-16 2011-09-13 Mark Thompson Methods and apparatus for acquiring file segments
US9037632B2 (en) 2007-06-01 2015-05-19 Napo Enterprises, Llc System and method of generating a media item recommendation message with recommender presence information
US9164993B2 (en) 2007-06-01 2015-10-20 Napo Enterprises, Llc System and method for propagating a media item recommendation message comprising recommender presence information
US20090049045A1 (en) 2007-06-01 2009-02-19 Concert Technology Corporation Method and system for sorting media items in a playlist on a media device
US8285776B2 (en) 2007-06-01 2012-10-09 Napo Enterprises, Llc System and method for processing a received media item recommendation message comprising recommender presence information
US8032587B2 (en) * 2007-08-28 2011-10-04 International Business Machines Corporation Method and apparatus for client-side aggregation of asynchronous fragmented requests
EP2031816B1 (de) * 2007-08-29 2012-02-22 NTT DoCoMo, Inc. Optimaler Betrieb hierarchischer Peer-to-Peer-Netzwerke
US8554941B2 (en) * 2007-08-30 2013-10-08 At&T Intellectual Property I, Lp Systems and methods for distributing video on demand
US8135865B2 (en) * 2007-09-04 2012-03-13 Apple Inc. Synchronization and transfer of digital media items
US20090094248A1 (en) * 2007-10-03 2009-04-09 Concert Technology Corporation System and method of prioritizing the downloading of media items in a media item recommendation network
US20090100188A1 (en) * 2007-10-11 2009-04-16 Utstarcom, Inc. Method and system for cluster-wide predictive and selective caching in scalable iptv systems
US9060034B2 (en) 2007-11-09 2015-06-16 Napo Enterprises, Llc System and method of filtering recommenders in a media item recommendation system
US20090150548A1 (en) * 2007-11-13 2009-06-11 Microsoft Corporation Management of network-based services and servers within a server cluster
US8396951B2 (en) 2007-12-20 2013-03-12 Napo Enterprises, Llc Method and system for populating a content repository for an internet radio service based on a recommendation network
US9734507B2 (en) 2007-12-20 2017-08-15 Napo Enterprise, Llc Method and system for simulating recommendations in a social network for an offline user
US8316015B2 (en) 2007-12-21 2012-11-20 Lemi Technology, Llc Tunersphere
US8117193B2 (en) 2007-12-21 2012-02-14 Lemi Technology, Llc Tunersphere
US8060525B2 (en) 2007-12-21 2011-11-15 Napo Enterprises, Llc Method and system for generating media recommendations in a distributed environment based on tagging play history information with location information
US8260864B2 (en) * 2008-02-13 2012-09-04 Microsoft Corporation Push mechanism for efficiently sending aggregated data items to client
US7743163B2 (en) * 2008-04-30 2010-06-22 Bally Gaming, Inc. Download and data transfer gaming system
US8051196B2 (en) * 2008-04-30 2011-11-01 Bally Gaming, Inc. Download and data transfer gaming method
CN101582064B (zh) * 2008-05-15 2011-12-21 阿里巴巴集团控股有限公司 一种大数据量数据处理方法及系统
US9100246B1 (en) * 2008-06-19 2015-08-04 Symantec Corporation Distributed application virtualization
US8200602B2 (en) 2009-02-02 2012-06-12 Napo Enterprises, Llc System and method for creating thematic listening experiences in a networked peer media recommendation environment
US20110055312A1 (en) * 2009-08-28 2011-03-03 Apple Inc. Chunked downloads over a content delivery network
CN101635728B (zh) * 2009-09-02 2012-09-26 中兴通讯股份有限公司 内容分发网络中数据同步的方法及系统
US8468135B2 (en) 2010-04-14 2013-06-18 International Business Machines Corporation Optimizing data transmission bandwidth consumption over a wide area network
US9021229B2 (en) 2010-04-14 2015-04-28 International Business Machines Corporation Optimizing a file system for different types of applications in a compute cluster using dynamic block size granularity
CN102075581B (zh) * 2011-01-25 2013-06-12 中国科学院计算技术研究所 一种面向分布式文件系统的数据传输方法及装置
US8510267B2 (en) * 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories
CN103582850A (zh) * 2011-03-30 2014-02-12 维斯塔斯风力系统集团公司 分布式容错控制和保护系统
WO2013077983A1 (en) 2011-11-01 2013-05-30 Lemi Technology, Llc Adaptive media recommendation systems, methods, and computer readable media
US20130298175A1 (en) * 2012-05-02 2013-11-07 International Business Machines Corporation Constructing a customized message in a video-on-demand service
US9953305B2 (en) * 2012-10-22 2018-04-24 Oonetic Online payment system and method according to the mirror authorization server principle
CN104243425B (zh) * 2013-06-19 2018-09-04 深圳市腾讯计算机系统有限公司 一种在内容分发网络中进行内容管理的方法、装置及系统
US9633041B2 (en) * 2013-09-26 2017-04-25 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed file system network
US10341208B2 (en) 2013-09-26 2019-07-02 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed network
US10291503B2 (en) 2013-09-26 2019-05-14 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed network
US20150120252A1 (en) * 2013-10-30 2015-04-30 Brigham Young University Cax model synchronization
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9772787B2 (en) * 2014-03-31 2017-09-26 Amazon Technologies, Inc. File storage using variable stripe sizes
US20170083630A1 (en) * 2015-09-21 2017-03-23 Egemen Tas Method to virtualize large files in a sandbox
US9729633B2 (en) 2015-05-29 2017-08-08 Microsoft Technology Licensing, Llc Distributed data processing system
US10506038B1 (en) * 2015-12-24 2019-12-10 Jpmorgan Chase Bank, N.A. Method and system for implementing a global node architecture
US10474636B2 (en) 2016-03-25 2019-11-12 Amazon Technologies, Inc. Block allocation for low latency file systems
US10545927B2 (en) 2016-03-25 2020-01-28 Amazon Technologies, Inc. File system mode switching in a distributed storage service
US10417094B1 (en) 2016-07-13 2019-09-17 Peer Fusion, Inc. Hyper storage cluster
US11734070B2 (en) * 2019-11-19 2023-08-22 Verizon Patent And Licensing Inc. Systems and methods for providing a compare and swap platform for sequence number generation in a cloud computing environment
US11269612B2 (en) * 2019-12-10 2022-03-08 Paypal, Inc. Low latency dynamic content management

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ504100A0 (en) 2000-01-11 2000-02-03 Notron (No. 325) Pty Limited A method for distribution of streamed data packets on a switched network utilising an intelligent distribution network
US4466060A (en) * 1982-02-11 1984-08-14 At&T Bell Telephone Laboratories, Incorporated Message routing in a computer network
US4914571A (en) * 1987-06-15 1990-04-03 International Business Machines Corporation Locating resources in computer networks
US5079767A (en) * 1988-09-27 1992-01-07 Digital Equipment Corporation Method of multicast message distribution
US5367698A (en) * 1991-10-31 1994-11-22 Epoch Systems, Inc. Network file migration system
GB2272310A (en) * 1992-11-07 1994-05-11 Ibm Method of operating a computer in a network.
US5903566A (en) * 1994-06-24 1999-05-11 Metricom, Inc. Method for distributing program code to intelligent nodes in a wireless mesh data communication network
JPH08329021A (ja) * 1995-03-30 1996-12-13 Mitsubishi Electric Corp クライアントサーバシステム
US6003030A (en) * 1995-06-07 1999-12-14 Intervu, Inc. System and method for optimized storage and retrieval of data on a distributed computer network
JP3000895B2 (ja) * 1995-06-28 2000-01-17 日本電気株式会社 ダウンロード方法
US5926101A (en) * 1995-11-16 1999-07-20 Philips Electronics North America Corporation Method and apparatus for routing messages in a network of nodes with minimal resources
IL115263A (en) * 1995-09-12 1999-04-11 Vocaltec Ltd System and method for distributing multi-media presentations in a computer network
JP3741767B2 (ja) * 1996-02-26 2006-02-01 富士通株式会社 光ファイバ増幅器
US5872773A (en) * 1996-05-17 1999-02-16 Lucent Technologies Inc. Virtual trees routing protocol for an ATM-based mobile network
US5812773A (en) * 1996-07-12 1998-09-22 Microsoft Corporation System and method for the distribution of hierarchically structured data
US5924094A (en) * 1996-11-01 1999-07-13 Current Network Technologies Corporation Independent distributed database system
US5924116A (en) * 1997-04-02 1999-07-13 International Business Machines Corporation Collaborative caching of a requested object by a lower level node as a function of the caching status of the object at a higher level node
US5991804A (en) * 1997-06-20 1999-11-23 Microsoft Corporation Continuous media file server for cold restriping following capacity change by repositioning data blocks in the multiple data servers
US6014701A (en) * 1997-07-03 2000-01-11 Microsoft Corporation Selecting a cost-effective bandwidth for transmitting information to an end user in a computer network
US6038601A (en) * 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
US6105029A (en) * 1997-09-17 2000-08-15 International Business Machines Corporation Retrieving network files through parallel channels
US6081840A (en) * 1997-10-14 2000-06-27 Zhao; Yan Two-level content distribution system
US6145089A (en) * 1997-11-10 2000-11-07 Legato Systems, Inc. Server fail-over system
US6415373B1 (en) * 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6374336B1 (en) * 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6460087B1 (en) * 1998-02-25 2002-10-01 Kdd Corporation Method of transferring file
US6018780A (en) * 1998-05-19 2000-01-25 Lucent Technologies Inc. Method and apparatus for downloading a file to a remote unit
US6105209A (en) * 1998-06-22 2000-08-22 Brady; John R. Fabric cutting weight with integral spikes
US6212240B1 (en) * 1998-06-24 2001-04-03 Motorola, Inc. Method and apparatus for conveying data between communication devices
US20010052015A1 (en) 1998-06-24 2001-12-13 Chueng-Hsien Lin Push-pull sevices for the internet
US6370146B1 (en) * 1998-06-29 2002-04-09 Lucent Technologies Inc. Method and apparatus for non-disruptive addition of a new node to an inter-nodal network
US6515967B1 (en) * 1998-06-30 2003-02-04 Cisco Technology, Inc. Method and apparatus for detecting a fault in a multicast routing infrastructure
US6108703A (en) * 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US20020138640A1 (en) * 1998-07-22 2002-09-26 Uri Raz Apparatus and method for improving the delivery of software applications and associated data in web-based systems
US6363416B1 (en) * 1998-08-28 2002-03-26 3Com Corporation System and method for automatic election of a representative node within a communications network with built-in redundancy
US6765868B1 (en) 1998-09-22 2004-07-20 International Business Machines Corp. System and method for large file transfers in packet networks
US6691165B1 (en) * 1998-11-10 2004-02-10 Rainfinity, Inc. Distributed server cluster for controlling network traffic
US6427212B1 (en) * 1998-11-13 2002-07-30 Tricord Systems, Inc. Data fault tolerance software apparatus and method
US6498795B1 (en) * 1998-11-18 2002-12-24 Nec Usa Inc. Method and apparatus for active information discovery and retrieval
US6356903B1 (en) * 1998-12-30 2002-03-12 American Management Systems, Inc. Content management system
US6691312B1 (en) * 1999-03-19 2004-02-10 University Of Massachusetts Multicasting video
US6535869B1 (en) * 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
US6269080B1 (en) * 1999-04-13 2001-07-31 Glenayre Electronics, Inc. Method of multicast file distribution and synchronization
US6647408B1 (en) * 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6842896B1 (en) * 1999-09-03 2005-01-11 Rainbow Technologies, Inc. System and method for selecting a server in a multiple server license management system
US6785704B1 (en) * 1999-12-20 2004-08-31 Fastforward Networks Content distribution system for operation over an internetwork including content peering arrangements
US6772337B1 (en) * 1999-11-09 2004-08-03 Lucent Technologies Inc. Light weight security for parallel access to multiple mirror sites
JP3463803B2 (ja) * 1999-11-09 2003-11-05 松下電器産業株式会社 クラスタサーバ装置
US6708217B1 (en) * 2000-01-05 2004-03-16 International Business Machines Corporation Method and system for receiving and demultiplexing multi-modal document content
US6587866B1 (en) * 2000-01-10 2003-07-01 Sun Microsystems, Inc. Method for distributing packets to server nodes using network client affinity and packet distribution table
US6711607B1 (en) * 2000-02-04 2004-03-23 Ensim Corporation Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service
US6456599B1 (en) * 2000-02-07 2002-09-24 Verizon Corporate Services Group Inc. Distribution of potential neighbor information through an ad hoc network
US6931397B1 (en) * 2000-02-11 2005-08-16 International Business Machines Corporation System and method for automatic generation of dynamic search abstracts contain metadata by crawler
US6845396B1 (en) * 2000-02-25 2005-01-18 Navic Systems, Inc. Method and system for content deployment and activation
US6523069B1 (en) * 2000-03-13 2003-02-18 Yahoo! Inc. Transmission of multicast media between networks
US6772209B1 (en) * 2000-04-06 2004-08-03 International Business Machines Corporation Efficient method for rule-based distribution and management of content in a distributed hierarchy of storage devices
US6748447B1 (en) * 2000-04-07 2004-06-08 Network Appliance, Inc. Method and apparatus for scalable distribution of information in a distributed network
US6718361B1 (en) * 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
US6922724B1 (en) * 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
GB0016358D0 (en) * 2000-07-03 2000-08-23 Optaglio Ltd Optical device
US6826564B2 (en) 2000-07-10 2004-11-30 Fastforward Networks Scalable and programmable query distribution and collection in a network of queryable devices
US6772217B1 (en) * 2000-08-23 2004-08-03 International Business Machines Corporation Internet backbone bandwidth enhancement by initiating an additional data stream when individual bandwidth are approximately equal to the backbone limit
US20020040479A1 (en) * 2000-10-04 2002-04-04 Eric Ehrman Method and apparatus for streaming content via a network
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network

Also Published As

Publication number Publication date
DE60111072D1 (de) 2005-06-30
WO2002039323A2 (en) 2002-05-16
US7076553B2 (en) 2006-07-11
WO2002039323A3 (en) 2002-10-10
US20020131423A1 (en) 2002-09-19
ATE296514T1 (de) 2005-06-15
EP1330907A2 (de) 2003-07-30
AU2002236435A1 (en) 2002-05-21
CN100431320C (zh) 2008-11-05
CN1481636A (zh) 2004-03-10
EP1330907B1 (de) 2005-05-25

Similar Documents

Publication Publication Date Title
DE60111072T2 (de) Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten
DE60131900T2 (de) Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten
DE69909839T2 (de) Optimierte Lokalisierung von Netzwerkbetriebsmittel
DE60122691T2 (de) Verfahren und vorrichtung zum verteilten cachen
DE60306084T2 (de) Verfahren zur Rundsendung von Inhalten eines Peer-to-Peer Netzes
DE60103088T2 (de) Verfahren zur Herstellung von Weiterleitungslisten für Netzwerkgruppe
DE69822283T2 (de) Verteilte dauerhafte Speicher für Benutzer- Anbieter- Systeme mit manchmal unterbrochenen Verbindungen
DE60317925T2 (de) Steuerung von netzwerkverkehr in einer peer-to-peer umgebung
DE69722962T2 (de) Strukturiertes datenspeichersystem mit global adressierbarem speicher
DE602005001883T2 (de) Überlagerte Daten, Selbstorganisierte überlagerte Metadaten, und Mehrfachsendung auf Anwendungsebene
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE60216918T2 (de) Verfahren und computersystem zur auswahl eines randservercomputers
DE69635469T2 (de) Synchronisierung zwischen verschiedenen Computeranbieterumgebungen
DE69635047T2 (de) Vernetzte server mit kundenspezifischen diensten zum herunterladen von videos
DE69821050T2 (de) Datenstromdifferenzierungssystem für Endgerätemulator
DE60215002T2 (de) Verfahren und system für effiziente verteilung von netzwerk-ereignisdaten
DE60133648T2 (de) System und verfahren zum führen von laufzeitdaten in einem server-netzwerk
DE69531513T2 (de) Vervielfältigungssystem
DE112017000629T5 (de) Multi-Tenant-Arbeitsspeicherdienst für Architekturen mit Arbeitsspeicher-Pools
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE19747583B4 (de) Kommunikationssystem und Verfahren
DE202017007217U1 (de) Multicluster-Lager
DE112017000337T5 (de) Spezifizieren eines disaggregierten Datenverarbeitungssystems
DE10236796B4 (de) Verfahren und Anordnung zur randomisierten Datenspeicherung in Speichernetzwerken und/oder einem Intranet und/oder dem Internet sowie ein entsprechendes Computerprogramm-Erzeugnis und ein entsprechendes computerlesbares Speichermedium

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806