DE10297645T5 - Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern - Google Patents

Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern Download PDF

Info

Publication number
DE10297645T5
DE10297645T5 DE10297645T DE10297645T DE10297645T5 DE 10297645 T5 DE10297645 T5 DE 10297645T5 DE 10297645 T DE10297645 T DE 10297645T DE 10297645 T DE10297645 T DE 10297645T DE 10297645 T5 DE10297645 T5 DE 10297645T5
Authority
DE
Germany
Prior art keywords
server
servers
algorithm
disposition
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10297645T
Other languages
English (en)
Other versions
DE10297645B4 (de
Inventor
Stefan Willehadson
Anne Danne
Max Blommé
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of DE10297645T5 publication Critical patent/DE10297645T5/de
Application granted granted Critical
Publication of DE10297645B4 publication Critical patent/DE10297645B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Verfahren des Behandelns kommender Diensteanfragen in einem eine Vielzahl von Servern umfassenden Serversystem und zur Lastverteilung zwischen den Servern,
gekennzeichnet durch die folgenden Schritte:
A) – Empfangen einer ersten Anfrage,
B) – Zuweisen eines ersten Servers aus einem Satz von ersten Servern unter Verwendung eines ersten Dispositionsalgorithmus zum Durchführen eines Verarbeitungsauftrags für die empfangene Diensteanfrage, wobei der erste Dispositionsalgorithmus im Stande ist, irgend einen ersten Server in dem Satz von ersten Servern auszuwählen, und
C) – Zuweisen eines zweiten Servers aus einem Satz von zweiten Servern unter Verwendung eines zweiten Dispositionsalgorithmus, zum Durchführen eines Speicherauftrags für die empfangene Diensteanfrage, wobei der zweite Dispositionsalgorithmus imstande ist, einen spezifischen zweiten Server in dem Satz von zweiten Servern auszuwählen.

Description

  • 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:0206: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)

