-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein Verfahren, ein System und ein
Programm zur Verwaltung in verteilten Cachespeichern.
-
BESCHREIBUNG
DES STANDES DER TECHNIK
-
Internetnutzer
fordern oft Daten von einem zentralen Internetserver an. Eine Herausforderung, vor
der Internetinformationsanbieter stehen, besteht darin, als Antwort
auf Benutzeranforderungen rechtzeitig Informationen mit einer hohen Übertragungsrate
zu liefern, während
der Umfang des Internetverkehrs und die Anzahl der Benutzer exponentiell
zunehmen. Eine Lösung
dieser Aufgabe zur Versorgung einer wachsenden Anzahl von Benutzer
besteht darin, Kopien von Daten an verschiedenen Standorten zu speichern,
sodass Datenanforderungen der Benutzer von Spiegelservern an verschiedenen
geografischen Standorten bedient werden, um die diesem Spiegelserver
nächstgelegenen
Benutzer zu versorgen. Andere Lösungen
beinhalten die Verwendung von verteilten Cachespeichern mit Kopien von
Daten, in denen ein Zentralverzeichnis gespeichert ist, mit dessen
Hilfe Daten in den verteilten Cacheservern nachverfolgt werden können. Die
Cacheserver können
an verschiedenen Stellen in einer Organisation angeordnet werden,
um bestimmte Gruppen von Clientbenutzern zu versorgen. Das zentrale Verzeichnis spiegelt
Informationen über
die Objekte innerhalb der Cacheserver wider.
-
Im
Rahmen des Projektes CRISP (Caching and Replication Internet Service
Performance, Leistung der Zwischenspeicherung und Vervielfältigung von
Internetdiensten) wurde ein Internet-Cachespeicherdienst unter Verwendung
von verteilten von Proxy-Cachespeichern
entwickelt, die als Gruppe von autonomen Proxyservern eingerichtet
sind, deren Inhalte unter Verwendung eines Zuordnungsdienstes gemeinsam
genutzt werden.
-
Ousterhout,
J.K. et al. beschreiben in „The Sprite
Network Operation System",
Computer, IEEE Computer Society, Long Beach, CA, USA, US (1. Februar
1998), 21(2), S. 23 bis 36, mehrere Cachespeicher zur Aufrechterhaltung
der Schreibkonsistenz, indem diese Informationen über den
letzten Schreiber jeder Datei speichern und, wenn ein anderer Client als
der letzte Schreiber die Datei öffnet,
den letzten Schreiber veranlassen, alle genutzten Seiten in einen Server-Cachespeicher zu
schreiben. Ferner ist von Anderson et al. aus „Serverless Network File Systems", ACM Transactions
on Computer Systems, ACM, New York, USA (1. Februar 1996), 14(1)
bekannt, dass für
die Objekte in einem Cachespeicher eine Aktualisierungsinformation
gespeichert wird, wobei in verschiedenen Cachespeichern unterschiedliche
Versionen von Objekten vorliegen können. Ferner ist von Keleher,
P. et al. aus „Lazy
Release Consistency for Software Shared Memory", COMPUTER ARCHITECTURE NEWS, 1. Mai
1992, ACM, New York, USA, bekannt, dass eine Änderung durchgeführt wird,
wenn die Aktualisierungsinformation anzeigt, dass die Zieldaten
geändert
worden sind.
-
Ungeachtet
der jetzigen Verwendung von Cachespeichern zur Bedienung der Internetzugriffanforderungen
von Clients besteht in der Technik weiterhin ein Bedarf an weiter
verbesserten Verfahren zur Bedienung der Netzanforderungen von Clients wie
beispielsweise von Internetanforderungen.
-
KURZE ÜBERSICHT ÜBER DIE
BESCHRIEBENEN AUSFÜHRUNGSFORMEN
-
Gemäß einem
ersten Aspekt stellt die vorliegende Erfindung ein Verfahren zur
Speicherung von Daten in einer Vielzahl verteilter Cachespeicher
bereit, wobei das Verfahren folgende Schritte umfasst: Verwalten
einer Kopie eines Objekts in mindestens einem Cachespeicher, wobei
sich in mehreren Cachespeichern verschiedene Versionen des Objekts befinden
und die Objekte änderbare
Dateneinheiten aufweisen können;
Verwalten einer Aktualisierungsinformation für jedes in dem Cachespeicher
verwaltete Objekt in jedem Cachespeicher, wobei die Aktualisierungsinformation
für jedes
Objekt in jedem Cachespeicher das Objekt, den das Objekt beinhaltenden Cachespeicher
und außerdem
anzeigt, ob jede Dateneinheit im Objekt geändert wurde; und Aktualisieren
der Aktualisierungsinformation für
das Zielobjekt und den Zielcachespeicher nach dem Empfangen einer Änderung
für eine
Zieldateneinheit in einem Zielobjekt in einem Zielcachespeicher,
um anzuzeigen, dass die Zieldateneinheit geändert wurde, wobei die Aktualisierungsinformation
für das
Zielobjekt anzeigt, dass die Zieldateneinheit in keinem anderen
Cachespeicher geändert
wurde; wobei die Cachespeicher verschiedene Versionen des Objekts
enthalten können
und die Cachespeicher veraltete Versionen des Objekts an Clients
der Cachespeicher liefern können.
-
Das
Verfahren führt
nach dem Empfangen der Anforderung zur Änderung der Dateneinheit vorzugsweise
ferner folgenden Schritt aus: Einbinden der empfangenen Änderung
in die Dateneinheit im Zielobjekt im Zielcachespeicher, wenn die
Aktualisierungsinformation für
das Zielobjekt und den Zielcachespeicher anzeigt, dass die Zieldateneinheit
geändert
wurde.
-
Vorzugsweise
führt das
Verfahren nach dem Empfangen der Änderung folgende Schritte aus:
Ermitteln, ob ein anderer Cachespeicher das Zielobjekt und einen
aktuellsten Wert der Zieldateneinheit beinhaltet, wenn die Aktualisierungsinformation
für das Zielobjekt
und den Zielcachespeicher anzeigt, dass die Zieldateneinheit nicht
geändert
wurde; Einbinden der Änderung
in die Dateneinheit im Zielobjekt im Zielcachespeicher, wenn kein
anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
beinhaltet; und Aktualisieren der Aktualisierungsinformation für das Zielobjekt
und den Zielcachespeicher, um anzuzeigen, dass die Zieldateneinheit
geändert
wurde, wobei die Aktualisierungsinformation für das Zielobjekt in jedem anderen
Cachespeicher anzeigt, dass die Dateneinheit nicht geändert wurde.
-
Ferner
führt das
Verfahren nach dem Empfangen der Änderung folgende Schritte aus:
Ermitteln, ob ein anderer Cachespeicher das Zielobjekt und einen
aktuellsten Wert der Zieldateneinheit beinhaltet, wenn die Aktualisierungsinformation
für das Zielobjekt
und den Zielcachespeicher anzeigt, dass die Zieldateneinheit nicht
geändert
wurde; und Abrufen des aktuellsten Wertes der Zieldateneinheit von dem
ermittelten Cachespeicher und Aktualisieren des Zielobjektes im Zielcachespeicher
mit dem abgerufenen aktuellsten Wert der Zieldateneinheit, wenn ein
anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
beinhaltet.
-
Ferner
umfasst das Verfahren vorzugsweise die folgenden Schritte: Einbinden
der empfangenen Änderung
in die Dateneinheit im Zielobjekt im Zielcachespeicher nach dem
Aktualisieren des Zielobjekts in dem Zielcachespeicher mit dem aktuellsten
Wert der Zieldateneinheit; und Aktualisieren der Aktualisierungsinformation
für das
Zielobjekt und den Zielcachespeicher, um anzuzeigen, dass die Zieldateneinheit
geändert
wurde, wobei die Aktualisierungsinformation für das Zielobjekt in jedem anderen
Cachespeicher anzeigt, dass die Dateneinheit nicht geändert wurde.
-
Vorzugsweise
führt ein
Zentralserver die Schritte zur Ermittlung, ob noch ein anderer Cachespeicher
das Objekt und den aktuellsten Wert der Zieldateneinheit beinhaltet,
und den Schritt zum Abrufen des aktuellsten Wertes der Zieldateneinheit
von dem anderen Cachespeicher aus, wobei das Verfahren ferner die
folgenden Schritte umfasst: Zurückgeben
des aktuellsten Wertes der Zieldateneinheit durch den Zentralserver,
wobei die Änderung
für die Zieldateneinheit
in den Zielcachespeicher eingebunden wird, nachdem der aktuellste
Wert der Zieldateneinheit in den Zielcachespeicher eingebunden wurde,
und wobei ein Cacheserver mit jedem Cachespeicher verbunden ist
und wobei jeder Cacheserver Aktualisierungsinformationen für jedes
Objekt in dem mindestens einen Cachespeicher verwaltet, mit dem der
Cacheserver verbunden ist, und wobei der Zentralserver die Aktualisierungsinformation
für jedes Objekt
in jedem Cachespeicher verwaltet.
-
Ferner
umfasst das Verfahren vorzugsweise die folgenden Schritte: Verwalten
einer Ungültigkeitsinformation
für jedes
Objekt in jedem Cachespeicher, wobei die Ungültigkeitsinformation für ein Objekt
in einem Cachespeicher anzeigt, ob jede Dateneinheit im Objekt gültig oder
ungültig
ist; Ermitteln desjenigen Cachespeichers aus der Ungültigkeitsinformation,
der einen aktuellsten Wert der Zieldateneinheit für das Zielobjekt
beinhaltet, wenn die Ungültigkeitsinformation
für das
Zielobjekt und den Zielcachespeicher anzeigt, dass die Zieldateneinheit
ungültig
ist; Abrufen des aktuellsten Wertes der Zieldateneinheit vom ermittelten
Cachespeicher und Aktualisieren des Zielobjekts im Zielcachespeicher
durch den aktuellsten Wert der Zieldateneinheit; Einbinden der abgerufenen Änderung
in die Zieldateneinheit im Zielobjekt im Zielcachespeicher nach
der Aktualisierung des Zielobjekts im Zielcachespeicher durch den
aktuellsten Wert der Zieldateneinheit; Aktualisieren der Aktualisierungsinformation
für das
Zielobjekt und den Zielcachespeicher, um anzuzeigen, dass die Zieldateneinheit
geändert
wurde; Aktualisieren der Ungültigkeitsinformation
für jeden
Cachespeicher, der das Zielobjekt beinhaltet, um anzuzeigen, dass
die Zieldateneinheit ungültig
ist; und Aktualisieren der Aktualisierungsinformation für das Zielobjekt
im ermittelten Cachespeicher, um anzuzeigen, dass die Dateneinheit
nicht geändert
wurde.
-
Vorzugsweise
führt der
Zentralserver den Schritt der Ermittlung, ob die Ungültigkeitsinformation für das Zielobjekt
und den Zielcachespeicher anzeigt, dass die Zieldateneinheit ungültig ist,
den Schritt zum Ermitteln des Cachespeichers, der das Zielobjekt und
den aktuellsten Wert der Zieldateneinheit beinhaltet, und den Schritt
zum Abrufen des aktuellsten Wertes der Zieldateneinheit vom ermittelten
Cachespeicher aus, wobei das Verfahren ferner den folgenden Schritt
umfasst: Zurückgeben
des aktuellsten Wertes der Zieldateneinheit durch den Zentralserver, wobei
die Änderung
für die
Zieldateneinheit in den Zielcachespeicher eingebunden wird, nachdem
der aktuellste Wert der Zieldateneinheit am Zielobjekt im Zielcachespeicher
eingebunden wurde.
-
Vorzugsweise
ist jeder Cacheserver mit jedem Cachespeicher verbunden, wobei jeder
Cacheserver eine Aktualisierungsinformation für jedes Objekt in dem mindestens
einen Cachespeicher verwaltet, mit dem der Cacheserver verbunden
ist, und wobei der Zentralserver für jedes Objekt in jedem Cachespeicher
eine Aktualisierungsinformation und eine Ungültigkeitsinformation verwaltet,
wobei das Verfahren ferner noch folgende Schritte umfasst: Ermitteln
durch einen Zielcacheserver, der die Änderung für die Zieldateneinheit empfangen
hat, ob die Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher
anzeigt, dass die Zieldateneinheit geändert wurde; und Aktualisieren
der Dateneinheit im Zielobjekt im Zielcachespeicher durch den Zielcacheserver
nach der Ermittlung, dass durch die Aktualisierungsinformation für das Zielobjekt
und den Zielcachespeicher angezeigt wird, dass die Zieldateneinheit
geändert
wurde.
-
Ferner
umfasst das Verfahren folgende Schritte: Senden einer Anforderung
zum Ändern
der Zieldateneinheit durch den Zielcacheserver an den Zentralserver;
und Zurückgeben
einer Nachricht durch den Zentralserver an den Zielcacheserver,
mit der Änderung
fortzufahren, welche (1) den aktuellsten Wert der Zieldateneinheit
nicht beinhaltet, wenn sich der aktuellste Wert der Zieldateneinheit
in keinem anderen Cachespeicher befand, oder (2) den aktuellsten
Wert der Zieldateneinheit beinhaltet, wenn sich der aktuellste Wert
der Zieldateneinheit in einem anderen Cachespeicher befand; und
Einbinden des empfangenen aktuellsten Wertes der Zieldateneinheit
in die Zielseite im Zielcachespeicher durch den Zielcacheserver
vor dem Einbringen der empfangenen Änderung in den Wert der Zieldateneinheit.
-
Gemäß einem
zweiten Aspekt stellt die vorliegende Erfindung ein System zur Verwaltung
von Daten bereit, das Folgendes umfasst: eine Vielzahl verteilter
Cachespeicher; ein Mittel zum Verwalten einer Kopie eines Objekts
in mindestens einem Cachespeicher, wobei sich in mehreren Cachespeichern verschiedene
Versionen des Objekts befinden und die Objekte änderbare Dateneinheiten befinden
können;
ein Mittel zum Verwalten einer Aktualisierungsinformation für jedes
in dem Cachespeicher verwaltete Objekt in jedem Cachespeicher, wobei
die Aktualisierungsinformation für
jedes Objekt in jedem Cachespeicher das Objekt, den das Objekt beinhaltenden Cachespeicher
und außerdem
anzeigt, ob jede Dateneinheit im Objekt geändert wurde; und ein Mittel zum
Aktualisieren der Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher,
um anzuzeigen, dass die Zieldateneinheit nach dem Empfangen einer Änderung
für eine
Zieldateneinheit in einem Zielobjekt in einem Zielcachespeicher
geändert wurde,
wobei die Aktualisierungsinformation für das Zielobjekt anzeigt, dass
die Zieldateneinheit in keinem anderen Cachespeicher geändert wurde;
wobei die Cachespeicher verschiedene Versionen des Objekts enthalten
können
und die Cachespeicher veraltete Versionen des Objekts an Clients
der Cachespeicher liefern können.
-
Ferner
umfasst das System vorzugsweise ein Mittel zum Einbinden der empfangenen Änderung in
die Dateneinheit im Zielobjekt im Zielcachespeicher nach dem Empfangen
der Anforderung zur Änderung
der Dateneinheit, wenn die Aktualisierungsinformationen für das Zielobjekt
und den Zielcachespeicher anzeigen, dass die Zieldateneinheit geändert wurde.
-
Des
Weiteren umfasst das System vorzugsweise ein Mittel zum Ausführen der Änderung
nach deren Empfang: zum Ermitteln, ob noch ein anderer Cachespeicher
das Zielobjekt und einen aktuellsten Wert der Zieldateneinheit enthält, wenn
die Aktualisierungsinformationen für das Zielobjekt und den Zielcachespeicher
anzeigen, dass die Zieldateneinheit noch nicht geändert wurde;
zum Einbinden der Änderung
der Dateneinheit in das Zielobjekt im Zielcachespeicher, wenn kein
anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
enthält;
und zum Aktualisieren der Aktualisierungsinformationen für das Zielobjekt
und den Zielcachespeicher, um anzuzeigen, dass die Zieldateneinheit
aktualisiert wurde, wobei die Aktualisierungsinformation für das Zielobjekt
in allen anderen Cachespeichern anzeigt, dass die Dateneinheit nicht
geändert
wurde.
-
Des
Weiteren umfasst das System vorzugsweise ein Mittel zum Ausführen der Änderung
nach deren Empfang: zum Ermitteln, ob noch ein anderer Cachespeicher
das Zielobjekt und einen aktuellsten Wert der Zieldateneinheit enthält, wenn
die Aktualisierungsinformationen für das Zielobjekt und den Zielcachespeicher
anzeigen, dass die Zieldateneinheit noch nicht geändert wurde;
und zum Abrufen des aktuellsten Wertes der Zieldateneinheit vom
ermittelten Zielcachespeicher und zum Aktualisieren des Zielobjekts
im Zielcachespeicher durch den abgerufenen aktuellsten Wert der
Zieldateneinheit, wenn ein anderer Zielcachespeicher den aktuellsten
Wert der Zieldateneinheit enthält.
-
Des
Weiteren umfasst das System vorzugsweise ein Mittel zur Verwaltung
einer Ungültigkeitsinformation
für jedes
Objekt in jedem Cachespeicher, wobei die Ungültigkeitsinformation für ein Objekt
in einem Cachespeicher anzeigt, ob jede Dateneinheit im Objekt gültig oder
ungültig
ist.
-
Ferner
umfasst das System vorzugsweise Folgendes: ein Mittel zum Ermitteln
desjenigen Cachespeichers aus der Aktualisierungsinformation, der einen
aktuellsten Wert der Zieldateneinheit für das Zielobjekt enthält, wenn
die Ungültigkeitsinformationen
für das
Zielobjekt und den Zielcachespeicher anzeigen, dass die Zieldateneinheit
ungültig
ist; und ein Mittel zum Abrufen des aktuellsten Wertes der Zieldateneinheit
von dem ermittelten Cachespeicher und zum Aktualisieren des Zielobjekts
im Zielcachespeicher durch den aktuellsten Wert der Zieldateneinheit.
-
Vorzugsweise
realisiert der zentrale Server das Mittel zum Ermitteln, ob die
Ungültigkeitsinformation
für das
Zielobjekt und den Zielcachespeicher anzeigt, dass die Zieldateneinheit
ungültig
ist, zum Ermitteln des das Zielobjekt und den aktuellsten Wert der
Zieldateneinheit enthaltenden Cachespeichers und zum Abrufen des
aktuellsten Wertes der Zieldateneinheit vom ermittelten Cachespeicher
und umfasst ferner Folgendes: ein Mittel zum Zurückgeben des aktuellsten Wertes
der Zieldateneinheit durch den zentralen Server, wobei die Änderung
der Zieldateneinheit in den Zielcachespeicher eingebracht wird, nachdem
der aktuellste Wert der Zieldateneinheit in das Zielobjekt im Zielcachespeicher
eingebracht wurde.
-
Gemäß einem
dritten Aspekt stellt die vorliegende Erfindung ein Computerprogramm
bereit, das einen Computerprogrammcode umfasst, der in ein Computersystem
geladen und darin ausgeführt
wird und so das Computersystem zum Ausführen aller Schritte eines Verfahrens
gemäß dem ersten
Aspekt veranlasst.
-
Vorzugsweise
stellt die vorliegende Erfindung einen Herstellungsartikel zur Verwaltung
von Daten in verteilten Cachespeichern bereit, wobei der Herstellungsartikel
die Ausführung
von Arbeitsschritten bewirkt, die folgende Schritte umfassen: Verwalten
einer Kopie eines Objekts in mindestens einem Cachespeicher, wobei
sich in mehreren Cachespeichern verschiedene Versionen des Objekts
befinden können
und die Objekte änderbare
Dateneinheiten aufweisen können;
verwalten einer Aktualisierungsinformation für jedes in jedem Cachespeicher
verwaltete Objekt, wobei die Aktualisierungsinformation für jedes
Objekt in jedem Cachespeicher das Objekt, den das Objekt enthaltenden
Cachespeicher und außerdem
anzeigt, ob jede Dateneinheit im Objekt geändert wurde; und Aktualisieren
der Aktualisierungsinformationen für das Zielobjekt und den Zielcachespeicher
nach dem Empfangen einer Änderung
für eine
Zieldateneinheit in einem Zielobjekt in einem Zielcachespeicher,
um anzuzeigen, dass die Zieldateneinheit aktualisiert wird, wobei
die Aktualisierungsinformation für das
Zielobjekt in jedem anderen Cachespeicher anzeigt, dass die Zieldateneinheit nicht
geändert
wurde.
-
Der
Herstellungsartikel kann ferner nach dem Empfangen der Anforderung
zur Änderung
der Dateneinheit folgenden Schritt ausführen: Einbinden der empfangenen Änderung
in die Dateneinheit im Zielobjekt im Zielcachespeicher, wenn die
Aktualisierungsinformationen für
das Zielobjekt und den Zielcachespeicher anzeigen, dass die Zieldateneinheit
geändert
wurde.
-
Der
Herstellungsartikel kann nach dem Empfangen der Änderung ferner folgende Schritte
ausführen:
Ermitteln, ob noch ein anderer Cachespeicher das Zielobjekt und
einen aktuellsten Wert der Zieldateneinheit enthält, wenn die Aktualisierungsinformationen
für das
Zielobjekt und den Zielcachespeicher anzeigen, dass die Zieldateneinheit
nicht geändert
wurde; Einbinden der Änderung
der Dateneinheit im Zielobjekt im Zielcachespeicher, wenn kein anderer
Cachespeicher den aktuellsten Wert der Zieldateneinheit enthält; und
Aktualisieren der Aktualisierungsinformationen für das Zielobjekt und den Zielcachespeicher,
um anzuzeigen, dass die Zieldateneinheit geändert wurde, wobei die Aktualisierungsinformation
für das
Zielobjekt in jedem anderen Cachespeicher anzeigt, dass die Dateneinheit
nicht geändert
wurde.
-
Nach
dem Empfangen der Änderung
kann der Herstellungsartikel ferner folgende Schritte ausführen: Ermitteln,
ob noch ein anderer Cachespeicher das Zielobjekt und einen aktuellsten
Wert der Zieldateneinheit enthält,
wenn die Aktualisierungsinformationen für das Zielobjekt und den Zielcachespeicher
anzeigen, dass die Zieldateneinheit nicht geändert wurde; und Abrufen des
aktuellsten Wertes der Zieldateneinheit vom ermittelten Cachespeicher und
Aktualisieren des Zielobjekts im Zielcachespeicher durch den abgerufenen
aktuellsten Wert der Zieldateneinheit, wenn noch ein anderer Cachespeicher
den aktuellsten Wert der Zieldateneinheit enthält.
-
Ferner
kann der Herstellungsartikel folgende Schritte ausführen: Einbinden
der empfangenen Änderung
in die Dateneinheit im Zielobjekt im Zielcachespeicher nach der
Aktualisierung des Zielobjekts im Zielcachespeicher mit dem aktuellsten
Wert der Zieldateneinheit; und Aktualisieren der Aktualisierungsinformationen
für das
Zielobjekt und den Zielcachespeicher, um die Änderung der Zieldateneinheit anzuzeigen,
wobei die Aktualisierungsinformation für das Zielobjekt in jedem anderen
Cachespeicher anzeigt, dass die Dateneinheit nicht geändert wurde.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, bei
dem ein zentraler Server den Schritt zur Ermittlung, ob noch ein
anderer Cachespeicher das Zielobjekt und den aktuellsten Wert der
Zieldateneinheit enthält,
sowie den Schritt des Abrufens des aktuellsten Wertes der Zieldateneinheit und
ferner noch folgende Schritte beinhaltet: Zurückgeben des aktuellsten Wertes
der Zieldateneinheit durch den zentralen Server, wobei die Änderung
der Zieldateneinheit in den Zielcachespeicher eingebunden wird,
nachdem der aktuellste Wert der Zieldateneinheit in den Zielcachespeicher
eingebunden wurde.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, bei
dem ein Cacheserver mit jedem Cachespeicher verbunden ist und bei
dem jeder Cacheserver eine Aktualisierungsinformation für jedes
Objekt in dem mindestens einen Cachespeicher verwaltet, mit dem
der Cachespeicher verbunden ist, wobei der zentrale Server für jedes
Objekt in jedem Cachespeicher eine Aktualisierungsinformation verwaltet.
-
Der
Herstellungsartikel kann ferner Folgendes umfassen: die Verwaltung
einer Ungültigkeitsinformation
für jedes
Objekt im Cachespeicher, wobei die Ungültigkeitsinformation für ein Objekt
in einem Cachespeicher anzeigt, ob jede Dateneinheit im Objekt gültig oder
ungültig
ist.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, das
ferner Folgendes umfasst: Ermitteln aus der Aktualisierungsinformation
des Cachespeichers, welcher einen aktuellsten Wert der Zieldateneinheit
für das
Zielobjekt enthält,
ob die Ungültigkeitsinformationen
für das
Zielobjekt und den Zielcachespeicher anzeigen, dass die Zieldateneinheit
ungültig
ist; und Abrufen des aktuellsten Wertes der Zieldateneinheit aus
dem ermittelten Cachespeicher und Aktualisieren des Zielobjekts
im Zielcachespeicher durch den aktuellsten Wert der Zieldateneinheit.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, das
ferner Folgendes umfasst: Einbinden der empfangenen Änderung
in die Zieldateneinheit im Zielobjekt im Zielcachespeicher nach dem
Aktualisieren des Zielobjekts im Zielcachespeicher durch den aktuellsten
Wert der Zieldateneinheit; Aktualisieren der Aktualisierungsinformation
für das Zielobjekt
und den Zielcachespeicher, um anzuzeigen, dass die Zieldateneinheit
geändert
wurde; und Aktualisieren der Ungültigkeitsinformation
für jeden das
Zielobjekt enthaltenden Cachespeicher, um anzuzeigen, dass die Zieldateneinheit
ungültig
ist.
-
Bei
dem Herstellungsartikel kann es sich ferner um ein Produkt handeln,
das Folgendes umfasst: Aktualisieren der Aktualisierungsinformation
für das Zielobjekt
im ermittelten Cachespeicher, um anzuzeigen, dass die Dateneinheit
nicht geändert
wurde.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, bei
dem ein zentraler Server den Schritt des Ermittelns, ob die Ungültigkeitsinformation
für das
Zielobjekt und den Zielcachespeicher anzeigt, dass die Zieldateneinheit
ungültig
ist, den Schritt des Ermittelns des Cachespeichers, der das Zielobjekt
und den aktuellsten Wert der Zieldateneinheit enthält, und
den Schritt des Abrufens des aktuellsten Wertes der Zieldateneinheit
aus dem ermittelten Cachespeicher ausführt, wobei das Produkt ferner
Folgendes umfasst: Zurückgeben
des aktuellsten Wertes der Zieldateneinheit durch den zentralen
Server, wobei die Änderung
der Zieldateneinheit in den Zielcachespeicher eingebunden wird,
nachdem der aktuellste Wert der Zieldateneinheit in das Zielobjekt im
Zielcachespeicher eingebunden wurde.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, bei
dem ein Cacheserver mit jedem Cachespeicher verbunden ist und jeder
Cacheserver eine Aktualisierungsinformation für jedes Objekt in dem mindestens
einen Cachespeicher verwaltet, mit dem der Cacheserver verbunden
ist, und bei dem der zentrale Server eine Aktualisierungsinformation
und eine Ungültigkeitsinformation
für jedes Objekt
in jedem Cachespeicher verwaltet, wobei das Produkt ferner Folgendes
umfasst: Ermitteln durch einen Zielcacheserver, der die Änderung
der Zieldateneinheit empfangen hat, ob die Aktualisierungsinformation
für das
Zielobjekt und den Zielcachespeicher anzeigt, dass die Zieldateneinheit
geändert
wurde; und Aktualisieren der Dateneinheit im Zielobjekt im Zielcachespeicher
durch den Zielcacheserver nach dem Ermitteln, ob die Aktualisierungsinformation
für das
Zielobjekt und den Zielcachespeicher anzeigt, dass die Zieldateneinheit
geändert
wurde.
-
Bei
dem Herstellungsartikel kann es sich um ein Produkt handeln, das
ferner Folgendes umfasst: Senden einer Anforderung zum Ändern der
Zieldateneinheit durch den Zielcacheserver an den zentralen Server;
und Zurückgeben
einer Nachricht durch den zentralen Server an den Zielcacheserver,
um mit der Änderung
fortzufahren, die (1) nicht den aktuellsten Wert der Zieldateneinheit
enthält,
wenn kein anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
enthielt, oder (2) den aktuellsten Wert der Zieldateneinheit enthält, wenn
ein anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
enthielt; und Einbinden des empfangenen aktuellsten Wertes der Zieldateneinheit
durch den Zielcacheserver in die Zielseite im Zielcachespeicher,
bevor die empfangene Änderung
am Wert der Zieldateneinheit vorgenommen wurde.
-
Es
werden ein Verfahren, ein System und ein Programm zur Verwaltung
von Daten in verteilten Cachespeichern bereitgestellt. Eine Kopie
eines Objekts wird in mindestens einem Cachespeicher aufbewahrt,
wobei sich in mehreren Cachespeichern verschiedene Versionen des
Objekts befinden können
und die Objekte änderbare
Dateneinheiten aufweisen können.
Für jedes
in jedem Cachespeicher aufbewahrte Objekt wird eine Aktualisierungsinformation
verwaltet, wobei die Aktualisierungsinformation für jedes
Objekt in jedem Cachespeicher das Objekt, den das Objekt enthaltenden
Cachespeicher und außerdem
anzeigt, ob jedes Dateneinheit im Objekt geändert wurde. Nach dem Empfangen
einer Änderung
für eine
Zieldateneinheit in einem Zielobjekt in einem Zielcachespeicher
wird die Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher
aktualisiert, um anzuzeigen, dass die Zieldateneinheit geändert wurde,
wobei die Aktualisierungsinformation für das Zielobjekt in jedem anderen
Cachespeicher anzeigt, dass die Zieldateneinheit nicht geändert wurde.
-
Bei
weiteren Ausführungsformen
wird die empfangene Änderung
nach dem Empfangen der Anforderung zum Ändern der Dateneinheit und
wenn die Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher
anzeigt, dass die Zieldateneinheit geändert wurde, in die Dateneinheit
im Zielobjekt im Zielcachespeicher eingebunden.
-
Weiterhin
kann nach dem Empfangen der Änderung
und wenn die Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher
anzeigt, dass die Zieldateneinheit nicht geändert wurde, ermittelt werden,
ob ein anderer Cachespeicher das Zielobjekt und einen aktuellsten
Wert der Zieldateneinheit enthält.
Wenn kein anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
enthält, wird
die Änderung
in die Dateneinheit im Zielobjekt im Zielcachespeicher eingebunden
und die Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher
aktualisiert, um anzuzeigen, dass die Zieldateneinheit geändert wurde,
wobei die Aktualisierungsinformation für das Zielobjekt in allen anderen
Cachespeichern anzeigt, dass die Dateneinheit nicht geändert wurde.
-
Bei
noch anderen Ausführungsformen
kann nach dem Empfangen der Änderung
und wenn die Aktualisierungsinformation für das Zielobjekt und den Zielcachespeicher
anzeigt, dass die Zieldateneinheit nicht geändert wurde, ermittelt werden,
ob ein anderer Cachespeicher das Zielobjekt und einen aktuellsten
Wert der Zieldateneinheit enthält.
Wenn ein anderer Cachespeicher den aktuellsten Wert der Zieldateneinheit
enthält,
wird der aktuellste Wert der Zieldateneinheit vom ermittelten Cachespeicher
abgerufen und das Zielobjekt im Zielcachespeicher mit dem abgerufenen
aktuellsten Wert der Zieldateneinheit aktualisiert.
-
Fernerhin
kann für
jedes Objekt im jedem Cachespeicher eine Ungültigkeitsinformation verwaltet
werden, wobei die Ungültigkeitsinformation
für ein Objekt
in einem Cachespeicher anzeigt, ob jede Dateneinheit im Objekt gültig oder
ungültig
ist.
-
Beschriebene
Ausführungsformen
stellen Verfahren zur Verwaltung der verteilten Speicherung in einer
Vielzahl verteilter Cachespeicher auf eine Weise bereit, die die
Ausführung
jeglicher inkonsistenter Datenoperationen an den in den verteilten
Cachespeichern verwalteten Daten vermeiden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Im
Folgenden wird beispielhaft eine bevorzugte Ausführungsart der vorliegenden
Erfindung unter Bezug auf die beiliegenden Zeichnungen definiert,
wobei:
-
1 eine
verteilte vernetzte Datenverarbeitungsumgebung veranschaulicht,
in der Aspekte der Erfindung realisiert werden;
-
2 und 3 Datenstrukturen
zur Verwaltung von Informationen über Daten veranschaulichen,
die in verschiedenen Cachespeichern in der vernetzten Datenverarbeitungsumgebung
aufbewahrt werden;
-
4 ein
Ablaufdiagramm zur Verarbeitung einer Anforderung nach einem Objekt
oder einer Seite gemäß den Ausführungsformen
der Erfindung ist;
-
5 und 6 ein
Ablaufdiagramm zum Zurückgeben
eines Objektes oder einer Seite an einen Cachespeicher gemäß den Ausführungsformen der
Erfindung zeigt;
-
6 ein
Ablaufdiagramm zur Verarbeitung einer Anforderung zur Änderung
eines Objektes gemäß den Ergebnissen
der Erfindung zeigt;
-
7 eine
Architektur von Datenverarbeitungskomponenten in der vernetzten
Umgebung, zum Beispiel die Cacheserver und die zentralen Server
sowie andere Rechnereinheiten, zeigt.
-
DETAILLIERTE BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSARTEN
-
Die
folgende Beschreibung bezieht sich auf die beiliegenden Zeichnungen
als deren Bestandteil, die verschiedene Ausführungsarten der vorliegenden Erfindung
veranschaulichen. Es ist klar, dass andere Ausführungsarten verwendet und strukturelle
und Funktionsänderungen
vorgenommen werden können,
ohne vom Geltungsbereich der vorliegenden Erfindung abzuweichen.
-
1 veranschaulicht
eine vernetzte Datenverarbeitungsumgebung, in der Aspekte der Erfindung
realisiert werden können.
Eine Vielzahl von Cacheservern 2a, 2b, ... 2n sind
mit einem zentralen Server 4 und dieser wiederum ist mit
dem Internet 6 oder einer anderen Art in der Technik bekanntem Netz
verbunden. Die Cacheserver 2a, 2b, ... 2n und der
zentrale Server können
beliebige Arten in der Technik bekannter Recheneinrichtungen, darunter Server,
Arbeitsplatzrechner, Personal Computer usw., umfassen. Jeder der
Cacheserver 2a, 2b, ... 2n ist mit einem
Cachespeicher 8a, 8b...8n verbunden, die über das
Internet 6 heruntergeladene Webseiten als Speicherseiten 10a, 10b,
... 10n speichern. Jede der Speicherseiten 10a, 10b,
... 10n kann Objekte oder Komponenten enthalten, die hier
als Dateneinheiten 12a, 12b, ... 12n, 14a, 14b,
... 14n und 16a, 16b, ... 16n bezeichnet
werden, in denen die Dateneinheiten geändert werden können. Die
Dateneinheiten können
innerhalb der Speicherseiten 10a, 10b, ... 10n beliebig
fein gegliedert sein und ein Wort, ein Feld, eine Linie, ein Bild,
die gesamte Seite, einen Absatz, ein Objekt usw. enthalten. Obwohl 1 zeigt,
dass jeder Cachespeicher 8a, 8b, ... 8n dieselbe
Anzahl von Seiten beinhaltet, wobei jede Seite dieselbe Anzahl von
Dateneinheiten aufweist, kann jeder Cachespeicher 8a, 8b,
... 8n in den beschriebenen Ausführungsarten eine verschiedene
Anzahl von Speicherseiten und verschiedene Speicherseiten verwalten,
wobei jede Speicherseite eine verschiedene Anzahl von Dateneinheiten
aufweisen kann. Die Speicherseiten in den verschiedenen Cachespeichern 8a, 8b,
... 8n können
Webseiten darstellen, die unter verschiedenen Internetadressen, z.B.
Verweisadressen (URLs – Universal
Resource Locators) von verschiedenen Webservern aus dem Internet
heruntergeladen wurden. Die Speicherseiten können Webseiten in demselben
Dateiformat oder in verschiedenen Dateiformaten speichern. Die Speicherseiten
können
Inhalte in einem beliebigen in der Technik bekannten Mediendateiformat
beinhalten, zum Beispiel HTML (Hypertext Language Markup), XML (Extensible
Markup Language), eine Textdatei, eine Videodatei, eine Bilddatei,
eine Audiodatei usw.
-
Eine
Vielzahl von Clientsystemen 18a, 18b, 18c, 18c, 18e, 18f, 18g enthält Browser 20a, 20b, 20c, 20d, 20e, 20f, 20g,
die Anforderungen nach Webseiten an spezielle Cacheserver 2a, 2b,
... 2n senden, damit die Clientanforderungen durch die
Cachespeicher 8a, 8b, ... 8n bedient
werden. Die Clientsysteme 18a, 18b, ... 18g können eine
beliebige in der Technik bekannte Recheneinrichtung umfassen, zum
Beispiel einen Personal Computer, einen Laptopcomputer, einen Arbeitsplatzrechner,
einen Großrechner,
einen Telefonapparat, einen Taschenrechner, einen Server, ein Netzanschlussgerät usw.,
und der Browser 20a, 20b, ... 20g kann
ein beliebiges Programm umfassen, das Dateien über ein Netz anfordern kann,
zum Beispiel ein Internetbrowserprogramm, einen Videoplayer, einen
Audioplayer usw., und die Daten von solchen Dateien dem Benutzer
in einem beliebigen in der Technik bekannten Format liefern kann.
Bei bestimmten Ausführungsformen kann
der Benutzer in den Browsern 20a, 20b, ... 20g Daten
in den Dateneinheiten in den Speicherseiten in den Cachespeichern 8a, 8b,
... 8n ändern
oder aktualisieren.
-
Der
zentrale Server 4 beinhaltet ein Zentralverzeichnis-Serverprogramm 22,
und die Cacheserver 2a, 2b, ... 2n beinhalten
jeweils ein Cacheserverprogramm 24a, 24b, ... 24n zur
Ausführung
von Arbeitsschritten zur Zwischenspeicherung. Das Zentralverzeichnis-Serverprogramm 22 verwaltet
ein zentrales Verzeichnis 26 zur Verwaltung von Informationen über die
Dateneinheiten, die in jeder Speicherseite in jedem Cachespeicher 8a, 8b,
... 8n aktualisiert werden können. Jedes Cacheserverprogramm 24a, 24b,
... 24n verwaltet auch ein lokales Cachespeicherverzeichnis 28a, 28b,
... 28n, deren Einträge Informationen über die
Dateneinheiten verwalten, die in den Speicherseiten 10a, 10b,
... 10n im lokalen Cachespeicher 8a, 8b,
... 8n aktualisiert werden können. Die Einträge in den
lokalen Cachespeicherverzeichnissen 28a, 28b,
... 28n entsprechen den Einträgen für dieselben Speicherseiten
im zentralen Verzeichnis 26.
-
2 veranschaulicht
das Format 50 der im zentralen Verzeichnis 26 und
in den lokalen Cachespeicherverzeichnissen 28a, 28b,
... 28n verwalteten Einträge. Jeder Eintrag 50 beinhaltet
ein oder mehrere Tupel von Informationen für jedes lokale Cachespeicherverzeichnis 28a, 28b,
... 28n, das eine Kopie der dem Eintrag im lokalen Cachespeicher 8a, 8b,
... 8n entsprechenden Seite verwaltet. Jeder Eintrag 50 entspricht
der Adresse einer bestimmten Speicherseite, wobei die verschiedenen
Cachespeicher 8a, 8b, ... 8n eine Kopie
der Seite aufbewahren können. Jedes
Tupel von Informationen für jeden
Cachespeicher 8a, 8b, ... 8n, in dem
sich eine Kopie der Seite befindet, beinhaltet:
Cacheserver-ID 52a...52n:
Diese ID kennzeichnet den speziellen Cacheserver 2a, 2b,
... 2n, der die durch den Eintrag dargestellte Speicherseite
beinhaltet. Diese Information kann sich wahlweise in den Einträgen in den
lokalen Cachespeicherverzeichnissen 28a, 28b,
... 28n befinden.
-
Aktualisierungswort 54a...54n:
Jedes Wort weist eine Vielzahl von Bits auf, wobei für jede in
der Seite durch das Aktualisierungswort dargestellte aktualisierbare
Dateneinheit ein Bit steht. Jedes Bit wird auf „Ein" gesetzt, wenn die Dateneinheit in der
Seite im Cachespeicher 8a, 8b, ... 8n geändert wurde,
und auf „Aus" gesetzt, wenn die
entsprechende Dateneinheit nicht geändert wurde.
-
Ungültigkeitswort 56a...56n:
Ein aus Bits bestehendes Wort, bei dem jeder Speicherseite 10a, 10b,
... 10n in den Cachespeichern 8a, 8b,
... 8n ein Bit entspricht. Ein Bit wird auf „Ein" gesetzt, um anzuzeigen,
dass die Daten in der durch ein solches Bit dargestellten Dateneinheit
in der Speicherseite im lokalen Cachespeicher 8a, 8b,
... 8n ungültig
oder aktualisiert sind, und auf „Aus" gesetzt, um anzuzeigen, dass keine
Dateneinheit in der Speicherseite im lokalen Cachespeicher 8a, 8b,
... 8n aktualisiert oder ungültig ist. Dieses Wort kann
sich wahlweise in den Einträgen
in den lokalen Cachespeicherverzeichnissen 28a, 28b,
... 28n befinden.
-
3 und 5 veranschaulichen
den Ablaufplan in den Cacheserverprogrammen 24a, 24b, ... 24n,
und 4 und 6 veranschaulichen den Ablaufplan
im Zentralverzeichnis-Serverprogramm 22 zur
Regelung des Zugriffs auf Speicherseiten und die darin enthaltenen
Dateneinheiten zur Sicherstellung der Datenkonsistenz in der Weise,
dass die Clients 18a, 18b, ... 18g schnell
auf die Daten zugreifen können.
-
3 und 4 veranschaulichen
die durch die Cacheserverprogramme 24a, 24b, ... 24n bzw. das
Zentralverzeichnis-Serverprogramm 22 ausgeführten Arbeitsschritte,
um einem Clientbrowser 20a, 20b, ... 20n den
Lesezugriff auf eine Speicherseite als Teil einer angeforderten
Webseite zu ermöglichen.
Der Prozess beginnt in 3 mit Schritt 100, wo
das Cacheserverprogramm 24a, 24b, ... 24n von einem
der Browser 20a, 20b, ... 20n eine Anforderung
für eine
Speicherseite empfängt.
Bei bestimmten Ausführungsformen
richtet jeder Client 18a, 18b, ... 18g seine
gesamten Seitenanforderungen an einen bestimmten Cacheserver 2a, 2b,
... 2n. Alternativ kann jeder Client Anforderungen an einen
von vielen speziellen alternativen Cacheservern richten. Als Reaktion
auf den Empfang der Anforderung gibt das Cacheserverprogramm 24a, 24b,
... 24n, wenn sich (in Schritt 102) die angeforderte
Seite in dem mit dem empfangenden Cacheserver 2a, 2b,
... 2n verbundenen Cachespeicher 8a, 8b,
... 8n befindet, die angeforderte Speicherseite in Schritt 104 aus
dem Cachespeicher 8a, 8b, ... 8n zurück. Bei
solchen Ausführungsformen
ermöglicht
das Cacheserverprogramm 24a, 24b, ... 24n zwar
den sofortigen Zugriff vom Cachespeicher 8a, 8b,
... 8n auf eine Seite, jedoch muss die zurückgegebene
Seite für
bestimmte Dateneinheiten nicht unbedingt die aktuellste Kopie von Werten
haben. Wenn sich die angeforderte Seite nicht im angeschlossenen
Cachespeicher 8a, 8b, ... 8n befindet,
sendet das Cacheserverprogramm 24a, 24b, ... 24n in
Schritt 106 eine Anforderung nach der angeforderten Seite
an den zentralen Server 4, und der Prozess wird in 4 mit
Schritt 120 fortgesetzt, wo das Zentralverzeichnis-Serverprogramm 22 die Anforderung
verarbeitet.
-
Als
Reaktion auf den Empfang einer Anforderung nach einer Speicherseite
in Schritt 120 von 4 ermittelt
das Zentralverzeichnis-Serverprogramm 22 in Schritt 122,
ob das Zentralverzeichnis 26 einen Eintrag für die angeforderte
Seite enthält. Wenn
dies nicht der Fall ist, lädt
das Zentralverzeichnis-Serverprogramm 22 in Schritt 124 die
angeforderte Seite über
das Internet 6 herunter. Für die abgerufene Seite wird
in Schritt 126 ein Eintrag 50 im Zentralverzeichnis 26 erzeugt,
wobei der erzeugte Eintrag 50 im Feld Cacheserver-ID 52a...52n den
Cacheserver 2a, 2b, ... 2n kennzeichnet,
der die Anforderung ausgelöst
hat, und ein Aktualisierungswort 54a...54n sowie
ein Ungültigkeitswort 56a...56n einfügt, bei
denen alle Bits der Dateneinheit (2 und 3)
zu Anfang auf „Aus" gesetzt sind. Dann
werden in Schritt 128 die abgerufene Seite und der erzeugte
Eintrag 50 an den anfordernden Cacheserver 2a, 2b,
... 2n zurückgegeben,
um sie im lokalen Cachespeicher 8a, 8b, ... 8n zu
puffern und den neu empfangenen Eintrag im lokalen Cachespeicherverzeichnis 28a, 28b,
... 28n zu verwalten.
-
Wenn
sich in Schritt 122 ein Eintrag für die angeforderte Seite im
Zentralverzeichnis 26 befindet und wenn es in Schritt 130 keinen
Eintrag gibt, bei dessen Aktualisierungswort 54a...54n für die angeforderte
Seite die Bits 54a...54n der Dateneinheit (2)
auf „Ein" gesetzt sind und
so anzeigen, dass sich in keinem anderen Cacheserver 2a, 2b,
... 2n aktualisierte Dateneinheiten 12a, 12b,
... 12n, 14a, 14b, ... 14n und 16a, 16b,
... 16n für
die angeforderte Seite befinden, greift das Zentralverzeichnis-Serverprogramm 22 in
Schritt 132 auf die angeforderte Seite von einem Cacheserver 2a, 2b,
... 2n zu, der im Feld Cacheserver-ID 52a...52n in
einem Tupel von Informationen im Eintrag 50 für die angeforderte
Seite bezeichnet wird. Da kein Cacheserver 2a, 2b,
... 2n Dateneinheiten mit aktualisierten Daten verwaltet,
kann in jedem im Eintrag 50 bezeichneten Cachespeicher 8a, 8b,
... 8n auf die Seite zugegriffen werden. Das Zentralverzeichnis-Serverprogramm 22 erzeugt
in Schritt 134 ein Tupel von Informationen, die zum Eintrag 50 für die angeforderte
Seite hinzugefügt
werden, wobei das erzeugte Tupel von Informationen im Feld 52a...54n den
anfordernden Cacheserver 2a, 2b, ... 2n kennzeichnet
und ein Aktualisierungswort 54a...54n sowie ein
Ungültigkeitswort 56a...56n eingefügt werden,
bei denen alle Bits 54a...54n und 56a...56n der
Dateneinheit auf „Aus" gesetzt sind. Die
abgerufene Seite und das erzeugte Tupel von Informationen werden
in Schritt 136 an den anfordernden Cacheserver 136 zurückgegeben.
Bei alternativen Ausführungsformen
ist zu beachten, dass anstelle des Tupels von Informationen auch
nur das erzeugte Aktualisierungswort 54a...54n gesendet
werden kann.
-
Wenn
(in Schritt 130) bei einem Aktualisierungswort 54a...54n in
einem Tupel von Informationen für
einen anderen Cacheserver 2a, 2b, ... 2n im Eintrag 50 für die angeforderte
Seite ein Bit der Dateneinheit auf „Ein" gesetzt ist, ermittelt das Zentralverzeichnis-Serverprogramm 22 (in
Schritt 138) das Tupel von Informationen im Eintrag 50 für die angeforderte
Seite, bei dessen Aktualisierungswort 54a...54n die
meisten Bits der Dateneinheit auf „Aus" gesetzt sind. Dann ruft das Zentralverzeichnis-Serverprogramm 22 (in
Schritt 140) die angeforderte Seite von dem Cacheserver 2a, 2b...2n ab,
der im Feld 52a...52n des ermittelten Tupels von
Informationen mit der größten Anzahl
der aktuellsten Werte der Dateneinheit angegeben ist. Für jedes
andere Tupel im Eintrag 50 für die Seite mit einem Aktualisierungswort 54a...54n dessen
Bits der Dateneinheit auf „Ein" gesetzt sind, ruft
das Zentralverzeichnis-Serverprogramm 22 dann (in Schritt 142)
die entsprechenden Dateneinheiten, die den auf „Ein" gesetzten Bits entsprechen, von dem
im Feld 52a...52n des Tupels angegebenen Cacheserver
ab und fügt
die abgerufenen Daten in die entsprechenden Dateneinheiten in der
abgerufenen Seite ein. Für
den anfordernden Cacheserver 2a, 2b...2n wird
(in Schritt 144) ein Tupel für den Eintrag für die abgerufene
Seite erzeugt, welches im Feld 52a...52n den anfordernden
Cacheserver bezeichnet und ein Aktualisierungswort 54a...54n und
ein Ungültigkeitswort 56a...56n beinhaltet,
dessen Bits der Dateneinheit sämtlich
auf „Aus" gesetzt sind. Dann
geht der Prozess weiter zu Schritt 136, um die abgerufene
Seite und das erzeugte Tupel (oder dessen zutreffende Teile) an
den anfordernden Cacheserver 2a, 2b, ... 2n zurückzugeben.
-
Gemäß dem Ablaufplan
von 3 und 4 wird die Anforderung eines
Clientbrowser nach einer Seite zuerst vom lokalen Cachespeicher 8a, 8b, ... 8n und
dann, wenn sich im lokalen Cachespeicher keine Kopie befindet, von
einem fernen Cachespeicher bedient. Wenn sich im lokalen oder im
fernen Cachespeicher keine Kopie der angeforderten Seite befindet,
wird die Seite vom Internet 6 heruntergeladen. Da die Latenzzeiten
für das
Herunterladen aus dem Internet am längsten sind, wird die Zugriffsgeschwindigkeit
dadurch optimiert, dass die Seite vorzugsweise vom lokalen Cachespeicher,
dann vom fernen Cachespeicher und zuletzt vom Internet heruntergeladen
wird. Wenn eine zum ersten Mal in fernen Cachespeichern gespeicherte
Seite empfangen wird, beinhaltet die zurückgegebene Seite ferner bei bestimmten
Ausführungsformen
die aktuellsten Werte der Dateneinheiten, die in allen fernen Cachespeichern
aufbewahrt werden.
-
5 veranschaulicht
den in den Cacheserverprogrammen 24a, 24b, ... 24n ausgeführten Ablaufplan
zur Abwicklung einer Anforderung durch einen Clientbrowser 20a, 20b,
... 20g zur Änderung
einer Dateneinheit, die in einer Zielseite als die Zieldateneinheit
bezeichnet wird. Der Prozess beginnt in Schritt 200, in
welchem das Cacheserverprogramm 24a, 24b, ... 24n eine
Anforderung zur Änderung
einer Dateneinheit in einer Seite von einem Client 18a, 18b,
... 18g von einem Client 18a, 18b, ... 18g empfängt, der
zum Senden von Seitenanforderungen an den die Anforderung empfangenden
Cacheserver 2a, 2b, ... 2n vorgesehen
ist. Wenn (in Schritt 202) das Bit der Dateneinheit im
Aktualisierungswort im lokalen Cachespeicherverzeichnis 28a...28n für die der
Zieldateneinheit entsprechenden angeforderte Seite auf „Ein" gesetzt ist, was
bedeutet, dass der Cacheserver 2a, 2b, ... 2n,
der die Anforderung empfängt
und als empfangender Cacheserver bezeichnet wird, den aktuellsten
wert für
die Zieldateneinheit 12a, 12b, ... 12n, 14a, 14b,
... 14n, 16a, 16b, ... 16n enthält, aktualisiert
das Programm 24a, 24b, ... 24n des empfangenden
Cacheservers in Schritt 204 die Dateneinheit in der Zielseite
in dem mit dem empfangenden Cacheserver 2a, 2b,
... 2n verbundenen Cachespeicher 8a, 8b,
... 8n durch die empfangene geänderte Dateneinheit. Ansonsten
sendet das Programm 24a, 24b, ... 24n des
empfangenden Cacheservers (in Schritt 202), wenn das der Zieldateneinheit
entsprechende Bit im Aktualisierungswort 54a...54n im
lokalen Cachespeicherverzeichnis 28a, 28b, ... 28n im
empfangenden Cacheserver 2a, 2b, ... 2n nicht
auf „Ein" gesetzt ist, eine
Anforderung zur Änderung
der Zieldateneinheit in der Zielseite an den zentralen Server 4.
-
6 veranschaulicht
Arbeitsschritte, die durch das Zentralverzeichnis-Serverprogramm 22 als
Reaktion auf eine Anforderung vom empfangenden Cacheserver 2a, 2b,
... 2n zur Änderung
der Zieldateneinheit in der Zielseite (in Schritt 206 in 5) ausgeführt werden.
Als Reaktion auf den Empfang einer solchen Anforderung (in Schritt 210)
ermittelt das Zentralverzeichnis-Serverprogramm 22 (in
Schritt 214), ob das Bit der Dateneinheit, das der Zieldateneinheit
im Ungültigkeitswort 56a...56n in
dem (im Feld 52a...52n angegebenen) Tupel für den empfangenden
Cacheserver 2a, 2b, ... 2n im Eintrag 50 für die angeforderte
Seite entspricht, auf „Ein" gesetzt ist, was „ungültig" bedeutet. Wenn dies
der Fall ist, hat ein anderer Cacheserver 2a, 2b,
... 2n die Zieldateneinheit geändert. In einem solchen Fall
ermittelt das Zentralverzeichnis-Serverprogramm 22 (in Schritt 216)
das Tupel im Eintrag für
den anderen Cacheserver 2a, 2b, ... 2n,
bei dem das Bit 56 der Zieldateneinheit (1)
in einem Aktualisierungswort 56 auf „Ein" gesetzt ist, d.h., bei dem der Eintrag
für den Cacheserver
die aktuellsten Daten für
betreffende Dateneinheit enthält.
Dann ruft das Zentralverzeichnis-Serverprogramm 22 (in
Schritt 218) den aktuellsten Wert der Zieldateneinheit
von dem anderen Cacheserver 2a, 2b, ... 2n ab,
der im ermittelten Tupel angegeben ist, und gibt (in Schritt 220)
den abgerufenen aktuellsten Wert der Dateneinheit an den empfangenden
Cacheserver zurück.
In dem ermittelten Tupel ist das Bit der Zieldateneinheit im Aktualisierungswort 54a...54n für den anderen
Cacheserver (in Schritt 222) auf „Aus" gesetzt, weil der empfangende Cacheserver
nach der Aktualisierung die Zieldateneinheit aktualisiert und über den
aktuellsten Wert der Zieldateneinheit verfügt.
-
Nach
der Lieferung des aktuellsten Wertes der Dateneinheit (von Schritt 222)
an den empfangenden Cacheserver oder wenn der empfangende Cacheserver
nicht den aktuellsten Wert der Zieldateneinheit (aus dem NEIN-Zweig
von Schritt 214) enthält,
geht der Prozess weiter zu Schritt 224 und 226, wo
das Zentralverzeichnis-Serverprogramm 22 (in Schritt 224)
im Eintrag für
den anfordernden Cacheserver die der Zieldateneinheit im Aktualisierungswort 54a...54n entsprechenden
Bits der Dateneinheit auf „Ein" und die Bits im
Ungültigkeitswort 56a...56n im
Eintrag für
den anfordernden Cacheserver auf „Aus" setzt. Das Zentralverzeichnis-Serverprogramm 22 setzt
(in Schritt 226) auch das Bit der Dateneinheit in den Ungültigkeitswörtern 56a...56n in
den Tupeln im Eintrag 50 für die Zielseite für alle anderen
Cacheserver auf „Ein" und zeigt damit
an, dass die anderen Cacheserver ungültige Daten für die Zieldateneinheit in
ihrer Kopie der Zielseite enthalten. Dann gibt das Zentralverzeichnis-Serverprogramm 22 (in
Schritt 228) eine Nachricht an den empfangenden Cacheserver
zurück,
um mit der Änderung
der Zieldateneinheit fortzufahren. Die Nachricht kann auch eine
explizite oder implizite Nachricht an den anfordernden Cacheserver
enthalten, die betreffenden Bits in ihren Gültigkeits- und Ungültigkeitswörtern für die empfangene
Seite zu aktualisieren, um anzuzeigen, dass der anfordernde Cacheserver über die
neueste Aktualisierung der gerade in der Seite aktualisierten Dateneinheiten
verfügt.
Bei alternativen Ausführungsformen
kann das Zentralverzeichnis-Serverprogramm 22 das geänderte Gültigkeits-
und Ungültigkeitswort zurückgeben.
-
Nach
dem Empfang (in Schritt 250 in 5) der geänderten
Zieldateneinheit vom Zentralverzeichnis-Serverprogramm 22 aktualisiert
das Cacheserverprogramm 24a, 24b, ... 24n (in
Schritt 252) die Zieldateneinheit in der Zielseite in ihrem
Cachespeicher 8a, 8b, ... 8n durch die
empfangene geänderte Dateneinheit.
Nach dem Empfang der Nachricht zum Ändern der Zieldateneinheit
(in Schritt 254) fügt
der anfordernde Cacheserver 24a, 24b, ... 24n (in
Schritt 256) die vom Clientbrowser 20a, 20b,
... 20g empfangene geänderte
Dateneinheit in die Seite 10a, 10b, ... 10n im
Cachespeicher 8a, 8b, ... 8n ein.
-
Die
beschriebenen Ausführungsformen
stellen ein Protokoll für
ein verteiltes Cacheserversystem bereit, das die Durchführung von
Aktualisierungen durch einen Clientbrowser in einem Cacheserver
bei gleichzeitiger Aufrechterhaltung der Datenkonsistenz zwischen
allen Cacheservern ermöglicht.
Daraus ergibt sich eine weniger strikte (abgeschwächte) Konsistenz
der Datenaktualisierung, da bei Aktualisierung der Daten in einem
Browser im Zentralverzeichnis für
diejenigen fernen Cacheserver, die eine Kopie der Seite mit der
zu ändernden
Dateneinheit enthalten, nur ein Datenungültigkeitsbit gesetzt wird.
In den fernen Cacheservern sind keine Informationen über Aktualisierungen
enthalten, und die Browser in den fernen Cacheservern und Clients
können
weiterhin Seiten von lokalen Cachespeichern lesen, die nicht die
aktuellsten Werte der Dateneinheiten enthalten. Wenn jedoch ein
Browser, der Daten von einem Cacheserver empfängt, welcher nicht die aktuellsten Daten
enthält,
die Dateneinheit zu ändern
versucht, empfängt
der Browser die aktuellsten Daten, bevor die Änderung durchgeführt wird.
-
WEITERE EINZELHEITEN
ZU DEN AUSFÜHRUNGSFORMEN
-
Die
beschriebenen Verfahren zur Verwaltung eines verteilten Cacheserversystems
kann in Form eines Verfahrens, einer Vorrichtung oder eines Herstellungsartikels
unter Verwendung von üblichen
Programmier- und/oder Konstruktionsverfahren zur Herstellung von
Software, Firmware, Hardware oder einer beliebigen Kombination realisiert
werden. Der hier verwendete Begriff „Herstellungsartikel" betrifft einen Code
oder eine in Hardware ausgeführte Schaltlogik
(z.B. einen integrierten Schaltkreis-Chip, eine programmierbare
Gate-Anordnung (PGA), einen anwendungsspezifischen integrierten
Schaltkreis (ASIC) usw.) oder ein computerlesbares Medium wie beispielsweise
ein Magnetspeichermedium (z.B. Festplattenlaufwerke, Disketten,
Magnetbänder usw.),
optische Speicher (CD-ROMs, optische Speicherplatten usw.), flüchtige und
nichtflüchtige Speicherbauelemente
(z.B. EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Firmware, programmierbare
Logik usw.). Ein Prozessor greift auf den Code im computerlesbaren
Medium zu und führt ihn
aus. Auf den Code, in dem bevorzugte Ausführungsarten realisiert werden,
kann ferner über
ein Übertragungsmedium
oder über
ein Netz von einem Dateiserver zugegriffen werden. In solchen Fällen kann
der Herstellungsartikel, in dem der Code realisiert wird, ein Übertragungsmedium
umfassen, zum Beispiel eine Netzübertragungsleitung,
ein drahtloses Übertragungsmedium,
sich im Raum ausbreitende Signale, Funkwellen, Infrarotsignale usw.
Somit kann der „Herstellungsartikel" das Medium umfassen,
in dem der Code verkörpert
wird. Darüber
hinaus kann der „Herstellungsartikel" eine Kombination von
Hardware- und Softwarekomponenten umfassen, in denen der Code verkörpert, verarbeitet
und ausgeführt
wird. Dem Fachmann ist natürlich
klar, dass an dieser Anordnung zahlreiche Änderungen vorgenommen werden
können,
ohne vom Geltungsbereich der vorliegenden Erfindung abzuweichen, und
dass der Herstellungsartikel ein beliebiges in der Technik bekanntes
Informationsträgermedium
umfassen kann.
-
Bei
beschriebenen Ausführungsformen
werden für
jedes Tupel von Informationen in jedem Eintrag sowohl das Ungültigkeitswort
als auch das Aktualisierungswort im zentralen Server verwaltet.
Bei alternativen Ausführungsformen
wird nur das Aktualisierungswort verwaltet. Bei solchen Ausführungsformen
müsste
der Zentralserver zur Ermittlung, ob der anfordernde Cacheserver
veraltete Daten enthält,
die Aktualisierungswörter
in Tupeln für
die anderen Cacheserver verarbeiten, um festzustellen, ob einer
der anderen Cacheserver die Dateneinheit geändert hat.
-
Bei
den beschriebenen Ausführungsformen haben
die im Cachespeicher verwalteten Seiten Speicherseiten umfasst,
wobei mehrere Speicherseiten die Daten für eine einzelne Webseite speichern, die über das
Internet von einer URL abgerufen wurde. Alternativ können die
Speicherseiten im Cachespeicher Webseiten umfassen.
-
Bei
beschriebenen Ausführungsformen
haben ein zentraler Server und ein Zentralverzeichnis-Serverprogramm
Aktualisierungsoperationen durchgeführt, um sicherzustellen, dass
der anfordernde Cacheserver vor dem Durchführen einer Aktualisierung die
aktuellsten Daten empfangen hat. Bei alternativen Ausführungsformen
können
die beschriebenen Arbeitsschritte, die durch den zentralen Server
und das Zentralverzeichnis-Serverprogramm durchgeführt werden,
auf die Cacheserver verteilt werden, um ein verteiltes Zentralverzeichnis
zu erstellen. Bei solchen Ausführungsformen,
bei denen die durch das Zentralverzeichnis-Serverprogramm durchgeführten Arbeitsschritte
verteilt sind, sind die in den Aktualisierungswörtern und Ungültigkeitswörtern enthaltenen
Informationen auf die Cacheserver verteilt, damit die Cacheserver
verteilte Speicherverwaltungsoperationen durchführen können.
-
Bei
beschriebenen Ausführungsformen
enthielt jeder Cacheserver eine Kopie des Aktualisierungswortes
für jede
im Cachespeicher 8a, 8b, ... 8n für den Cacheserver 2a, 2b,
... 2n enthaltene Seite. Alternativ können die Cacheserver auch kein
Aktualisierungswort enthalten und alle Konsistenzoperationen über den
zentralen Server abwickeln.
-
Die
beschriebenen Informationen im Aktualisierungs- und Ungültigkeitswort
können
in Form einer oder mehrerer in der Technik bekannter Datenstrukturen
realisiert werden, um die Aktualisierungs- und die Ungültigkeitsinformation
zu erzeugen. Zum Beispiel können
die Aktualisierungs- und die Ungültigkeitsinformation
in einem oder mehreren Datenobjekten, Datensätzen in einer Datenbank, Einträgen in einer
Tabelle, separaten Objekten usw. realisiert werden.
-
Die
in den Cachespeichern enthaltenen Seiten können Datenobjekte beliebigen
Typs umfassen, einschließlich
beliebiger Typen von Multimediaobjekten, in die ein Client oder
Benutzer Daten zur Änderung
des Inhalts des Objekts eingeben oder hinzufügen kann.
-
Bei
den beschriebenen Ausführungsformen ist
mit jedem Cachespeicher ein separater Cacheserver verbunden. Der
Cachespeicher und der Cacheserver können sich innerhalb derselben
abgeschlossenen Einheit oder in separaten Einheiten befinden. Bei
alternativen Ausführungsformen
kann ein Cacheserver mit mehreren Cachespeichern verbunden sein und
Aktualisierungsinformationen für
die mehreren damit verbunden Cachespeicher enthalten.
-
Bei
beschriebenen Ausführungsformen
hat der zentrale Server Seiten über
das Internet heruntergeladen. Alternativ kann der zentrale Server
Seiten von einem beliebigen Netz herunterladen, zum Beispiel von
einem Intranet, einem lokalen Netz (LAN), einem Weitverkehrsnetz
(WAN), einem Netz für
den Speicherbereich (SAN) usw. Ferner können die Cacheserver zum Herunterladen
von Seiten direkt auf das Internet zugreifen.
-
Der
in 4 bis 6 dargestellte Ablaufplan zeigt
bestimmte Ereignisse, in ein einer bestimmten Reihenfolge ablaufen.
Bei alternativen Ausführungsformen
können
bestimmte Arbeitsschritte in einer anderen Reihenfolge ausgeführt, geändert oder ausgelassen
werden. Darüber
hinaus können
in den oben beschriebenen Ablaufplan Schritte eingefügt werden,
ohne von den beschriebenen Ausführungsformen
abzuweichen. Ferner können
hier beschriebene Arbeitsschritte nacheinander erfolgen oder bestimmte
Arbeitsschritte können
parallel ausgeführt werden.
Weiterhin können
Arbeitsschritte durch eine einzige Verarbeitungseinheit oder durch
verteilte Verarbeitungseinheiten ausgeführt werden.
-
7 veranschaulicht
eine Ausführungsform
einer Computerarchitektur 300 der Netzkomponenten, zum
Beispiel den in 1 gezeigten zentralen Server
und die Cacheserver. Die Architektur 300 kann einen Prozessor 302 (z.B.
einen Mikroprozessor), einen Speicher 304 (z.B. eine flüchtige Speichereinheit)
und einen Speicher 306 (z.B. einen nichtflüchtigen
Speicher wie beispielsweise Magnetplattenlaufwerke, optische Plattenlaufwerk,
ein Magnetbandlaufwerk usw.) enthalten. Der Speicher 306 kann
eine interne Speichereinheit oder einen externen oder über ein
Netz erreichbaren Speicher umfassen. Programme im Speicher 306 werden
in einer in der Technik bekannten Weise in den Speicher 304 geladen
und durch den Prozessor 302 ausgeführt. Ferner beinhaltet die
Architektur eine Netzwerkkarte 308, um die Datenverbindung
zu einem Netz zu ermöglichen.
Zur Eingabe von Daten durch den Benutzer in den Prozessor 302 wird
eine Eingabevorrichtung 310 verwendet, z.B. eine Tastatur,
eine Maus, eine Stift, ein Mikrofon, ein berührungsempfindlicher Bildschirm
oder ein anderer in der Technik bekannter Aktivierungs- oder Eingabemechanismus.
Eine Ausgabevorrichtung 312, zum Beispiel ein Monitor,
ein Drucker, ein Speicher usw., kann die vom Prozessor 302 oder
einer anderen Komponente übertragenen Daten
ausgeben.