-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft im allgemeinen ein Verfahren und eine Einrichtung zum Verteilen von Daten und Verarbeitungslast zwischen mehreren Servern eines Kommunikationsdiensteanbieters. Insbesondere bezieht sich die Erfindung auf die Disposition von Verarbeitungs- und Speicherlast zum Erreichen einer effizienten Verwendung von Computer- und Datenspeicherressourcen.
-
HINTERGRUND DER ERFINDUNG UND STAND DER TECHNIK
-
Eine Vielzahl unterschiedlicher fester und mobiler Telekommunikations-/Datenkommunikationsdienste sind zusätzlich zu den traditionellen Sprachruf- und Textkurznachrichtendienst entwickelt worden. Beispielsweise ist Internet-Browsing rasch sehr populär geworden und in den letzten Jahren hat sich der Drahtlosbereich mit dem Internet vereinigt. Nun sind Mobilendgeräte verfügbar mit einer Funktionalität zum Verbinden des Internets über ein Drahtloszugangsnetz zum Erhalten von Information und Diensten von Orten und Servern, die irgendwo auf der Welt angeordnet sind. Zudem sind neue Technologien für Mobilkommunikation eingeführt worden, die eine größere Netzkapazität und höhere Übertragungsbitraten bereitstellen. Insbesondere verschmelzen derzeit GPRS-Netze (General Packet Radio Service- bzw. Allgemeinfunkpaketdienstnetze) und WCDMA-Netze (Wideband Code Division Multiple Access- bzw. Breitbandcodemultiplexnetze), um Drahtlosdatendienste zu ermöglichen, die einen weiten Bereich unterschiedlicher Datenraten erfordern. Die in vielen neuen Diensten kommunizierten Daten können Sprache, Text, Bilder, Audio-Dateien und Video-Dateien in verschiedenen unterschiedlichen Formaten und Kombinationen einschließen.
-
Beispielsweise werden Mobildirektnachrichtendienste und Präsenzdienste rasch populärer. Direktbenachrichtigung ist bekannt von der Welt der festen PCs (Personal Computer) und schließt Nachrichtenzustandsmeldung und verschiedene Gruppen- und Kontaktlistenmerkmale ein. Anwesenheitsdienste beziehen Information über den Ort des Mobilendgerätes ein und versetzt den Benutzer in die Lage, Meldungen gemäß ihrer Profile und Verfügbarkeit zu empfangen. Ein Benutzerprofil kann persönlich sein und kann definiert werden durch Vorzüge, Interessen und Hobbys sowie eher temporäre Faktoren wie Benutzerverfügbarkeit und derzeitige Stimmungen. Nachrichten- und Inhaltedienste können auch abhängig von dem derzeitigen Ort, der Verfügbarkeit und der Endgerätefähigkeiten geliefert werden. Es kann leicht verstanden werden, dass solche Dienste das Speichern von spürbaren Mengen von wiedergewinnbaren benutzerspezifischen Daten erfordert, welches in vielen Fällen bedingt durch ihre dynamische Natur regelmäßig aktualisiert werden muss.
-
Der Bedarf an Telekommunikationsdiensten nimmt demnach rasch zu und Diensteanbieter sind über die gesamte Welt verteilt eingeführt, ausgerüstet mit Hardware- und Software-Ressourcen, um diese Bedürfnisse zu erfüllen. Insbesondere werden eine Vorrichtung zum Verarbeiten von Diensteanfragen und Daten sowie eine Vorrichtung zum Speichern gewaltiger Datenmengen benötigt. Folglich muss ein Diensteanbieter in der Lage sein, die Verarbeitungs- und Speichervorrichtungen, die typischerweise in einem System unterschiedlicher Dienstekomponenten, wie Server, umfasst sind, effizient zu steuern. Der Ausdruck ”Server” wird nachstehend verwendet zum Bezeichnen irgendwelcher Hardware und/oder Software zum Speichern und/oder Verarbeiten von Daten. Ein Server kann konfiguriert sein zum Bereitstellen eines oder mehrerer spezieller Dienste.
-
Wie aus dem oben gegebenen Beispiel ersichtlich ist, können unterschiedliche Arten gespeicherter Daten von sehr dynamischer Art sein, was regelmäßiges Aktualisieren erfordert. Darüber hinaus müssen Serversysteme von Zeit zu Zeit neu konfiguriert werden, da die Bedürfnisse in Bezug auf Verarbeitung und Speichern sich ändern, beispielsweise bedingt durch ändernde Bedürfnisse der Diensteanfragen, hinzugefügter oder entfernter Teilnehmer und dem Einführen, Modifizieren oder Entfernen von Diensten. Die Arbeitslast von Servern nimmt oft rasch zu, so dass individuelle Server leicht überlastet werden, zumindest für kurze Zeit, insbesondere allgemeine Web-Server. Zum Beheben von Überlastproblemen in Server sind im Grunde zwei Lösungen verfügbar.
-
Erstens, kann ein existierender Server aufgerüstet werden, um seine Rechen- und/oder Speichermöglichkeiten zu erhöhen. Jedoch wird dieser Server bald wieder überlastet sein, wenn der Umfang an Diensteanfragen und/oder die Bedürfnisse zum Speichern fortgesetzt zunehmen, was ein ferneres Aufrüsten erfordert, welches kompliziert und teuer durchzuführen sein kann.
-
Zweitens ist es möglich, fernere Server hinzuzufügen, um einer höheren Belastung gerecht zu werden. Das Konzept virtueller Server ist vorgeschlagen worden zum Bereitstellen von Lastverteilung zwischen mehreren Servern. Ein virtueller Server ist ein skalierbarer Server, aufgebaut aus einer Gruppe mehrerer Server, welche transparent zu Endbenutzern derart sind, dass der Benutzer nur einen einzelnen virtuellen Server sieht. Der Frontend-Rechner bzw. Kommunikationsrechner der realen Server ist ein Knoten, der manchmal Lastausgleicher genannt wird, konfiguriert zum Planen bzw. zur Disposition von Diensteanfragen zu den unterschiedlichen realen Servern. Skalierbarkeit wird erreicht durch transparentes Hinzufügen oder Entfernen eines Servers in der Gruppe.
-
Für einen Internet-Diensteanbieter oder ähnliches, der eine Vielzahl von Server steuert, müssen Verarbeitungs- und Speicherlast zwischen den Servern geteilt werden. Dies ist erforderlich, um die verfügbaren Rechen- und Speicherressourcen effizient zu nutzen und zum Behandeln von ”Hotspots” bzw. kurzzeitigem hohen Verkehrsaufkommen und zum Vermeiden von Flaschenhalseffekten. Wie oben erwähnt, müssen große Datenmengen gespeichert werden und sollten auch leicht zu finden und zu holen sein. Zudem muss es möglich sein, Verarbeitungsaufgaben benötigende Ressourcen effizient auszuführen, was einen oder mehrere Computer erfordert. Um große Mengen derselben oder ähnlichen Rechenanfragen zu handhaben, ist es recht üblich, dass jene Anfragen zwischen mehreren Computern geteilt werden.
-
Es ist demnach ein Problem des effizienten Verteilens von Verarbeitungs- und Speicherlast zwischen einer Vielzahl von Servern, noch ein leichtes Wiedergewinnen gespeicherter Daten ermöglichend. In derzeitigen das Verteilen von zu speichernden Daten oder das Verarbeiten von Daten einbeziehenden Lösungen wird ein Server häufig einem Client auf eine Anmelde- bzw. Login-Anfrage hin zugewiesen. Das zum Auswählen eines Servers verwendete Zuweisungsschema basiert normalerweise auf der derzeitigen Last bei einem vorbestimmten Satz von Servern, derart, dass der Server mit der niedrigsten derzeitigen Last in Bezug auf Speicherressourcen und/oder CPU-Möglichkeiten (CPU = Central Processing Unit bzw. zentrale Verarbeitungseinheit) etc. ausgewählt wird für den Client. Serverzuweisen wird üblicherweise unter Verwendung eines Lastmanagerknotens oder ähnlichem durchgeführt.
-
Die einfachste derzeitige Lösung zum Lastteilen ist ein zyklisches Warteschlangenzuweisungsschema bzw. ”Round Robin”-Zuweisungsschema. Fernere Lastteilungslösungen sind bekannt, die komplexer sind, wie zum Beispiel ”Weighted Round Robin” bzw. gewichtete zyklische Warteschlangen, ”Least Connection” bzw. geringste Verbindung, ”Weighted Least Connection” bzw. gewichtete geringste Verbindung, ”Locality Based Least Connection” bzw. ortsbasierte geringste Verbindung, ”Destination Hashing” bzw. Ziel-Hashing und ”Source Hashing” bzw. Quellen-Hashing.
-
Jedoch sind die oben erwähnten Lösungen relativ komplex zu verwenden, was zu Problemen in Bezug auf die Überwachung, den Betrieb und die Wartung führt, da es schwierig vorherzusagen ist, wo Daten verteilt und gespeichert werden, sowie wo spezifische rechenintensive Aufgaben tatsächlich ausgeführt werden. Ein anderes Problem ist, dass es manchmal nicht möglich ist, lineare Skalierung eines Serversystems, d. h., das Ausdehnen von Ressourcen durch Hinzufügen von Servern zu dem System, durchzuführen.
-
Zudem kann es schwierig sein, in einem oder mehreren Servern gespeicherte Daten zu finden oder zu holen, wenn keine Bezugnahme oder kein Zeiger zu den Daten in geeigneter Weise irgendwo gespeichert sind. Der das Anmelden bzw. Login durchführende Client kann eine geeignete Bezugnahme zu den Daten haben, aber kein anderer Client und auch keine andere Einrichtung kann die Daten ohne die Bezugnahme finden oder holen, ohne dass sogenannte ”Brute Force Searches” bzw. Brechstangen-Suchabläufe unter einem Satz von Servern verwendet werden.
-
Zyklische Warteschlangendisposition bzw. ”Round Robin” ist nur geeignet für das Verteilen von Verarbeitungslast, da die Verarbeitungsaufgaben nicht davon betroffen sind, in welchem Server sie ausgeführt werden. Andererseits muss es bei der Datenspeicherverteilung möglich sein, in einem von mehreren Servern gespeicherte Daten zu finden und zu holen, was nicht durchgeführt werden kann unter Verwendung von zyklischen Warteschlangen, sondern die Verwendung von Zeigern oder Bezugnahmen erfordert, wie oben beschrieben. Zudem ist ein allgemeines Grundproblem einiger der oben erwähnten Dispositionsverfahren, dass sie IP-Adressierung bzw. Internet-Protokoll-Adressierung für die Disposition verwenden. Da sich hinter einer einzelnen IP-Adresse (Proxy, NAT, etc.) eine Vielzahl von Clients befinden kann, können diese weder für Datenverteilung noch für Lastteilung verwendet werden.
-
WO 01/45349 A2 betrifft Anforderungen, die von einem Domainnameserver behandelt werden, und betrifft insbesondere die Situation, dass ein Hostname mehr als eine IP-Adresse hat, sodass dann, wenn der DNS-Server eine Anfrage nach der IP-Adresse eines gegebenen Hostnamen empfängt, der DNS-Server eine der IP-Adressen, die zum Hostnamen gehören, bereitstellt. Diese IP-Adresse ist jedoch nicht notwendigerweise dieselbe IP-Adresse, die von dem DNS-Server als Reaktion auf eine vorangehende Dienstanfrage ausgegeben wurde. Um zu ermöglichen, dass ein Rechner („Maschine”) auf eine an den DNS-Server gerichtete Anfrage hin immer dieselbe IP-Adresse erhält, pflegt in der
WO 01/45349 A2 der DNS-Server eine Tabelle, die eine Zuordnung von sogenannten Maschine-IP-Adressen und Hostnamen zu den IP-Adressen enthält.
-
WO 01/01221 A2 betrifft eine skalierbare Server-Architektur, bei der der geeignetste Datenbankserver ausgewählt wird unter Berücksichtigung des Lastpegels von jedem Datenbank-Server. Die Auswahl des zweiten Servers in der
WO 01/01221 A2 ist Last-spezifisch und erfolgt durch einen zentralen Router.
-
Ein Round-Robin-Scheduling ist in Anonymous: Virtual Server Scheduling Algorithms
(http://www.linuxvirtualserver.org/docs/scheduling.html) (https://web.archive.org am 17.12.2001) offenbart.
-
US 6 134 532 A zeigt ferner die Verwendung eines Hash-Codes aus der Nutzer-ID zur Auswahl eines physikalischen Servers.
-
RESÜMEE DER ERFINDUNG
-
Das Ziel der vorliegenden Erfindung ist, die oben dargelegten Probleme zu reduzieren oder zu eliminieren und ein effizienteres Verteilen von Verarbeitungs- und Speicherlast für kommende Diensteanfragen bereitzustellen. Dieses Ziel wird erreicht durch Bereitstellen eines Verfahrens gemäß Anspruch 1 und eines Serversystems mit einer Vielzahl von Servern gemäß Anspruch 12. Bevorzugte Ausführungsformen sind in den jeweiligen Unteransprüchen definiert.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird nun detaillierter und unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, in welchen zeigt:
-
1 eine schematische Übersicht eines Kommunikationsszenarios, in welchem die vorliegende Erfindung verwendet werden kann;
-
2 ein Blockdiagramm eines beispielhaften Serversystems gemäß einer Ausführungsform;
-
3 ein detaillierteres Blockdiagramm von Komponenten in einem von einer kommenden Diensteanfrage einbezogenen Serversystem; und
-
4 ein Ablaufdiagramm zum Erläutern einer Prozedur zum Behandeln einer Diensteanfrage.
-
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
In 1 ist ein schematisches Kommunikationsszenario dargelegt, in welchem die vorliegende Erfindung verwendet werden kann. Eine Vielzahl von Client-Endgeräten 100 sind mit einem Hauptverbindungs- bzw. Backbone-Netz 102, wie z. B. dem Internet, verbunden. Die Client-Endgeräte 100 können fest sein oder mobil, wie z. B. leitungsgebundene Endgeräte oder über ein Mobilzugangsnetz 104 über eine Luftschnittstelle verbundene Drahtlosendgeräte, wie in der Figur angezeigt. Eine Vielzahl von Diensteanbietern 106 sind in ähnlicher Weise mit dem Backbone-Netz 102 verbunden, jeder einen oder mehrere Server zum Ausführen von Telekommunikationsdiensten umfassend, die für die Client-Endgeräte 100 angefordert worden sind. In Wirklichkeit sind fernere Netze und/oder Knoten üblicherweise in Kommunikationsstrecken zwischen Clients und Diensteanbietern einbezogen, obwohl hier aus Gründen der Einfachheit nicht gezeigt.
-
Ein Client-Endgerät 100 kann demnach einen spezifischen Telekommunikationsdienst durch Senden einer Diensteanfrage über das Backbonenetz 102 zu einem Diensteanbieter 106 veranlassen. Der kontaktierte Diensteanbieter aktiviert dann eine oder mehrere geeignete Diensteanwendungen als Reaktion darauf. Das Aktivieren einer Diensteanwendung kann verschiedene Verarbeitungs- und Speicheraufgaben einbeziehen, welche nachstehend detaillierter diskutiert werden.
-
Diensteanwendungen können auch ohne eine vorangehende Endgeräteanfrage angestoßen werden, wie zum Beispiel durch einen ”Push”-Mechanismus, wie sie beispielsweise im Zusammenhang mit WAP (Wireless Application Protokoll) verwendet wird. Eine Diensteanfrage kann demnach von einem anderen Diensteanbieter oder Netzbetreiber herrühren, der Daten eines gewissen Client einer gerade ablaufenden Sitzung benötigt. Beispielsweise kann ein Diensteanbieter wünschen, gewisse Information an Mobilstationen zu senden, wenn sie in einen spezifischen Bereich eintreten. In diesem Fall wird der Diensteanbieter nach den benötigten Benutzerdaten anfragen, wie zum Beispiel Endgerätemöglichkeiten und Client-Profil, beispielsweise einschließlich vordefinierter Präferenzen und Interessen.
-
Wie im Bereich des technischen Hintergrundes erwähnt, sind Diensteanbieter üblicherweise mit einer Vielzahl von Servern ausgerüstet, um die Bedürfnisse nach Diensten von Clients und anderen Diensteanbietern zu erfüllen. Demnach wird dieselbe Funktionalität in einigen Servern dupliziert, hierdurch in der Lage seiend, dieselben Diensteaufgaben simultan für mehrere Clients auszuführen, seien es Datenverarbeitungs- oder Speicheraufgaben. Die vorliegende Erfindung betrifft ein Verfahren und eine Einrichtung zum effizienten Verwenden von verfügbaren Servern durch Verteilen der Last über die Server.
-
Die Erfindung nutzt die Tatsache, dass von Servern ausgeführte Diensteaufgaben aufgeteilt werden können in Verarbeitungsaufgaben und Speicheraufgaben. ”Verarbeitungsaufgaben” (Processing Tasks) können das Analysieren von Diensteanfragen einbeziehen, das Verarbeiten von Daten und das Ablaufenlassen gewisser Anwendungen zum Liefern angefragter Dienste. ”Speicheraufgaben” (Storing Tasks) können das Speichern neuer Client-spezifischer, sitzungsspezifischer oder Konfigurations-Daten einbeziehen, das Aktualisieren bereits gespeicherter Daten und das Wiedergewinnen von gespeicherten Daten. Beispielsweise kann eine Diensteanfrage das Wiedergewinnen bzw. Holen von gewissen Daten erfordern, die als Eingabe verwendet werden zum Ausführen einer spezifischen Verarbeitungsaufgabe oder Diensteanwendung.
-
In 2 ist ein beispielhaftes Serversystem 200 dargestellt zum Bereitstellen eines oder mehrerer Dienste für Client-Endgeräte in Übereinstimmung mit der Erfindung. Das Serversystem 200 umfasst einen Zugangsknoten 202, der als erster Zugangspunkt für kommende Anfragen und Daten agiert. Mehr als ein Zugangsknoten können verwendet werden innerhalb des Schutzbereichs der Erfindung. Beispielsweise kann der erste Zugangsknoten 202 konfiguriert sein als normal arbeitender Knoten, der kommende Anfragen behandelt, wobei ein zweiter Zugangsknoten 202a die Aktivitäten des ersten Knotens überwacht. Hierbei ist der zweite Knoten 202a konfiguriert zum Übernehmen des Behandelns von Anfragen, wenn der erte Knoten 202 aus irgendwelchen Gründen ausfällt und abgeschaltet ist.
-
Der Zugangsknoten 202 ist mit einem Satz von ersten Servern 204 verbunden, welche konfiguriert sind, um in erster Linie Verarbeitungsaufgaben auszuführen. Jeder erste Server 204 ist wiederum mit einem Satz von zweiten Servern 206 verbunden, welche konfiguriert sind, um in erster Linie Speicheraufgaben auszuführen. Demnach kann jeder zweite Server 206 von allen ersten Servern 204 erreicht werden. Die ersten Server 204 sind alle imstande, mindestens eine gemeinsame Verarbeitungsaufgabe auszuführen und die zweiten Server 205 sind alle imstande, mindestens eine gemeinsame Speicheraufgabe auszuführen. Die ersten und zweiten Server können zudem imstande sein, auch andere Aufgaben auszuführen, welche jedoch nicht innerhalb des Schutzbereichs der vorliegenden Erfindung liegen.
-
Um Verarbeitungsaufgaben über die ersten Server 204 zu verteilen, wird ein erster Dispositionsalgorithmus im Zugangsknoten 202 verwendet zum Zuweisen eines ersten Servers 204 zum Ausführen irgendeiner Verarbeitungsaufgabe für eine kommende Diensteanfrage. In ähnlicher Weise wird ein zweiter Dispositionsalgorithmus in jedem ersten Server 204 verwendet zum Verteilen kommender Speicheraufgaben über die zweiten Server 206.
-
Eine kommende Diensteanfrage für einen spezifischen Client oder eine eingerichtete Sitzung wird demnach zuerst in dem Zugangsknoten 202 empfangen. Dann wird ein erster Server 204 durch den Zugangsknoten 202 zum Verarbeiten der Anfrage zugewiesen unter Verwendung des ersten Dispositionsalgorithmus. Wenn die Diensteanfrage ferner eine Speicheraufgabe einbezieht, wendet der zugewiesene erste Server 204 den zweiten Dispositionsalgorithmus an zum Finden eines zweiten Servers 206 zum Ausführen der Speicheraufgabe.
-
Die ersten und zweiten Dispositionsalgorithmen werden in Übereinstimmung mit der Art der Verarbeitungs- und Speicheraufgaben ausgewählt, welche sich von einander unterscheiden. Eine Verarbeitungsaufgabe kann durch irgendeinen der ersten Server 204 ausgeführt werden, unabhängig davon, zu welchem Client oder zu welcher Sitzung die Aufgabe gerichtet ist. Es ist selbst wünschenswert, dass unterschiedliche erste Server 204 verwendet werden können für wiederholte Anfragen für denselben Client, um eine effizientere Lastverteilung zu erzielen, da das Verhalten und die Profile sich zwischen den unterschiedlichen Clients unterscheiden können. Beispielsweise kann ein Client mehr Verarbeitungskapazität erfordern als andere durch beispielsweise ein konstantes Anfordern von fortgeschritteneren Dienstefunktionalitäten oder größeren Informationsmengen.
-
Andererseits sollten die Speicheraufgaben durch denselben zweiten Server 206 für jeden spezifischen Client ausgeführt werden, da Client-spezifische Daten vorzugsweise in nur einem dem Client zugewiesenen zweiten Server gespeichert werden sollten. Andernfalls müssen die für denselben Client spezifischen Daten in allen zweiten Servern 206 gespeichert werden. Wenn die Speicheraufgabe das Speichern neuer Daten für einen neuen Client bedeutet, kann irgendein zweiter Server 206 anfangs zugewiesen werden für die Aufgabe. Jedoch, wenn die Speicheraufgaben das Wiedergewinnen oder Holen bereits gespeicherter Daten für einen Client einbezieht, muss der zweite Dispositionsalgorithmus immer dasselbe Ergebnis ausgeben, d. h., auf den diesem Client zugewiesenen zweiten Server zeigen, in welchem die Daten dieses Clients gespeichert sind. Hierdurch wird der Bedarf am Verwenden separater Zeiger oder Bezugnahmen zu spezifischen zweiten Servern eliminiert.
-
Dasselbe gilt auch für Verarbeitungs- und Speicheraufgaben, die sitzungsspezifische Daten einbeziehen. Client-Daten und Sitzungsdaten werden nachstehend kollektiv als ”Benutzerdaten” (User Data) bezeichnet. In einer Ausführungsform können die ersten Server konfiguriert sein zum Behandeln von Anfragen unter Verwendung unterschiedlicher Protokolle und können entsprechend aufgeteilt sein in unterschiedliche Gruppen. Beispielsweise kann eine erste Gruppe erster Server konfiguriert sein zum Behandeln von HTTP-Anfragen (Hyper-Text-Transfer-Protokoll-Anfragen) und eine zweite Gruppe erster Server kann konfiguriert sein zum Behandeln von HTTPS-Anfragen (ITTP-Secure-Anfragen bzw. sicherer HTTP-Anfragen). Der erste Dispositionsalgorithmus wird dann nur für die Gruppe erster Server verwendet abhängig von dem Protokoll der Diensteanfrage. In einer anderen Ausführungsform können die zweiten Server für spezifische Speicheraufgaben in unterschiedlichen Diensteanwendungen gedacht sein. Beispielsweise können die zweiten Server Sitzungsserver umfassen, Instant-Messaging-Server, Present-Server etc. Das Zuweisen eines ersten Servers 204 kann demnach ausgeführt werden in einer ”IP-Ebene” bzw. Internet-Protokoll-Schicht, d. h., unabhängig davon, welcher Dienst angefordert worden ist, während das Zuweisen eines zweiten Servers 204 auf einer ”Anwendungsebene” (Application Level) ausgeführt werden kann abhängig von der Art des Dienstes.
-
Um zusammenzufassen, der erste Dispositionsalgorithmus ist imstande, irgendeinen ersten Server aus einem Satz von ersten Servern für eine Verarbeitungsaufgabe auszuwählen, während der zweite Dispositionsalgorithmus imstande ist, einen spezifischen Server für eine Speicheraufgabe entsprechend einem in dieser Aufgabe involvierten Client oder einer entsprechenden Sitzung auszuwählen. Gemäß einer bevorzugten Ausführungsform wird ein einfacher ”Round Robin”-Algorithmus bzw. zyklischer Warteschlangenalgorithmus als erster Dispositionsalgorithmus verwendet und ein Hash-Algorithmus wird als zweiter Dispositionsalgorithmus verwendet.
-
Ein Hash-Algorithmus bedeutet, dass eine Hash-Zahl aus einem vorbestimmten Identitätscode eines Client oder einer Sitzung hergeleitet wird, welche nachstehend kollektiv als ”Benutzerkennzeichen” (User ID) bezeichnet wird. Eine Serverkennung kann bestimmt werden durch Berechnen einer entsprechenden Serverkennzahl (Server-ID-Number) mit Hilfe eines vorbestimmten Algorithmus oder einer Formel basierend auf der hergeleiteten Hash-Zahl. Beispielsweise kann die Hash-Zahl eine einfache Prüfsumme oder ähnliches für einen Binärcode des Benutzerkennzeichens sein. Entsprechend dieser Ausführungsform wird ein zweiter Server 206 zum Ausführen einer Speicheraufgabe aus dem folgenden Algorithmus bestimmt: Serverkennzeichen = Hash(Benutzerkennzeichen)modulo n (1) wobei n die Anzahl möglicher zweiter Server ist, wie in 2 angedeutet. Der Modulo-Operator wird eine ganze Zahl zwischen 0 und n – 1 liefern. Wenn beispielsweise vier zweite Server 206:0–206:3 verfügbar sind, d. h., n = 4 und ein spezieller Client das Hash der Benutzerkennung (Hash(User ID)) = 14 liefert, ist die Serverkennzahl 2. Demnach wird der Server 206:2 entsprechend ausgewählt. Für einen anderen Client ist die Hash-Kennung 16, was zu einer Server-ID von 0 führt, usw. Irgendeine geeignete Hash-Funktion kann auf eine Benutzerkennung angewendet werden, vorausgesetzt, dass dieselbe Serverkennung immer aus derselben Benutzerkennung hergeleitet wird.
-
3 zeigt in detaillierterer Weise Komponenten in einem bei einer kommenden Diensteanfrage S einbezogenen Serversystem, teilweise unter Verwendung derselben Bezugszeichen aus 2. Die Diensteanfrage kann von einem Client-Endgerät 100 über das Backbone-Netz 102 zu einem Diensteanbieter 106 gesendet worden sein, wie in 1 gezeigt, oder kann von einem anderen Diensteanbieter verursacht worden sein, der gewisse Benutzerdaten oder ähnliches anfragt. In diesem Beispiel ist die Diensteanfrage S zwischen unterschiedlichen Einheiten ”weitergeleitet” worden, welches in der Praxis vorgenommen werden kann durch Weiterleiten der gesamten Anfrage oder nur eines Teils davon oder irgendeiner relevanten Anfrage für zum Behandeln der Diensteanfrage S erforderlicher Operationen.
-
Die Diensteanfrage S wird zuerst in einer empfangenen Einheit 300 eines Zugangsknotens 202 empfangen und ein erster Dispositionsalgorithmus wird in einer Dispositionseinheit 302 zum Zuweisen eines ersten Servers zum Verarbeiten der Anfrage zugewiesen. Der erste Dispositionsalgorithmus ist imstande, irgendeinen ersten Server aus einem vorbestimmten Satz von ersten Servern auszuwählen. In diesem Fall wird der erste Server 204:C ausgewählt, wobei die Diensteanfrage dorthin weitergeleitet wird. Der erste Server 204:C verarbeitet dann demgemäß die Anfrage in einer Verarbeitungseinheit 304.
-
Es wird dann erfasst, dass spezifische Daten erforderlich sind als Eingangsgröße zum Ausführen des angeforderten Dienstes, wie zum Beispiel benutzerspezifische Daten, Teilnehmerparameter oder ähnliches. Ein zweiter Dispositionsalgorithmus wird hierzu in einer Dispositionseinheit 306 in dem ersten Server 204:C angewendet zum Finden und Zuweisen eines zweiten Servers zum Ausführen einer Speicheraufgabe des Wiedergewinnens bzw. Holens der benötigten Daten. Der zweite Dispositionsalgorithmus ist imstande, einen spezifischen zweiten Server aus einem vorbestimmten Satz von zweiten Servern auszuwählen. Der zweite Dispositionsalgorithmus mag vorzugsweise ein Hash-Algorithmus unter Verwendung einer spezifischen Client-Kennung oder einer Sitzungsidentifikation als Eingangsgröße sein. In diesem Fall wird der zweite Server 206:2 ausgewählt, wobei die Diensteanfrage oder zumindest eine Anfrage in Bezug auf benötigte Daten dorthin weitergeleitet wird zum Holen der benötigten Daten.
-
Als nächstes wird erfasst, dass der angeforderte Dienst fernere Verarbeitungsarbeit erfordert. Ein dritter Dispositionsalgorithmus wird dann in einer Dispositionseinheit 310 im zweiten Server 206:2 angewendet zum Zuweisen eines ersten Servers zum Weiterverarbeiten der Anfrage. Der dritte Dispositionsalgorithmus ist imstande, irgendeinen ersten Server aus dem vorbestimmten Satz von ersten Servern auszuwählen. Es sollte bemerkt werden, dass es nicht erforderlich ist, dass die fernere Verarbeitung von demselben ersten Server 204:C ausgeführt wird wie zuvor. In diesem Beispiel wird mit Hilfe des dritten Dispositionsalgorithmus ein erster Server 204:F ausgewählt, wobei die Diensteanfrage dorthin weitergeleitet wird. Der dritte Dispositionsalgorithmus kann derselbe sein wie der erste Dispositionsalgorithmus, wie zum Beispiel ein Round Robin-Algorithmus bzw. zyklischer Warteschlangenalgorithmus oder ähnliches, der in der Lage ist, irgendeinen ersten Server auszuwählen.
-
Im Folgenden wird ein praktisches Beispiel des täglichen Lebens beschrieben, in welchem die vorliegende Erfindung verwendet wird. Wenn ein Client eine Direkt-Nachricht (instant message) an einen anderen Benutzer sendet, sendet der Client ein ”HTTP POST”, das eine geeignete XML-Nachricht enthält zu dem Serversystem. Diese Nachricht wird zuerst von einem lokalen Ausrichter (Local Director) empfangen, der al Zugangsknoten arbeitet und die Verteilung von Verarbeitungslast in der IP-Ebene behandelt. Der lokale Ausrichter leitet die Anfrage unter Verwendung eines ersten Dispositionsalgorithmus weiter zu einem von einigen Frontend-Servern, das heißt, einem ersten Server. Auf den Empfang der Anfrage hin ”parsed” der Frontendserver das XML und extrahiert die zum Ausführen der Anfrage erforderliche Information. Der Frontendserver verifiziert dann, dass der Client eine gültige Sitzung hat durch Senden einer Anfrage zu einem von einigen Sitzungsservern, d. h., einem zweiten Server. Welcher Sitzungsserver zu verwenden ist, wird durch Anwenden eines Hash-Algorithmus bestimmt, das heißt, eines zweiten Dispositionsalgorithmus auf die Benutzerkennung des Client. Wenn der korrekte Sitzungsserver gefunden worden ist, wird geprüft, ob der Client in dem Server eine Sitzung gespeichert hat und wenn keine entsprechende Sitzung gefunden wird, dann wird eine Fehlermeldung zurückgegeben. Andernfalls wird eine Anfrage zu einem Direktnachrichtenserver (Instant Messaging Server) gesendet. Zum Auswählen des Richtigen kann wieder der oben erwähnte Hash-Algorithmus verwendet werden.
-
Wenn der Direktnachrichtenserver die Anfrage empfängt, wird ein asynchrones Ereignis, das die Direktnachricht enthält, zu dem Frontendserver gesendet. Auf den Empfang des Ereignisses hin, prüft der Frontendserver, ob der Empfänger der Nachricht eine gültige Sitzung hat, d. h., ob der Empfänger angemeldet ist (Login). Ist dies der Fall, wird das Ereignis in einer Warteschlange in dem Sitzungsserver angeordnet und eine kurze Nachricht wird zu dem Client verschoben. Ein WAP-Push kann für Mobile-Clients verwendet werden und ein UDP-Paket kann für PC-Clients verwendet werden. Wenn der Client diese Nachricht empfängt, wird das Ereignis von dem Server durch eine HTTP-POST geholt, hierdurch das Ereignis aus der Warteschlange entfernend. Wenn der empfangende Benutzer keine gültige Sitzung hat, wird die in dem Ereignis enthaltene Nachricht in dem Direktnachrichtenserver gespeichert, welche dann von dem Empfänger auf sein sich Anmelden hin (Login) wiedergewonnen werden kann.
-
Eine beispielhafte Prozedur des Behandelns einer Diensteanfrage wird nun kurz beschrieben unter Bezugnahme auf das in 4 gezeigte Ablaufdiagramm. Die Diensteanfrage wird in einem ersten Schritt 400 empfangen, wobei ein erster Server in einem Schritt 402 zugewiesen wird. Die Anfrage wird dann in dem zugewiesenen ersten Server in einem Schritt 404 verarbeitet. Daraufhin wird in einem Schritt 406 geprüft, ob die Anfrage erfordert, dass eine Speicheraufgabe ausgeführt wird. Wenn nicht, endet der Anfragenbehandlungsprozess in einem Schritt 408. Andernfalls wird ein zweiter Server in einem Schritt 410 zugewiesen und eine Speicheraufgabe wird entsprechend in einem Schritt 412 in diesem Server ausgeführt. Als nächstes wird geprüft, ob die Anfrage fernere Verarbeitung erfordert (in einem Schritt 414). Wenn nicht, endet der Anfragenbehandlungsprozess in einem Schritt 416. Andernfalls wird in einem Schritt 418 ein neuer erster Server zugewiesen und die Anfrage wird ferner in dem zugewiesenen ersten Server in einem Schritt 420 verarbeitet. Der neue erste Server kann derselbe sein wie der in dem früheren Schritt 402 zugewiesene, muss aber nicht.
-
Der Prozess kann nach Schritt 420 enden oder kann durch Zurückkehren zu Schritt 406 fortgesetzt werden, wie in der Figur durch einen unterbrochen dargestellten Pfeil gezeigt, um zu prüfen, ob eine fernere Speicheraufgabe ausgeführt werden muss, usw. Demnach kann abhängig von der Art des angefragten Dienstes die Anfrage zwischen den ersten und zweiten Servern hin und her gehandhabt werden.
-
Durch das Verwenden der beschriebenen Erfindung kann die Verarbeitungs- und Speicherbelastung in einem System von Servern derart effizient verteilt werden, dass Skalierbarkeit und Robustheit erzielt werden.
-
Die vorliegende Erfindung ermöglicht das Lastteilen in einer IP-Ebene und die Datenverteilung auf einer Anwendungsebene, was möglich ist zum linearen Skalieren. Die Rechenarbeit zum Auswählen, welcher Server zum Behandeln einer speziellen Anfrage zuzuweisen ist, kann mehr oder weniger direkt durchgeführt werden, was zu einer nur kleinen beschränkten Zusatzkapazität führt.
-
Die vorliegende Erfindung kann insbesondere mit großem Vorteil verwendet werden für Dienste, die im Zusammenhang mit ”Wireless Village Servers” bzw. Drahtlosstadtservern definiert sind, wie jene, die sich auf Direktnachrichten (Instant Messaging), Präsenzinformation (Presence Information) und geteilten Inhalt (Shared Content) beziehen. Jedoch ist die Erfindung nicht auf spezielle Diensteanwendungen beschränkt, sondern kann zum Ausführen irgendeiner Art von angefragten Dienst verwendet werden.
-
Während die Erfindung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen beschrieben worden ist, ist die Beschreibung nur zum Erläutern des Erfindungskonzeptes gedacht und sollte nicht als den Schutzbereich der Erfindung einschränkend betrachtet werden. Verschiedene Alternativen, Modifikationen und Äquivalente können verwendet werden, ohne vom Gedanken der Erfindung abzuweichen, welcher in den beiliegenden Patentansprüchen definiert ist.