Claims (21)

  1. Verfahren des Behandelns kommender Diensteanfragen in einem eine Vielzahl von Servern umfassenden Serversystem und zur Lastverteilung zwischen den Servern, gekennzeichnet durch die folgenden Schritte: A) – Empfangen einer ersten Anfrage, B) – Zuweisen eines ersten Servers aus einem Satz von ersten Servern unter Verwendung eines ersten Dispositionsalgorithmus zum Durchführen eines Verarbeitungsauftrags für die empfangene Diensteanfrage, wobei der erste Dispositionsalgorithmus im Stande ist, irgend einen ersten Server in dem Satz von ersten Servern auszuwählen, und C) – Zuweisen eines zweiten Servers aus einem Satz von zweiten Servern unter Verwendung eines zweiten Dispositionsalgorithmus, zum Durchführen eines Speicherauftrags für die empfangene Diensteanfrage, wobei der zweite Dispositionsalgorithmus imstande ist, einen spezifischen zweiten Server in dem Satz von zweiten Servern auszuwählen.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der erste Dispositionsalgorithmus ein zyklischer Warteschlangenalgorithmus ist.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der zweite Dispositionsalgorithmus ein Hash-Algorithmus ist.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass die Verwendung des zweiten Dispositionsalgorithmus im Schritt C) das Erlangen einer Hash-Zahl aus einem Benutzerkennzeichen einschließt und das Berechnen einer Serverkennzahl aus der erlangten Hash-Zahl.
  5. Verfahren nach Anspruch 4, gekennzeichnet durch das Verwenden des folgenden Algorithmus: Serverkennzahl = 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.
  6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass der erste Server einer IP-Schicht zugewiesen ist, wobei der erste Server gedacht ist und konfiguriert ist für das Behandeln von Anfragen in unterschiedlichen Protokollen.
  7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass der zweite Server einer Anwendungsschicht zugewiesen ist, wobei der zweite Server gedacht ist und konfiguriert zum Behandeln von Speicheraufträgen in unterschiedlichen Diensteanwendungen.
  8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass der Verarbeitungsauftrag eines einbezieht aus der Gruppe bestehend aus: Analysieren der empfangenen Diensteanfrage, Verarbeiten von Daten und Ablaufenlassen gewisser Anwendungen zum Bereitstellen des angefragten Dienstes.
  9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass der Speicherauftrag eines einbezieht aus der Gruppe bestehend aus: Speichern neuer Daten, Aktualisieren bereits gespeicherter Daten, und Holen gespeicherter Daten.
  10. Verfahren nach einem der Ansprüche 1 bis 9, gekennzeichnet durch den weiteren Schritt: D) – Zuweisen eines ersten Servers aus dem Satz von ersten Servern unter Verwendung eines dritten Dispositionsalgorithmus zum Durchführen eines weiteren Verarbeitungsauftrags für die empfangene Diensteanfrage, wobei der dritte Dispositionsalgorithmus imstande ist, irgendeinen ersten Server auszuwählen.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass der dritte Dispositionsalgorithmus derselbe ist wie der erste Dispositionsalgorithmus.
  12. Eine Vielzahl von Servern umfassendes Serversystem zum Behandeln kommender Diensteanfragen, gekennzeichnet durch – einen Zugangsknoten – einen Satz von ersten Servern, die imstande sind, mindestens einen gemeinsamen Verarbeitungsauftrag auszuführen, und – einen Satz von zweiten Servern, die in der Lage sind, mindestens einen gemeinsamen Speicherauftrag auszuführen, wobei der Zugangsknoten mit jeweiligen ersten Servern verbunden ist und jeder erste Server mit jeweiligen zweiten Servern verbunden ist, wobei der Zugangsknoten konfiguriert ist zum Verwenden eines ersten Dispositionsalgorithmus zum Zuweisen irgendeines ersten Servers in dem Satz von ersten Servern zum Ausführen eines Verarbeitungsauftrags für eine empfangene Diensteanfrage, und wobei der erste Server konfiguriert ist zum Verwenden eines zweiten Dispositionsalgorithmus zum Zuweisen eines spezifischen zweiten Servers in dem Satz von zweiten Servern zum Durchführen eines Speicherauftrags für eine empfangene Diensteanfrage.
  13. Serversystem nach Anspruch 12, dadurch gekennzeichnet, dass der zweite Server gedacht ist zum Speichern von Aufträgen in unterschiedlichen Diensteanwendungen und mindestens eines umfasst aus der Gruppe bestehend aus: Sitzungsservern, Sofortmeldungsservern und Präsenz-Servern.
  14. Serversystem nach Anspruch 12 oder 13, dadurch gekennzeichnet, dass die ersten Server aufgeteilt sind in unterschiedliche Gruppen für Anfragen in unterschiedlichen Protokollen.
  15. Serversystem nach Anspruch 14, dadurch gekennzeichnet, dass eine erste Gruppe erster Server konfiguriert ist zum Behandeln von HTTP-Anfragen und eine zweite Gruppe erster Server konfiguriert ist zum Behandeln von HTTPS-Anfragen, wobei der erste Dispositionsalgorithmus innerhalb einer der Gruppen erster Server verwendet wird abhängig von dem Diensteanfragenprotokoll.
  16. Serversystem nach einem der Ansprüche 12 bis 15, dadurch gekennzeichnet, dass der Zugangsknoten konfiguriert ist zum Verwenden eines zyklischen Warteschlangenalgorithmus als ersten Dispositionsalgorithmus.
  17. Serversystem nach einem der Ansprüche 12 bis 16, dadurch gekennzeichnet, dass jeder erste Server konfiguriert ist zum Verwenden eines Hash-Algorithmus als zweiten Dispositionsalgorithmus.
  18. Serversystem nach Anspruch 17, dadurch gekennzeichnet, dass jeder erste Server konfiguriert ist zum Verwenden des folgenden Hash-Algorithmus: Serverkennzahl = 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.
  19. Serversystem nach einem der Ansprüche 12 bis 18, dadurch gekennzeichnet, dass jeder zweite Server konfiguriert ist zum Verwenden eines dritten Dispositionsalgorithmus zum Zuweisen irgendeines ersten Servers zum Durchführen eines ferneren Verarbeitungsauftrags.
  20. Serversystem nach Anspruch 19, dadurch gekennzeichnet, dass der dritte Dispositionsalgorithmus derselbe ist, wie der erste Dispositionsalgorithmus.
  21. Serversystem nach einem der Ansprüche 12 bis 20, dadurch gekennzeichnet, dass der Zugangsknoten einen ersten Zugangsknoten umfasst, konfiguriert als Normalarbeitsknoten zum Behandeln von kommenden Anfragen, und einen zweiten Zugangsknoten, konfiguriert zum Überwachen der Aktivitäten des ersten Knotens und zum Übernehmen des Behandelns von Aufträgen, wenn der erste Knoten aus irgendwelchen Gründen ausfällt oder abgeschaltet ist.
