-
Die
vorliegende Erfindung betrifft eine verteilte Verarbeitung, insbesondere,
aber nicht ausschließlich,
eine verteilte Verarbeitung zur Steuerung eines Telekommunikationsnetzwerks.
Insbesondere betrifft diese Erfindung die Steuerungssysteme, die auf
den verteilten Prozessoren implementiert sind, die vorzugsweise
(aber nicht notwendigerweise) Prozesse sind, die auf eine objektorientierte
Weise implementiert sind.
-
Telekommunikationsnetzwerke
müssen
in zunehmendem Maße
einen Informationsfluss mit hoher Bandbreite und geringen Verzögerungen
unterstützen.
Die erforderliche Bandbreite nimmt schnell zu von Kilobits pro Sekunde
zu Megabits pro Sekunde und sogar für einige Anwendungen Gigabits
pro Sekunde (insbesondere zum Beispiel für Video auf Verlangen (video
an demand); animierte gemeinsam benutzte Simulationen und verteilte
Berechnung).
-
Um „intelligente
Netzwerk"-Einrichtungen vorzusehen,
wie Anrufumleitung zu bestimmten Nummern, laufen Computerprogramme
auf einer Anzahl von Hostcomputern (bis zu 100 zum Beispiel), die
mit Vermittlungsstellen verbunden sind. Die Weise, wie Dienste für bestimmte
Kunden vorgesehen werden sollen (zum Beispiel eine bestimmte Nummer,
an die Anrufe für
einen Kunden weitergeleitet werden sollen), hängt von Daten ab, die bezüglich dieses
Kunden auf den Hostcomputern gespeichert sind. Somit kann es viele
Millionen von Teilnehmeraufzeichnungen auf zehn oder hunderten von
Hostcomputern geben.
-
In „Twenty-twenty
vision – software
architecture for intelligence in the 21 st century", P. A. Martin, BT
Technology Journal, Vol. 13, Nr. 2.
-
April
1995, hat der jetzige Erfinder die Verwendung von objektorientierten
Techniken vorgeschlagen, um die erforderliche verteilte Verarbeitung zu
implementieren.
-
Eine
Beschreibung der objektorientierten Technologie ist zu finden zum
Beispiel in BT Technology Journal Vol. 11, Nr. 3, Juli 1993, „Object
oriented technology",
herausgegeben von E. L. Cusack und E. S. Cordingley. Obgleich die
Bezeichnung nicht immer mit Präzision
verwendet wird, bezieht sich ein objektorientiertes Berechnen hier
auf die berechnende Technik, in der Daten in „eingekapselter" Form gespeichert
werden, in der die Daten, statt direkt durch ein aufrufendes Programm
oder Routine zugänglich zu
sein, nur durch einen begrenzten Teil eines Programms zugänglich sind,
das die Daten lesen schreiben und bearbeiten kann. Ein Datensatz
und sein zugehöriger
Computercode werden als ein „Objekt" bezeichnet. Kommunikation
an das und von dem Objekt erfolgt im Allgemeinen durch „Nachrichten-Übermittlung"; das heißt, ein
Aufruf an das Objekt übermittelt Datenwerte
und ruft den Betrieb eines der Programme auf, die in dem Objekt
enthalten sind, das dann Datenwerte zurücksendet.
-
Es
sind verschiedene Sprachen für
Programmierer verfügbar,
die den objektorientierten Ansatz verwenden möchten. Von diesen ist die allgemeinste zur
Zeit C++.
-
Die
verteilte Verarbeitung unterscheidet sich von einem einzelnen Prozessorbetrieb
in mehrerer Hinsicht. Erstens können
unterschiedliche Zugangstechniken erforderlich sein, abhängig davon,
ob sich andere Programme oder Daten auf dem gleichen Hostcomputer
wie ein aufrufendes Programm oder auf einem anderen Hostcomputer
befinden. Der Ort eines Programms oder von Daten beeinflusst auch die
Geschwindigkeit, mit der es/sie von einem anderen Programm er reicht
werden kann/können.
Auch kann/können
ein oder mehre Hostcomputer ausfallen, während andere in Betrieb bleiben.
-
Ein
verteiltes Berechnen wird herkömmlicherweise
durchgeführt
durch Verwendung einer „Client-Server"-Anordnung, in der
ein „Client"-Programm auf einem
Computer ein „Server"-Programm auf einem
anderen Computer abfragt, das dann die Funktion durchführt oder
die Daten zurücksendet,
die für
das Client-Programm erforderlich sind.
-
Objektorientierte
Techniken wurden nicht weithin angewendet auf die verteilte Verarbeitung. Eine
Zusammenfassung des Standes der Technik in dieser Hinsicht ist zu
finden in „Objekt
oriented programming systems" ;
Blair G., Pitman Publishing, London, 1991 (ISBN 0-273-03132-5) und
insbesondere in Kapitel 9 in den Seiten 223–243; „Distributed systems and objects"; David Hutchison
und Jonathan Walpole.
-
Der
Artikel „Experience
With Distributed Smalltalk" von
J. K. Bennet, Software Practice & Experience,
Vol. 20, Nr. 2, Februar 1990, offenbart, dass ein erstes Objekt
an einem ersten Knoten ein zweites Objekt an einem zweiten Knoten
durch eine lokale Objektinteraktion mit einem Proxy-Objekt für das zweite
Objekt aufrufen kann. Das Proxy-Objekt enthält die Identität des zweiten
Objekts und des zweiten Knotens und wenn es von dem ersten Objekt aufgerufen
wird, sendet es eine Nachricht an den zweiten Knoten. Der zweite
Knoten hat eine „entferntes
Objekt"-Tabelle
(ROT – remote
object table), welche die Speicherplätze bzw. Positionen aller seiner lokaler
Objekte speichert, die entfernt referenziert werden können, d.
h. von einem anderen Knoten. Bei Empfang der Nachricht von dem ersten
Knoten, ruft die ROT das zweite Objekt, ähnlich mit einer lokalen Objektinteraktion,
empfängt
einen Antwortwert von dem zweiten Objekt und sendet eine Antwortnachricht
an das Proxy-Objekt, das wiederum den Antwortwert an das erste Objekt
zurücksendet,
wiederum unter Verwendung der lokalen Objektinteraktion.
-
In
einem ersten Aspekt sieht die vorliegende Erfindung ein verteiltes
Computersystem vor, das aufweist eine Vielzahl von Hostcomputern,
und wobei jeder der Hostcomputer einen Speicherraum zum Speichern
vorbestimmter Datensätze
und Programme zum Zugriff auf die Datensätze und eine Speicherplatz-
bzw. Lokations-Tabelle aufweist, und wobei das System dadurch gekennzeichnet
ist, dass:
jede jeweilige Speicherplatz-Tabelle für jeden
Datensatz enthält
einen „aktueller
Speicherplatz bzw. Lokation"-Eintrag
für die
Identität
des Hostcomputers, der aktuell diesen Datensatz speichert, und
einen „erzeugender
Hostcomputer"-Eintrag
für die Identität des Hostcomputers,
auf dem der Datensatz erzeugt wurde;
und dadurch, dass jeder
der Hostcomputer:
ausgebildet ist, zum Zugriff auf einen Datensatz,
aus seiner eigenen Speicherplatz-Tabelle den aktuellen Speicherplatz
bzw. die Lokation dieses Datensatzes zu lesen und zu versuchen,
auf diesen Datensatz an diesem aktuellen Speicherplatz zuzugreifen,
und in dem Fall, dass der Versuch fehlschlägt, aus seiner eigenen Speicherplatz-Tabelle
den Speicherplatz bzw. die Lokation des Hostcomputers zu lesen,
auf dem dieser Datensatz erzeugt wurde, und an diesen erzeugenden
Hostcomputer eine Anforderung zu senden für den aktuellen Speicherplatz
bzw. die Lokation dieses Datensatzes, wie in dessen Speicherplatz-Tabelle
gespeichert; und
reagierend ist auf den Empfang eines „erzeuge
neues Objekt"-Befehls, der eine
Identität
für ein
zu erzeugendes Objekt enthält,
ein neues Objekt mit dieser Identität zu erzeugen und eine Broadcast-Nachricht zu
senden, die seinen eigenen Computer- Speicherplatz bzw. seine eigene Lokation
und die Identität
des neu erzeugten Objekts enthält.
-
In
einem zweiten Aspekt sieht die vorliegende Erfindung vor ein Verfahren
zum Bewirken einer verteilten Berechnung in einem System, das eine Vielzahl
von Hostcomputern aufweist, wobei jeder Hostcomputer einen Speicherraum
zum Speichern vorbestimmter Datensätze und Programme zum Zugriff
auf die Datensätze
und eine Tabelle aufweist,
wobei das Verfahren gekennzeichnet
ist durch die Schritte:
Unterhalten jeder jeweiligen Tabelle,
um für
jeden Datensatz zu enthalten
einen „aktueller Speicherplatz bzw.
Lokation"-Eintrag für die Identität des Hostcomputers,
der aktuell diesen Datensatz speichert, und
einen „erzeugender
Hostcomputer"-Eintrag
für die Identität des Hostcomputers,
auf dem der Datensatz erzeugt wurde;
und zum Zugriff auf einen
Datensatz
Lesen aus seiner eigenen Speicherplatz-Tabelle des aktuellen
Speicherplatzes bzw. der Lokation dieses Datensatzes und Versuchen,
auf diesen Datensatz an diesem aktuellen Speicherplatz bzw. der
Lokation zuzugreifen, und in dem Fall, dass der Versuch fehlschlägt, Lesen
aus seiner eigenen Speicherplatz-Tabelle des Speicherplatzes bzw.
der Lokation des Hostcomputers, auf dem dieser Datensatz erzeugt wurde,
und Senden einer Anforderung an diesen erzeugenden Hostcomputer
für den
aktuellen Speicherplatz bzw. die aktuelle Lokation dieses Datensatzes,
wie in dessen Speicherplatz-Tabelle gespeichert;
und zum Erzeugen
eines neuen Objekts
Antworten auf den Empfang eines „erzeuge
neues Objekt"-Befehls, einschließlich einer
Identität
für ein zu
erzeugendes Objekt, durch Erzeugen eines neuen Objekts mit dieser
Identität und
Senden einer Broadcast-Nachricht, die seinen eigenen Computer-Speicherplatz
bzw. die Lokation und die Identität des neu erzeugten Objekts
enthält.
-
Vorzugsweise
weisen die Datensätze
Objekte auf, auf die jeweils nur über einen zugehörigen Code
zugegriffen werden kann.
-
Noch
vorzugsweiser weisen die Objekte mehrere Objekte derselben Klasse
auf und wobei sich mehrere Objekte dieser Klasse den zugehörigen Code
teilen.
-
Ausführungsbeispiele
der Erfindung werden nun auf beispielhafte Weise unter Bezugnahme
auf die beigefügten
Zeichnungen dargestellt, wobei:
-
1 ein
Blockdiagramm ist, das die Elemente eines Telekommunikationssystems
darstellt, das ein verteiltes Computersystem der vorliegenden Erfindung
enthält;
-
2 ein
Blockdiagramm ist, das einen Teil des Telekommunikationssystems
von 1 darstellt;
-
3 ein
Blockdiagramm ist, das die Elemente eines Hostcomputers darstellt,
der einen Teil des Telekommunikationssystems von 1 und 2 darstellt;
-
4a ein
Diagramm ist, das die Struktur von Daten darstellt, die in der Intelligenz-Domain
gespeichert sind, die Teil der 1 bildet;
-
4b ein
Diagramm ist, das die Struktur von Daten darstellt, die in der Transport-Domain
gespeichert sind, die Teil der 1 bildet;
-
5 die
Datenstruktur in dem Speicher einer Komponente der 4a darstellt;
-
6 die
Struktur einer Objekt-Speicherplatz-Tabelle darstellt, die in dem
Speicher als Teil des Objektverwaltungsprogramms des Hostcomputers
von 3 gespeichert ist;
-
7 die
Struktur einer Host-Status-Tabelle darstellt, die in dem Speicher
des Hostcomputers von 3 gespeichert ist als Teil dessen
Objektverwaltungsprogramms;
-
8 (welche die 8a und 8b aufweist)
ein Flussdiagramm ist, das die Aktualisierung der Host-Status-Tabelle
darstellt;
-
9 (welche die 9a und 9b aufweist)
ein Flussdiagramm ist, das den Prozess der Konstruktion eines neuen
Objekts darstellt;
-
10 ein
Flussdiagramm ist, das den Prozess des Verschiebens eines Objekts
von einem Hostcomputer an einen anderen darstellt; und
-
11 (welche die 11a, 11b und 11c aufweist)
ein Flussdiagramm ist, das den Prozess der Übertragung einer Nachricht
an ein Objekt auf einem entfernten Hostcomputer darstellt.
-
Unter
Bezugnahme auf 1 weist ein Telekommunikationssystem
eine Vielzahl von Vermittlungszentralen oder Vermittlungsstellen 2a, 2b auf, die über Kommunikationskanäle 4 (zum
Beispiel Mikrowellenverbindungen, faseroptische Kabel, koaxiale
Kupferkabel oder virtuelle Verbindungen, die auf den vorhergehenden
getragen werden) miteinander verbunden sind, und eine Transport-Domain 6 bilden. Mit
der Transport-Domain 6 ist eine Intelligenz-Domain 8 in
der Form eines verteilten Computersystems verbunden, das eine Vielzahl von
Hostcomputern 10a, 10b in einer Signalisierungskommunikation
mit den Vermittlungszentren 2a, 2b über Signalisierungsverbindungen 12a, 12b, 12c aufweist,
die auch die Hostcomputer 10a, 10b miteinander
verbinden. Zum Beispiel können
die zwei Domains miteinander verbunden sein unter Verwendung von
Protokollen, wie das Signalisierungssystem 7 (SS7).
-
Die
Hostcomputer 10a, 10b stellen zusammen ein lose
miteinander verbundenes verteiltes Steuerungssystem dar, da sie
nur unter Verwendung einer Messaging-Technik kommunizieren können und
sie nicht unter Verwendung einer gemeinsam benutzten Speichertechnik
kommunizieren.
-
Endbenutzer-Endgerätvorrichtungen
(auch als Endgeräteinrichtungen
bekannt), wie Telefone 14a, 14b, und Kommunikationsvorrichtungen
mit breiter Bandbreite, wie Videospieler 16, bilden gemeinsam
eine Endbenutzer-Domain 18, die mit der Transport-Domain 6 über Teilnehmeranschlussleitungen
(local loop connections) 20a, 20b, 20c verbunden
ist (zum Beispiel Verbindungen über
optische Faser, zellularen Funk oder Twisted-Pair-Kupfer-Kabel).
-
Weiter
ist eine Diensteanbieter-Domain 22 vorgesehen, die aus
Einrichtungen zum Bereitstellen von Diensten (zum Beispiel Video-Dienste) besteht, wie
ein Videospieler 24 und ein Computerterminal 26, die
mit der Transport-Domain 6 über Teilnehmeranschlussleitungen 28a, 28b, 28c verbunden
sind, wie ISDN-Kanäle
oder andere Verbindungen mit hoher Bandbreite.
-
Auf
bekannte Weise wird eine Endbenutzer-Endgerätvorrichtung 14 oder 16 benutzt,
um eine Anforderung über
die Transport-Domain 6 an die Diensteanbieter-Domain 22 zu
leiten. Als ein Ergebnis wird ein Kanal durch die Transport-Domain 6 aufgebaut
und die Dienstean bieter-Domain 22 überträgt einen Dienst über den
Kanal an die Endbenutzer-Domain 18 (zum Beispiel durch Übertragen
eines Videofilmes in Echtzeit oder eine Datei von Daten in elektronischem
Format).
-
In
herkömmlichen
normalen alten Fernsprechdiensten (POTS – plain old telephone services)
wird die Transport-Domain 6 einfach durch die gewählten Nummern
gesteuert, die in der Endbenutzer-Domain erzeugt werden, um den
Transportpfad aufzubauen. Jedoch wird momentan eine „intelligente
Netzwerk"-Steuerung
der Transport-Domain
von der Intelligenz-Domain 8 vorgesehen. Die Intelligenz-Domain 8 empfängt von
der Transport-Domain 6 die gewählte Nummer und/oder die wählende Nummer
und führt
eine Anrufverarbeitung gemäß entweder
der gewählten
oder der wählenden
Nummer oder beider durch. Die Intelligenz-Domain 8 liefert
typischerweise Nummernübersetzungsdienste,
wobei eine gewählte
Telefonnummer übersetzt
wird, um einen Anrufweiterleitungsdienst an eine andere Nummer vorzusehen.
In diesem Fall entspricht die gewählte Nummer einem gespeicherten
Datensatz auf einem der Hostcomputer 10, auf den als Antwort
auf ein Signal auf einer der Verbindungen 12 zugegriffen wird,
um eine entsprechende Um- bzw. Weiterleitungs-Nummer zu erzeugen.
-
Im
Allgemeinen liefert als Antwort auf das Auftreten eines Ereignisses
in der Transport-Domain 6 (wie die Initiierung eines Anrufs
von der Endbenutzer-Domain 18) die Intelligenz-Domain 8 eine
Steuerungsinformation, um die Transport-Domain 6 zu steuern.
-
Andere
Daten werden auch in der Intelligenz-Domain gespeichert. In diesem
Ausführungsbeispiel
werden Abrechnungsdaten für
jeden Anruf in der Intelligenz-Domain gespeichert, um eine regelmäßige Rechnungsabwicklung
für jeden
Kunden zu ermöglichen.
-
Unter
Bezugnahme auf 2 weist die Intelligenz-Domain 8 weiter
eine Compilervorrichtung 30 auf, die aus einer programmierten
Workstation besteht, verbunden mit den Hostcomputern 10 über Netzwerkserver 11a–11c und
ein Weitbereichsnetzwerk (WAN), das zwischen den Compilervorrichtung 30,
den Hosts 10 und den Server 11 verläuft. Die Compilervorrichtung 30 bildet
keinen Teil der vorliegenden Erfindung und wird nicht weiter beschrieben.
-
Die
Server sind auch mit einem oder mehreren Servercomputer(n) des World
Wide Webs (WWW) verbunden, die sich im Internet 32 befinden, und
folglich mit bearbeitenden Terminals 15a–15d, die
mit dem Internet verbunden sind (zum Beispiel über einen lokalen Paketvermittlungsknoten).
-
Unter
Bezugnahme auf 3 weist jeder Hostcomputer 10 einen
Mainframe oder einen Server auf, der eine Kommunikationshardware 100 aufweist, die über das
WAN mit den Server 11 verbunden ist; einen Prozessor 102;
und einen Speicher 104, der sowohl einen schnellen Zugriffsspeicher
in der Form von RAM und einen Offline-Speicher in der Form von magnetischen
oder optischen Festplatten aufweist.
-
In
der Speichervorrichtung 104 sind ein Betriebssystem 106 (zum
Beispiel UNIX (TM)); ein Objektmanagerprogramm 108; und
ein Objektmodell gespeichert, das einen Klassencode 110 und
Objektdaten aufweist, was alles detaillierter im Folgenden diskutiert
wird.
-
Das
in der Intelligenz-Domain eingesetzte Datenmodell wird nun kurz
beschrieben. Im Folgenden ist jedes „Objekt" ein Datensatz, der eine Anzahl von
Datenfeldern aufweist, auf die nur durch einen Code zugegriffen
werden kann, der diesem Objekt entspricht (in einer eins-zu-viele-Beziehung,
in dem Sinn, dass derselbe Code, der eine Klasse von Objekten betrifft,
tatsächlich
auf alle Objekte dieser Klasse zugreift).
-
Herkömmlicherweise
werden Objekte in Klassen gruppiert, wobei die Objekte derselben
Klasse unterschiedliche Daten enthalten, aber in demselben Format.
Jedes Objekt gehört
auch zu einer oder mehreren Teilroutine(n) (im Allgemeinen bezeichnet als „Verfahren" oder „Funktionen"), die auf den Daten arbeiten
und die im Allgemeinen die einzigen Mittel darstellen, die dies
tun.
-
Die
Formate, in denen die Teilroutinen, die zu den unterschiedlichen
Objekten derselben Klasse gehören,
entsprechende Daten empfangen und zurücksenden, sind dieselben (d.
h. alle Objekte derselben Klasse haben eine gemeinsame Schnittstelle). Tatsächlich werden
in C++ die Teilroutinen nur einmal repräsentiert für alle Objekte derselben Klasse
(d. h. der Code für
die Teilroutinen wird nur einmal gespeichert), so dass der Code
und die Objekte sich in einer-zu-vielen-Beziehung befinden. Der
Code gehört folglich
zu der Klasse der Objekte statt zu jedem Objekt.
-
Jede
Objektklasse kann eine Untergruppe einer generischeren Klasse sein,
wie es in der objektorientierten Programmierung gewöhnlich ist.
In diesem Fall kann der Code stattdessen in Beziehung zu der generischeren
Klasse (die „Superklasse") gespeichert werden.
Der Objektmanager 108 enthält eine Liste der Speicherstellen
der Daten, die jedes Objekt bilden, und bei jedem Aufruf eines Objekts
(d. h. einen Anruf), greift der Objektmanager auf den relevanten
Teilroutinecode in dem des Klassencode-Speicherbereich 110 zu
und liefert an den Code die Adresse der Daten für das relevante Objekt in dem
Objekt-Speicherbereich 112.
-
Unter
Bezugnahme auf 4a weisen in diesem Ausführungsbeispiel
die Objekte, die in den Hosts 10 der Intelligenz-Domain
vorgesehen sind, eine Vielzahl von Kundenobjekten 500 auf
(ein Speicherdatensatz betreffend einen von Millionen Kunden), die
bei Zugang eines neuen Kunden erzeugt werden; zerstört werden,
wenn der Kunde freiwillig geht oder von dem Netzwerk entfernt wird;
und bearbeitet, wenn sich die Anforderungen eines Kunden ändern: eine
Vielzahl von Anrufobjekten 600a–600c, von denen jedes
am Anfang des jeweiligen Anruf erzeugt und nach der Beendigung des
Anrufs zerstört wird;
und eine Vielzahl von Kommunikationsvorrichtungsobjekten 700a–700c,
die jeweils ein Element der Kundenendgeräteinrichtung betreffen und
bei der ersten Verbindung dieser Kundenendgeräteinrichtung zum Netzwerk erzeugt
werden.
-
Unter
Bezugnahme auf 4b weisen in diesem Ausführungsbeispiel
die Vermittlungsstellen 2a, 2b ... der Transport-Domain 6 weiter
Hostcomputer auf, auf denen Objekte 800a–800b, 900a–900f gespeichert
sind, die jeweils die Vermittlungen und die Anschlüsse der
Vermittlungen in den Vermittlungsstellen darstellen. Somit enthält jedes
Vermittlungsobjekt 800 einen Datensatz des Zustandes der entsprechenden
Vermittlung in jedem Moment; diese Objekte existieren permanent
in dem Speicher und haben eine Eins-zu-eins-Abbildung bzw. -Entsprechung zu den
physikalischen Vorrichtungen, die in den Vermittlungsstellen 2 vorhanden
sind, so dass ein Schreiben zu dem Anschluss oder den Vermittlungsobjekten
den Zustand der jeweiligen Anschlüsse oder Vermittlungsstellen ändert und
ein Lesen des Anschlusses oder der Vermittlungsobjekte eine genaue
Reflexion der tatsächlichen
Bedingung der entsprechenden physikalischen Vorrichtungen liefert.
-
Auf
beispielhafte Weise wird die Struktur von Daten in einem Kundenobjekt
in der 5 darstellt.
-
Die
Attributdaten, die von dem Objekt 500 unterhalten werden,
weisen ein Kundentypfeld 502 auf (das anzeigen kann, dass
der Kunde ein Angestellter ist oder einen anderen ungewöhnlicher
Status hat oder ist ein normaler Kunde ist); ein Benutzer-ID-Feld 504;
ein Host-Feld 506,
das den Host 10 anzeigt, auf dem das Objekt 500 erzeugt
wurde (geeigneter Weise in http/TCP/IP-Format).
-
Auch
sind Daten gespeichert, die für
die Dienste relevant sind, die dem Kunden bereitgestellt werden;
zum Beispiel die normale Telefonnummer des Kunden (Feld 508);
eine Telefonnummer, an welche die Kundenanrufe zu bestimmten Tageszeiten weitergeleitet
werden sollen (Feld 510); und die Tageszeiten, während denen
Anrufe weitergeleitet werden sollen (Feld 512).
-
Schließlich wird
eine Abrechnungsinformation für
den Kunden gespeichert in der Form eines Anruf-Log-Feldes 514,
das für
jeden Anruf die angerufene (und/oder anrufende) Telefonnummer, das
Datum und die Zeit des Anrufs und die Kosten des Anrufs speichert
(Feld 514).
-
Auf
unterschiedliche Teile dieser Information muss von unterschiedlichen
Einzelpersonen zugegriffen werden. Zum Beispiel können die
Felder 508–512,
die den dem Kunden angebotenen Dienst definieren, von dem Kundendienstpersonal
bearbeitet werden oder durch den Kunden selbst über eine Endbenutzer-Endgerätvorrichtung 15,
während
Abrechnungsdaten (Feld 514) nur durch das Abrechnungs-
und Buchhaltungspersonal schreibbar sein sollten, welches das Netzwerk
betreibt. Selbstverständlich
sollte es für
keinen Kunden möglich
sein, Abrechnungsdatensätze
von einer Endbenutzer-Endgerätvorrichtung 15 aus
neu zu schreiben.
-
In
Betrieb ruft das Auftreten von Ereignissen in der Transport-Domain (wie die Überwachung
einer „abgehobenen
(off hook)" Bedingung
in der Endbenutzer-Domain) den Betrieb des Codes auf, der zu einem
Objekt in der Intelligenz-Domain gehört. Zum Beispiel wird, wenn
ein Telefon in der Endbenutzer-Domain abgehoben wird, der Code zur
Erzeugung eines neuen „Anruf"-Objekts 600 aufgerufen. Wenn
die angerufene Nummer erfasst wird, wird sie über die Signalisierungsverbindungen 12 an
die Intelligenz-Domain 8 übertragen; das Kundenobjekt 500 des
anrufenden Teilnehmers wird aktiviert, um das dessen Abrechnungsdatensatzfeld
zu andern; und es wird auf das Kundenobjekt 500 des angerufenen Teilnehmers
zugegriffen, um die Nummer festzustellen, an die der Anruf weitergeleitet
werden soll, wobei die Information dann an die Vermittlungsobjekte 800 in
der Transport-Domain übertragen
wird, um den Pfad aufzubauen, über
den der Anruf übertragen wird.
-
Während der
Verbindung eines Anrufs ist die Rolle der Intelligenz-Domain normalerweise
begrenzt. Bei Beendigung (clearing down) eines Anrufs bei Erfassen
eines aufgelegten (on hook) Ereignisses, aktualisiert der Abrechnungsfunktionscode,
der zu dem/den Kundenobjekten) 500 gehört, das Abrechnungsdatenfeld
und das Anrufobjekt wird von dem Objektmanager 108 gelöscht.
-
Der
Betrieb zur Laufzeit wird nun beschrieben.
-
In
jedem Host-Prozessor 10 weist das Objektmanagerprogramm 108 (der „Daemon"), wie detaillierter
beschrieben wird, Prozesse zum Erzeugen neuer Objekte auf; Prozesse
zur Bestimmung des Speicherplatzes (d. h. der Hostcomputer 10),
auf dem gegebene Objekte gespeichert sind; Prozesse zum Senden von
Nachrichten an entfernte Hostcomputer; und Prozesse zum Empfang
von Nachrichten davon.
-
Unter
Bezugnahme auf 6 weist der Objektmanager 108 für jeden
Hostcomputer 10 eine Objekt-Speicherplatz-Tabelle 1500 auf,
die eine Liste 1510 der momentan existierenden Objekte
nach Namen speichert und zugehörig
zu dem Datensatz 1510a–1510z für jedes
Objekt einen Eintrag 1520a–1520z speichert,
der den Hostcomputer 10 speichert, auf dem das Objekt momentan
gespeichert ist, und einen Eintrag 1530a–1530z speichert, der
die Identität
des Hostcomputers speichert, auf dem das Objekt anfänglich erzeugt
wurde.
-
Unter
Bezugnahme auf 7 sind in dem Objektmanager 108 auch
gespeichert eine Host-Tabelle 1600, die Statusdaten über jeden
der Hostcomputer aufweist, aus welcher der geeignetste Hostcomputer
zur Erzeugung eines neuen Objekts abgeleitet werden kann. Diese
Tabelle weist deswegen auf einen ersten Satz von Einträgen 1610a–1610z,
welche die Identitäten
jedes Hostcomputers speichern; einen zugehörigen zweiten Satz von Einträgen 1620a–1620z,
welche die Menge freien Speichers speichern, der auf diesem Hostcomputer
verfügbar ist;
einen dritten zugehörigen
Satz von Einträgen 1630a–1630z,
die Konnektivitätsdaten
für jeden
der Hostcomputer 10 speichern (zum Beispiel die Anzahl von
anderen Computern, mit denen er verbunden ist) und optional andere
Einträge,
die zum Beispiel eine Prozessorgeschwindigkeit betreffen.
-
Unter
Bezugnahme auf 8a fragt der Objektmanager 108 jedes
Hostcomputers 10 regelmäßig dessen
Betriebssystem 106 ab, um festzustellen, ob es eine Änderung
in den Daten gegeben hat, die in der Tabelle 1600 für diesen
Prozessor gespeichert sind (zum Beispiel, ob nun weniger Speicher
verfügbar
ist als vorher), in einem Schritt 2002 und bei Feststellung
einer signifikanten Änderung
in einem derartigen Informationselement veranlasst in einem Schritt 2004 der
Objektmanager 108 die Übertragung
einer Broadcast-Nachricht über
die Kommunikationsvorrichtung 100 an alle anderen Hostcomputer 10,
die in der Tabelle 600 verzeichnet sind, und signalisiert
die neue betreffende Information.
-
Unter
Bezugnahme auf 8b aktualisiert, wenn ein Hostcomputer 10 eine
derartige Nachricht in einem Schritt 2006 empfangt, dessen
Objektmanager 108 die Statustabelle 1600 der 20, um die neue Information in einem Schritt 2008 zu
reflektieren.
-
Somit
hält der
Objektmanager 108 jedes Hostcomputers 10 jederzeit
eine Statusinformation für
alle anderen Hostcomputer sowie für sich selbst in der Tabelle
16 der 7 aktuell.
-
Unter
Bezugnahme auf 9 wird nun der Prozess
beschrieben, der beim Konstruieren eines neuen Objekts ausgeführt wird.
In einem Schritt 2010 liest, wenn eine Anweisung, eine
Objektkonstruktionsfunktion aufzurufen, ansonsten in der Quelle
angetroffen worden wäre
(Schritt 2010), anstatt das Objekt in dem Adressbereich
des Host-Prozessors 10 zu
erzeugen, von dem der Aufruf stammt, das Objektmanagerprogramm 108 des
vorliegenden Ausführungsbeispiels
die Host-Prozessor-Statustabelle 1600 in einem Schritt 2012 und
die Daten, die in dem Objekt gespeichert sind, das die Klasse beschreibt, aus
der das zu erzeugende Objekt ein Mitglied ist.
-
Somit
kennt das Objektmanagerprogramm 108 die Anforderungen des
Objekts, das nun erzeugt wird (d. h. ob es eine große oder
geringe Menge an Speicher erfordert und ob es einen Zugriff auf
oder von vielen Kommunikationspunkten erfordert) und hat Daten über die
verfügbare
Fähigkeit
jedes Hostcomputers.
-
In
Schritt 2014 wählt
der Objektmanager 108 einen Hostcomputer 10, auf
dem das Objekt erzeugt werden soll. Die Entscheidung kann nur darauf
basieren, welcher Hostcomputer den meisten verfügbaren verbleibenden Speicher
hat, oder darauf, welcher die beste Konnektivität zu Zugriffspunkten hat, von
denen das neue Objekt aufgerufen wird, ist aber vorzugsweise eine
gewichtete Funktion, die berücksichtigt:
den
verfügbaren
Speicher auf jedem Prozessor;
die Konnektivität jedes
Prozessors; und
eine Präferenz
für den
aktuellen Prozessor (d. h. der, von dem der Aufruf zur Erzeugung
des Objekts stammt).
-
In
einem Schritt 2016 sendet der Objektmanager 108 eine
Nachricht an den ausgewählten
Hostcomputer 10, welche die Adresse dieses Hostcomputers
und den Befehl aufweist, die Konstruktionsfunktion der Klasse aufzurufen,
zu der das zu erzeugende Objekt gehört, zusammen mit dem Namen
des zu erzeugenden Objekts.
-
An
dem Ziel-Hostcomputer 10 wird in einem Schritt 2018 die
Nachricht empfangen und an eine Aufruf-Funktion (invoker function)
in einem Schritt 2020 weitergeleitet. Die Aufruf-Funktion
veranlasst dann die Erzeugung des neuen Objekts an dem Ziel-Hostcomputer.
Gleichzeitig aktualisiert der Ziel-Hostcomputer 10, auf
dem das neue Objekt erzeugt wird, seine Objekttabelle 1500,
um das neuen Objekt aufzunehmen.
-
Schließlich sendet
(broadcast) in Schritt 2022 der Ziel-Hostcomputer an alle
Hostcomputer 10 die Identität des neuen Objekts und seine
Lokation bzw. seinen Speicherplatz, was am ursprünglichen Hostcomputer (unter
anderen) in einem Schritt 2024 empfangen wird und verwendet
wird, um die Objekttabelle 1500 dort zu aktualisieren.
Somit werden gemäß diesem
Ausführungsbeispiel
Objekte in der Laufzeit an ausgewählten Hostcomputern 10 erzeugt,
um die Verteilung von Objekten an die geeignetsten Hostcomputern
auszugleichen, auf der Basis von regelmäßig aktualisierter Information über jeden Hostcomputer-Status.
-
Unter
Bezugnahme auf 10 müssen sich Objekte permanent
auf einem gegebenen Host befinden, können aber von einem Host zu
einem anderen verschoben werden (d. h. gelöscht aus dem Speicher eines
Hosts und aufgenommen in dem Speicher eines anderen).
-
In
einem Schritt 2030 überprüft der Objektmanager 108 für jeden
Hostcomputer 10 dessen Statustabelle 1500. In
einem Schritt 2032 bestimmt das Objektmanagerprogramm 108,
ob ein Objekt von dem Hostcomputer 10 verschoben werden
soll, auf dem sich der Objektmanager 108 befindet; wenn
zum Beispiel dieser Hostcomputer 10 keinen verfügbaren Speicher
mehr hat. Wenn dem so ist, wird ein geeignetes verschiebbares Objekt
ausgewählt
(zum Beispiel, ein Objekt, auf das selten zugegriffen wird).
-
In
einem Schritt 2034 wird die Objekttabelle 1500 überprüft, um aus
dem Eintrag in dem entsprechenden Feld 1530 für das Objekt
zu bestimmen, ob sich das Objekt momentan auf dem Host befindet, auf
dem es erzeugt wurde. Wenn dem so ist (d. h. wenn das Objekt nicht
verschoben wurde, seit es erzeugt wurde), dann wird in einem Schritt 2036 ein neuer
Host ausgewählt
(auf genau die selbe Weise, wie in Bezug auf die Erzeugung eines
neuen Objekts oben beschrieben wurde) und in einem Schritt 2038 wird
das Objekt verschoben.
-
Schritt 2038 wiest
zwei Bestandteile auf; erstens wird eine Nachricht an den neuen
Host übertragen,
welche die Erzeugung des Objekts an diesem Host anweist und die
Werte der Daten spezifiziert, die in dem Objekts gespeichert sind;
und zweitens wird das Objekt aus dem Speicher auf dem aktuellen Hostcomputer 10 gelöscht.
-
Wenn
in Schritt 2034 festgestellt wird, dass sich das Objekt
momentan nicht auf dem Hostcomputer 10 befindet, auf dem
es erzeugt wurde (d. h. das Objekt wurde bereits verschoben, seit
es erzeugt wurde), sendet in einem Schritt 2040 der Objektmanager
eine Nachricht mit diesem neuen Host-Speicherplatz an den ursprünglichen
Hostcomputer 10, auf dem das Objekt ursprünglich erzeugt
wurde (wie aus dem Eintrag 1530 und der Tabelle 1500 für das Objekt
festgestellt wurde) und fährt
nach dem Empfang einer Bestätigung
von diesem ursprünglichen Hostcomputer
in Schritt 2042 fort wie oben beschrieben (Schritt 2036).
-
Unter
Bezugnahme auf 11 wird nun die Verwendung
der Objektspeicherplatztabelle 1500 detaillierter beschrieben.
-
Wenn
eine Nachricht an ein Objekt gesendet werden soll, bestimmt der
Objektmanager 108 zuerst den momentanen Hostprozessor 10 in
der Objektspeicherplatztabelle 1500, auf dem das Objekt
als sich befindend gespeichert ist, und sendet eine Nachricht wird,
die das Objekt aufruft, an diesen momentanen Host in einem Schritt 2050.
-
In
den meisten Fällen
erreichen Nachrichten die korrekten Hosts, aber es ist möglich, dass
aufgrund einer Störung
während
der Kommunikation oder aus anderer Ursache, die Objektspeicherplatztabelle 1500 möglicherweise
nicht völlig
aktuell ist, so dass sich das angerufene Objekt nicht (oder nicht mehr)
auf dem angezeigten Hostcomputer befindet.
-
Unter
Bezugnahme auf 11b, wenn der Hostcomputer 10,
an den die Nachricht adressiert ist, die Nachricht in einem Schritt 2052 empfängt, stellt
er in einem Schritt 2054 fest, ob oder nicht das Objekt als
vorhanden in seiner eigenen Objektspeicherplatztabelle 1500 gespeichert
ist. Wenn vorhanden, wird das Objekt in einem Schritt 2056 angerufen
und jede Antwortnachricht wird in Schritt 2058 zurück übertragen,
wie oben beschrieben.
-
Wenn
nicht, dann signalisiert in einem Schritt 2060 der Hostcomputer
ein Fehlschlagen des Anrufs des Objekts zurück.
-
Der
ursprüngliche
Hostcomputer sendet bei Empfang einer derartigen Nachricht in einem
Schritt 2062 eine Abfragenachricht an den ursprünglichen Hostcomputer 10,
der in der Tabelle 1500 als der aufgeführt ist, auf dem das fragliche
Objekt ursprünglich konstruiert
wurde, in einem Schritt 2066. Aufgrund der getrennten Speicherplatz-Signalisierungsschritte 2040, 2042 der 10 sollte
die Objektspeicherplatztabelle 1500 auf dem ursprünglichen
Host, auf dem das Objekt konstruiert wurde, hinsichtlich dieses Objekts
vollständig
aktuell sein.
-
Unter
Bezugnahme auf 11c, wenn der ursprüngliche
Hostcomputer in Schritt 2068 ein Speicherplatzabfragesignal
empfangt, bezieht sich sein Objektmanager 108 in einem
Schritt 2070 auf die darin enthaltene Objektspeicherplatztabelle
und signalisiert den bestimmten Speicherplatz des betroffenen Objekts
in einem Schritt 2072 zurück.
-
Der
erste Hostcomputer empfangt das Speicherplatzsignal von dem ursprünglichen
Host und bestimmt in einem Schritt 2074 der 11a, ob der Hostcomputer, der somit als der Speicherplatz
des Objekts angezeigt wird, sich von dem unterscheidet, an den eine
Nachricht für
das Objekt bereits in Schritt 2050 gerichtet wurde. Wenn
dem so ist, aktualisiert der Objektmanager 108 die Speicherplatztabelle 1500 in
einem Schritt 2076 und kehrt zu dem Schritt 2050 zurück, um die Übertragung
der Nachricht an den Speicherplatz des neu angezeigten Hostcomputers 10 für das Objekt
zu wiederholen.
-
Wenn
die empfangene Adresse dieselbe Adresse ist, an welche die Nachricht
vorher gerichtet wurde, sendet in einem Schritt 2078 das
Objektmanagerprogramm 108 eine Nachricht, die ein Fehlschlagen
des Erreichens des Objekts anzeigt, an das Objekt, den Prozess oder
den Benutzer zurück,
von dem der Versuch stammte, das Objekt zu anzurufen.
-
Es
ist folglich erkennbar, dass in diesem Ausführungsbeispiel jeder Hostcomputer 10 eine
Objektspeicherplatztabelle aufweist, in welcher der Speicherplatz
aller Objekte in dem System aufgezeichnet ist, und jeder Host kann
folglich autonom arbeiten, ohne Referenz auf die zentrale Datenbank,
um andere Objekte auf anderen Hostcomputern anzurufen. Nichtsdestoweniger
wird ein höherer
Grad an Vollständigkeit
hinzugefügt
durch Vorsehen, dass jeder Hostcomputer 10 zusätzlich die
Speicherplätze
aller Objekte verfolgt, die ursprünglich auf diesem Hostcomputer
erzeugt wurden, selbst wenn der Speicherplatz dieser Objekte darauf
folgend auf einen anderen Hostcomputer verschoben wird.
-
Ferner
ist es offensichtlich, dass jeder Hostcomputer 10 genaue
Aufzeichnungen der Objekte pflegt, die sich in seinem eigenen Speicherbereich befinden.
-
Andere Ausführungsbeispiele
und Modifikationen
-
Es
ist selbstverständlich
möglich,
getrennte Tabellen vorzusehen für
die Objekte, die lokal an jedem Hostcomputer gespeichert sind, und
für die
Objekte, die ursprünglich
auf diesem Hostcomputer erzeugt wurden, sowie die Objekte, die auf
anderen Hostcomputern gespeichert sind. Jedoch stellt das Vorsehen
einer einzelnen Tabelle, die alle Objektspeicherplätze speichert,
eine größere Flexibilität sicher, da
alle Objektspeicherplatztabellen 1500 aller Hostprozessoren 10 im
Wesentlichen identisch sind, was im Falle der Erweiterung des verteilten
Berechnungssystems ermöglicht,
ein neues Host-Prozessor-System
aufzunehmen, um die Objektspeicherplatztabelle von jedem Host-Prozessor
auf einen neuen Host-Prozessor zu kopieren.
-
Die
Erfindung ist nicht nur mit C++ verwendbar, sondern mit anderen
objektorientierten Sprachen, wie Smalltalk (TM), die in einer verteilten
Umgebung vorgesehen werden.