-
Verfahren
und Einrichtung zum Lastteilen und zur Datenverteilung in Servern.
-
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.
-
RESÜMEE DER
ERFINDUNG
-
Das
Ziel der vorliegenden Erfindung ist, die oben dargelegten Probleme
zu reduzieren oder zu eliminieren und ein effizientes Verteilen
von Verarbeitungs- und Speicherlast für kommende Diensteanfragen
bereitzustellen. Dieses Ziel und andere werden erreicht durch Bereitstellen
eines Verfahrens und einer Einrichtung zur Disposition von Verarbeitungs- und
Speicherlast in einem System mehrerer Server.
-
Eine
Diensteanfrage wird in einem Serversystem empfangen, das eine Vielzahl
von Server umfasst. Ein primärer
bzw. erster Server aus einem Satz von ersten Servern wird unter
Verwendung eines ersten Dispositionsalgorithmus zum Durchführen eines Verarbeitungsauftrags
für die
empfangene Diensteanfrage zugewiesen. Der erste Dispositionsalgorithmus
ist imstande, irgendeinen ersten Server aus dem Satz von ersten
Servern auszuwählen.
Ferner wird ein sekundärer
bzw. zweiter Server aus einem Satz von zweiten Servern unter Verwendung
eines zweiten Dispositionsalgorithmus zum Durchführen einer Speicheraufgabe
für die
empfangene Diensteanfrage zugewiesen. Der zweite Dispositionsalgorithmus
ist imstande, einen spezifischen zweiten Server in dem Satz von
zweiten Servern auszuwählen.
-
Der
erste Dispositionsalgorithmus ist vorzugsweise ein Round Robin-Algorithmus
bzw. ein zyklischer Warteschlangenalgoriuthmus und der zweite Dispositionsalgorithmus
ist vorzugsweise ein Hash-Algorithmus.
Das Verwenden des zweiten Dispositionsalgorithmus kann das Herleiten
einer Hash-Zahl aus einem Benutzerkennzeichen (Benutzer-ID) einschließen und
das Berechnen einer Server-Kennzahl (Server-ID-Zahl) aus der hergeleiteten Hash-Zahl.
Der folgende Algorithmus kann dann verwendet werden:
Server-Kennzahl=Hash(Benutzerkennzeichen)
modulo n 1)
wobei n die Zahl möglicher zweiter Server ist
und der Modulo-Operator
eine ganze Zahl zwischen 0 und n – 1 bereitstellt.
-
Wenn
ein fernerer Verarbeitungsauftrag für die empfangene Diensteanfrage
durchgeführt
werden muss, wird ein erster Server aus dem Satz von ersten Servern
unter Verwendung eines dritten Dispositionsalgorithmus zugewiesen,
der imstande ist, irgendeinen ersten Server auszuwählen. Der
dritte Dispositionsalgorithmus kann derselbe sein, wie der erste
Dispositionsalgorithmus.
-
Beim
Verwenden der Erfindung können
erste Server auf einer IP-Ebene bzw. Internet-Protokollebene zugewiesen
sein, wobei die ersten Server dazu gedacht und konfiguriert sind,
Anfragen in unterschiedlichen Protokollen zu behandeln. Zudem können die
zweiten Server auf einer Anwendungsebene zugewiesen sein, wobei
die zweiten Server dazu gedacht sind und konfiguriert sind, Speicheraufträge in unterschiedlichen
Diensteanwendungen zu behandeln.
-
Die
Verarbeitungsaufgabe kann irgendeines aus der Gruppe bestehend aus
Analysieren der empfangenen Diensteanfrage, Verarbeiten von Daten und
Ablaufenlassen gewisser Anwendungen zum Liefern des angefragten
Dienstes einbeziehen. Die Speicheraufgabe kann irgendeines aus der
Gruppe bestehend aus dem Speicher neuer Daten, dem Aktualisieren
bereits gespeicherter Daten und dem Holen von gespeicherten Daten
einbeziehen.
-
Die
Erfindung umfasst zudem ein Serversystem, das eine Vielzahl von
Servern zum Behandeln von kommenden Telekommunikationsdiensteanfragen
einschließt.
Das Serversystem schließt
einen Zugangsknoten ein, einen Satz von ersten Servern, die imstande
sind, mindestens einen Kommunikationsverarbeitungsauftrag auszuführen und
einen Satz von zweiten Servern, die imstande sind, mindestens eine
gemeinsame Speicheraufgabe auszuführen. Der Zugangsknoten ist
mit jedem der ersten Server verbunden und jeder erste Server ist
mit jedem zweiten Server verbunden. Der Zugangsknoten ist konfiguriert
zum Verwenden des ersten Dispositionsalgorithmus zum Zuweisen irgendeines
ersten Servers zum Ausführen
eines Verarbeitungsauftrags für
eine empfangene Diensteanfrage. Jeder erste Server ist konfiguriert
zum Verwenden des zweiten Dispositionsalgorithmus zum Zuweisen eines
spezifischen zweiten Servers zum Ausführen eines Speicherauftrags
für eine
empfangene Diensteanfrage, wobei der spezifische zweite Server einem
Client entspricht oder einer Sitzung, die in diesem Speicherauftrag einbezogen
sind.
-
Jeder
zweite Server mag ferner zum Verwenden des dritten Dispositionsalgorithmus
zum Zuweisen irgendeines Primärservers
zum Durchführen
einer ferneren Verarbeitungsaufgabe konfiguriert sein.
-
Die
Primärserver
können
aufgeteilt sein in unterschiedliche Gruppen für Anfragen in unterschiedlichen
Protokollen, wobei eine erste Gruppe konfiguriert ist zum Behandeln
von HTTP-Anfragen (Hyper-Text-Transfer-Protokoll-Anfragen)
und eine zweite Gruppe konfiguriert ist zum Behandeln von HTTPS-Anfragen (sichere
HTTP-Anfragen). Der erste Dispositionsalgorithmus wird dann für eine Anfrage
innerhalb einer der Primärservergruppen
verwendet abhängig
von dem Diensteanfragenprotokoll.
-
Der
Zugangsknoten kann ferner einen Primär- bzw. ersten Zugangsknoten
umfassen, der konfiguriert ist als normal arbeitender Knoten zum
Behandeln kommender Anfragen, und einen Sekundär- bzw. zweiten Zugangsknoten,
der konfiguriert ist zum Überwachen
der Aktivitäten
des ersten Knotens. Der zweite Zugangsknoten ist konfiguriert, um
die Behandlung von Anfragen zu übernehmen,
wenn der erste Knoten aus irgendwelchen Gründen ausfällt und abgeschaltet ist.
-
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
(HTTP-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.
-
ZUSAMMENFASSUNG
-
Ein
Verfahren und eine Einrichtung zur Lastverteilung zwischen einer
Vielzahl von Servern zum Behandeln kommender Diensteanfragen in
einem Serversystem 200. Wenn eine Diensteanfrage in einem
Zugangsknoten 202 empfangen wird, wird ein erster Server
aus einem Satz von ersten Servern 204 unter Verwendung
eines ersten Dispositionsalgorithmus zum Ausführen eines Verarbeitungsauftrags
für die
empfangene Diensteanfrage zugewiesen. Der erste Dispositionsalgorithmus
ist imstande, irgendeinen Primärserver
auszuwählen.
Ferner wird ein zweiter Server aus einem Satz zweiter Server 206 unter Verwendung
eines zweiten Dispositionsalgorithmus zum Ausführen einer Speicheraufgabe
für die
empfangene Diensteanfrage zugewiesen. Der zweite Dispositionsalgorithmus
ist imstande, eine spezifischen zweiten Server für die Speicheraufgabe auszuwählen.
-
(2)