DE10297645.7T 2002-02-13 2002-06-27 Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern Expired - Lifetime DE10297645B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE0200418-2 2002-02-13
SE0200418A SE0200418D0 (sv) 2002-02-13 2002-02-13 A method and apparatus for computer load sharing and data distribution
PCT/SE2002/001280 WO2003069474A1 (en) 2002-02-13 2002-06-27 A method and apparatus for load sharing and data distribution in servers

Publications (2)

Publication Number Publication Date
DE10297645T5 true DE10297645T5 (de) 2005-02-24
DE10297645B4 DE10297645B4 (de) 2016-08-18

Family

ID=20286946

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297645.7T Expired - Lifetime DE10297645B4 (de) 2002-02-13 2002-06-27 Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern

Country Status (6)

Country Link
US (1) US7844708B2 (de)
AU (1) AU2002314685A1 (de)
DE (1) DE10297645B4 (de)
GB (1) GB2402780B (de)
SE (1) SE0200418D0 (de)
WO (1) WO2003069474A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484348B2 (en) * 2004-03-05 2013-07-09 Rockstar Consortium Us Lp Method and apparatus for facilitating fulfillment of web-service requests on a communication network
US8051483B2 (en) 2004-03-12 2011-11-01 Fortinet, Inc. Systems and methods for updating content detection devices and systems
CN1993959B (zh) * 2004-07-30 2013-03-27 艾利森电话股份有限公司 网络中安全的负载平衡的方法和***
WO2006107249A1 (en) 2005-04-04 2006-10-12 Telefonaktiebolaget Lm Ericsson (Publ) A method and apparatus for distributing load on application servers
EP1897317A1 (de) * 2005-06-23 2008-03-12 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Anordnung und verfahren bezüglich lastverteilung
US9311398B2 (en) * 2005-11-15 2016-04-12 Ebay Inc. Method and system to process navigation information
EP1960875A1 (de) * 2005-12-15 2008-08-27 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Verfahren und vorrichtung zur lastverteilung in mehrprozessor-servern
US9104962B2 (en) * 2007-03-06 2015-08-11 Trion Worlds, Inc. Distributed network architecture for introducing dynamic content into a synthetic environment
US8898325B2 (en) * 2007-03-06 2014-11-25 Trion Worlds, Inc. Apparatus, method, and computer readable media to perform transactions in association with participants interacting in a synthetic environment
US20090157817A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Using an unsynchronized event pool to improve performance of an event driven im gateway
KR20120123179A (ko) * 2009-04-10 2012-11-08 알까뗄 루슨트 네트워크 도메인들에 걸친 과금 기록들의 분배적 상관
CN101924782A (zh) * 2009-06-16 2010-12-22 鸿富锦精密工业(深圳)有限公司 网络资源服务***及方法
US8904395B2 (en) 2010-07-26 2014-12-02 International Business Machines Corporation Scheduling events in a virtualized computing environment based on a cost of updating scheduling times or mapping resources to the event
CN104937546B (zh) 2012-10-12 2018-01-23 思杰***有限公司 用于根据重启调度执行机器重启的方法和装置
US9313087B2 (en) * 2013-01-29 2016-04-12 Stg Interactive, S.A. Distributed computing architecture
CN103338228B (zh) * 2013-05-30 2016-12-28 江苏大学 基于双加权最小连接算法的云计算负载均衡调度算法
CN109614209B (zh) * 2018-10-26 2023-09-05 创新先进技术有限公司 一种任务处理方法、应用服务器及***
CN110351370B (zh) * 2019-04-24 2022-06-21 上海数据交易中心有限公司 一种数据配送方法及装置
CN110209488B (zh) * 2019-06-10 2021-12-07 北京达佳互联信息技术有限公司 任务执行方法、装置、设备、***及存储介质
US11580165B2 (en) * 2019-08-06 2023-02-14 Twitter, Inc. Event producer system of a messaging platform for delivering real-time messages
CN113094177A (zh) * 2021-04-21 2021-07-09 上海商汤科技开发有限公司 一种任务分发***、方法、装置、计算机设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134532A (en) * 1997-11-14 2000-10-17 Aptex Software, Inc. System and method for optimal adaptive matching of users to most relevant entity and information in real-time
US6601084B1 (en) * 1997-12-19 2003-07-29 Avaya Technology Corp. Dynamic load balancer for multiple network servers
US6839324B1 (en) * 1999-03-30 2005-01-04 Cisco Technology, Inc. Method and apparatus providing dial on demand scaling
AU5776900A (en) * 1999-06-30 2001-01-31 Biztro, Inc. Improved scalable architecture and methods for e-commerce applications in a clustered computer system
US6754706B1 (en) * 1999-12-16 2004-06-22 Speedera Networks, Inc. Scalable domain name system with persistence and load balancing
US6629105B1 (en) * 2000-02-19 2003-09-30 Novell, Inc. Facilitating user administration of directory trees
US6976090B2 (en) * 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
WO2001081829A1 (en) * 2000-04-27 2001-11-01 Brio Technology, Inc. Method and apparatus for processing jobs on an enterprise-wide computer system
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US7184415B2 (en) * 2001-12-07 2007-02-27 Telefonaktiebolaget Lm Ericsson (Publ) Service access system and method in a telecommunications network

Also Published As

Publication number Publication date
GB2402780A (en) 2004-12-15
US7844708B2 (en) 2010-11-30
SE0200418D0 (sv) 2002-02-13
WO2003069474A1 (en) 2003-08-21
US20050091653A1 (en) 2005-04-28
GB0415834D0 (en) 2004-08-18
AU2002314685A1 (en) 2003-09-04
GB2402780B (en) 2005-06-01
DE10297645B4 (de) 2016-08-18

Similar Documents

Publication Publication Date Title
DE10297645B4 (de) Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern
US20200296185A1 (en) Service request management
DE60216918T2 (de) Verfahren und computersystem zur auswahl eines randservercomputers
DE60210733T2 (de) System und Verfahren zur Überlastregelung in Netzwerken
DE60101841T2 (de) Verfahren und vorrichtung zum verteilen der last in einer rechnerumgebung
DE60029879T2 (de) System zur mehrschichtigen Bereitstellung in Computernetzwerken
DE69835400T2 (de) Netzbelastungsausgleich für Mehrrechner Anbieter
US20210311781A1 (en) Method and system for scalable job processing
DE60308700T2 (de) Dynamische fernkonfiguration eines webservers zur bereitstellung von kapazität auf anfrage
DE602005004334T2 (de) Nms zur Verarbeitung von Multi-Server Ereignissen
DE60038170T2 (de) Verfahren und vorrichtung zur verwaltung der serversbandbreitenutzung
CN100486170C (zh) 传送前摄http内容的方法和设备
EP1559038B1 (de) Verfahren zum vorabübertragen strukturierter datenmengen zwischen einer clienteinrichtung und einer servereinrichtung
DE60100624T2 (de) Verfahren und vorrichtung zum verbessern der verwendung eines betriebsmittels auf einem verteilten klient
US20070061282A1 (en) Data network information distribution
DE10205108A1 (de) System und Verfahren zum Zugreifen auf Softwarekomponenten in einer verteilten Netzwerkumgebung
DE60132360T2 (de) Verwaltung von netzwerk-verkehr durch anwendung einer hashfunktion
CN108733821A (zh) 一种监控视频截图的分发与展示方法及***
DE602004010224T2 (de) Vorrichtung zur Verkehrssteuerung und entsprechendes Servicesystem
CN106598966B (zh) 一种网页处理方法和装置
DE60021812T2 (de) System und Verfahren zur Zurückweisung von Dienstanforderungen in einem Nachrichtendienstsystem
CN111193789A (zh) 订阅信息推送方法、装置、计算机设备和可读存储介质
DE602004011211T2 (de) Verfahren zur anpassung der dienstortplazierung auf der basis von aus dienstknoten empfangenen neueren daten und aktionen des dienstortsmanagers
DE202008006243U1 (de) Vorrichtung zum Benachrichtigen eines Adressaten einer Kommunikationssitzung
DE102021109509A1 (de) System und verfahren zur rekonfiguration eines netzwerks unter verwendung von netzvverkverkehrsvergleichen

Legal Events

Date Code Title Description
8181 Inventor (new situation)

Inventor name: BLOMME, MAX, H?SSELBY, SE

Inventor name: WILLEHADSON, STEFAN, UPPSALA, SE

Inventor name: DANNE, ANDERS, KISTA, SE

8110 Request for examination paragraph 44
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R071 Expiry of right