DE202018102031U1 - Transparente Aktualisierung eines Systemdienstes oder einer Anwendung - Google Patents

Transparente Aktualisierung eines Systemdienstes oder einer Anwendung Download PDF

Info

Publication number
DE202018102031U1
DE202018102031U1 DE202018102031.5U DE202018102031U DE202018102031U1 DE 202018102031 U1 DE202018102031 U1 DE 202018102031U1 DE 202018102031 U DE202018102031 U DE 202018102031U DE 202018102031 U1 DE202018102031 U1 DE 202018102031U1
Authority
DE
Germany
Prior art keywords
application instance
application
state information
instance
processor
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.)
Active
Application number
DE202018102031.5U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202018102031U1 publication Critical patent/DE202018102031U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

System zum Aktualisieren einer Anwendung ohne Neustart, das umfasst:einen Prozessor; undeinen Speicher, auf dem Befehle gespeichert sind, um den Prozessor zu Folgendem zu veranlassen:Ausführen einer ersten Anwendungsinstanz;Starten einer zweiten Anwendungsinstanz, während die erste Anwendungsinstanz noch ausgeführt wird, wobei die zweite Anwendungsinstanz eine aktualisierte Version der ersten Anwendungsinstanz umfasst;Übertragen einer ersten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz;Erklären der Bereitschaft zur Aktivierung durch die zweite Anwendungsinstanz als Antwort auf den Abschluss der Übertragung der ersten Menge von Zustandsinformationen;Deaktivieren der ersten Anwendungsinstanz, wobei die Deaktivierung umfasst:Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz; undFreigeben von Einzelzugriffs-Betriebsmitteln durch die erste Anwendungsinstanz;Aktivieren der zweiten Anwendungsinstanz, wobei die Aktivierung umfasst:Empfangen der zweiten Menge von Zustandsinformationen; undZugreifen auf die Einzelzugriffs-Betriebsmittel;als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz, Erklären durch die zweite Anwendungsinstanz, dass die Aktivierung abgeschlossen ist; undBeenden der ersten Anwendungsinstanz.

Description

  • Hintergrund
  • In Systemen mit langer Laufzeit ist es oft notwendig, einen Dienst oder eine Anwendung zu aktualisieren, um Fehlerbehebungen, neue Merkmale und/oder Leistungsverbesserungen zu integrieren. Herkömmlicherweise umfassen Aktualisierungen ein Stoppen des Dienstes, ein Durchführen der Änderung und ein Neustarten des Dienstes in drei verschiedenen Schritten. Da dieser Prozess den Dienst für eine bestimmte Zeitspanne außer Funktion setzt, ist die Aktualisierung nicht transparent und kann den Anwender stören.
  • Durch das Gebrauchsmuster und den Gegenstand des Gebrauchsmusters sollen gemäß den Anforderungen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren geschützt werden. Wenn in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtung oder Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz angestrebt wird
  • Zusammenfassung
  • Mindestens ein Aspekt bezieht sich auf ein System zum Aktualisieren einer Anwendung ohne Neustart. Das System enthält einen Prozessor und einen Speicher, auf dem Befehle gespeichert sind. Die Befehle veranlassen den Prozessor dazu, eine erste Anwendungsinstanz auszuführen. Die Befehle veranlassen den Prozessor dazu, eine zweite Anwendungsinstanz zu starten, während die erste Anwendungsinstanz noch ausgeführt wird. Die zweite Anwendungsinstanz umfasst eine aktualisierte Version der ersten Anwendungsinstanz. Die Befehle veranlassen den Prozessor dazu, eine erste Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz zu übertragen. Die Befehle veranlassen den Prozessor dazu, als Antwort auf den Abschluss der Übertragung der ersten Menge von Zustandsinformationen durch die zweite Anwendungsinstanz die Bereitschaft zur Aktivierung zu erklären. Die Befehle veranlassen den Prozessor dazu, die erste Anwendungsinstanz zu deaktivieren. Die Deaktivierung umfasst ein Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz. Die Deaktivierung umfasst ein Freigeben von Einzelzugriffs-Betriebsmitteln durch die erste Anwendungsinstanz. Die Befehle veranlassen den Prozessor dazu, die zweite Anwendungsinstanz zu aktivieren. Die Aktivierung umfasst ein Empfangen der zweiten Menge von Zustandsinformationen und ein Zugreifen auf die Einzelzugriffs-Betriebsmittel. Die Befehle veranlassen den Prozessor dazu, als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz durch die zweite Anwendungsinstanz zu erklären, dass die Aktivierung abgeschlossen ist. Die Befehle veranlassen den Prozessor dazu, die erste Anwendungsinstanz zu beenden.
  • In einigen Implementierungen können die Befehle den Prozessor dazu veranlassen, eine Masteranwendung auszuführen, um Operationen zwischen der ersten Anwendungsinstanz und der zweiten Anwendungsinstanz zu koordinieren. Die Masteranwendung kann den Start der zweiten Anwendungsinstanz initiieren, von der zweiten Anwendungsinstanz die Erklärung der Bereitschaft zur Aktivierung empfangen, der ersten Anwendungsinstanz befehlen, sich bei Empfangen der Erklärung der Bereitschaft zu deaktivieren, eine Benachrichtigung von der ersten Anwendungsinstanz empfangen, dass die Deaktivierung abgeschlossen ist, der zweiten Anwendungsinstanz befehlen, sich bei Empfang der Benachrichtigung zu aktivieren, und die erste Anwendungsinstanz beenden. In einigen Implementierungen kann die Masteranwendung Operationen zwischen einer dritten Anwendungsinstanz und einer vierten Anwendungsinstanz, die eine Aktualisierung der dritten Anwendungsinstanz umfasst, koordinieren, wobei die dritte Anwendungsinstanz und die vierte Anwendungsinstanz einen anderen Dienst ausführen als die erste Anwendungsinstanz und die zweite Anwendungsinstanz.
  • In einigen Implementierungen kann die erste Anwendungsinstanz periodisch eine vorbestimmte Adresse oder einen Sockel auf das Vorhandensein der zweiten Anwendungsinstanz überprüfen.
  • In einigen Implementierungen kann die erste Menge von Zustandsinformationen umfassen: eine Liste von verbundenen Clients, Orte von gemeinsam genutzten Speicherbereichen, Dateideskriptoren und/oder Zugriff auf Kernel-Betriebsmittel.
  • In einigen Implementierungen kann die erste Menge von Zustandsinformationen in ein Zwischenformat geschrieben werden, das sowohl von der ersten Anwendungsinstanz als auch von der zweiten Anwendungsinstanz interpretiert werden kann.
  • In einigen Implementierungen kann mindestens eine Teilmenge der ersten Menge von Zustandsinformationen spezifischen Clients zugeordnet sein und die Teilmenge kann mittels Serialisierung in ein Zwischenformat übertragen werden, das sich von einer Form unterscheidet, die verwendet wird, um die spezifischen Clients zu bedienen.
  • In einigen Implementierungen kann die zweite Menge von Zustandsinformationen umfassen: Größe des TCP-Staufensters, Sequenzkennungen aller Pakete, die unterwegs sind, und/oder Sequenzkennungen aller Pakete, die empfangen worden sind, aber noch nicht bestätigt sind.
  • In einigen Implementierungen können die Befehle den Prozessor zu Folgendem veranlassen: Aufrechterhalten einer Ausfallperiode zwischen dem Beginn der Deaktivierung der ersten Anwendungsinstanz und dem Abschluss der Aktivierung der zweiten Anwendungsinstanz, während der weder die erste Anwendungsinstanz noch die zweite Anwendungsinstanz auf irgendwelche Anwendereingaben antworten.
  • Mindestens ein Aspekt ist auf ein Computerprogramm zum Implementieren eines Verfahrens zum Aktualisieren einer Anwendung ohne Neustart gerichtet. Das Verfahren umfasst ein Ausführen einer ersten Anwendungsinstanz durch einen Prozessor. Das Verfahren umfasst ein Starten einer zweiten Anwendungsinstanz durch den Prozessor, während die erste Anwendungsinstanz noch ausgeführt wird. Die zweite Anwendungsinstanz umfasst eine aktualisierte Version der ersten Anwendungsinstanz. Das Verfahren umfasst ein Übertragen einer ersten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz durch den Prozessor. Das Verfahren umfasst ein Erklären der Bereitschaft zur Aktivierung durch die zweite Anwendungsinstanz als Antwort auf den Abschluss der Übertragung der ersten Menge von Zustandsinformationen. Das Verfahren umfasst ein Deaktivieren der ersten Anwendungsinstanz durch den Prozessor. Die Deaktivierung umfasst ein Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz. Die Deaktivierung umfasst ein Freigeben von Einzelzugriffs-Betriebsmitteln durch die erste Anwendungsinstanz. Das Verfahren umfasst ein Aktivieren der zweiten Anwendungsinstanz durch den Prozessor. Die Aktivierung umfasst ein Empfangen der zweiten Menge von Zustandsinformationen und ein Zugreifen auf die Einzelzugriffs-Betriebsmittel. Das Verfahren umfasst als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz ein Erklären, dass die Aktivierung abgeschlossen ist, durch die zweite Anwendungsinstanz. Das Verfahren umfasst ein Beenden der ersten Anwendungsinstanz durch den Prozessor.
  • In einigen Implementierungen kann das von dem Computerprogramm implementierte Verfahren ein Ausführen einer Masteranwendung durch den Prozessor umfassen, um Operationen zwischen der ersten Anwendungsinstanz und der zweiten Anwendungsinstanz zu koordinieren. Die Masteranwendung kann den Start der zweiten Anwendungsinstanz initiieren, von der zweiten Anwendungsinstanz die Erklärung der Bereitschaft zur Aktivierung empfangen, der ersten Anwendungsinstanz befehlen, sich bei Empfangen der Erklärung der Bereitschaft zu deaktivieren, eine Benachrichtigung von der ersten Anwendungsinstanz empfangen, dass die Deaktivierung abgeschlossen ist, der zweiten Anwendungsinstanz befehlen, sich bei Empfang der Benachrichtigung zu aktivieren, und die erste Anwendungsinstanz beenden. In einigen Implementierungen kann die Masteranwendung Operationen zwischen einer dritten Anwendungsinstanz und einer vierten Anwendungsinstanz, die eine Aktualisierung der dritten Anwendungsinstanz umfasst, koordinieren, wobei die dritte Anwendungsinstanz und die vierte Anwendungsinstanz einen anderen Dienst ausführen als die erste Anwendungsinstanz und die zweite Anwendungsinstanz.
  • In einigen Implementierungen kann das von dem Computerprogramm implementierte Verfahren ein periodisches Überprüfen einer vorbestimmten Adresse oder eines Sockels auf das Vorhandensein der zweiten Anwendungsinstanz durch die erste Anwendungsinstanz umfassen.
  • In einigen Implementierungen kann die erste Menge von Zustandsinformationen umfassen: eine Liste von verbundenen Clients, Orte von gemeinsam genutzten Speicherbereichen, Dateideskriptoren und/oder Zugriff auf Kernel-Betriebsmittel.
  • In einigen Implementierungen kann die erste Menge von Zustandsinformationen in ein Zwischenformat geschrieben werden, das sowohl von der ersten Anwendungsinstanz als auch von der zweiten Anwendungsinstanz interpretiert werden kann.
  • In einigen Implementierungen kann mindestens eine Teilmenge der ersten Menge von Zustandsinformationen spezifischen Clients zugeordnet sein und die Teilmenge kann mittels Serialisierung in ein Zwischenformat übertragen werden, das sich von einer Form unterscheidet, die verwendet wird, um die spezifischen Clients zu bedienen.
  • In einigen Implementierungen kann die zweite Menge von Zustandsinformationen umfassen: Größe des TCP-Staufensters, Sequenzkennungen aller Pakete, die unterwegs sind, und/oder Sequenzkennungen aller Pakete, die empfangen worden sind, aber noch nicht bestätigt sind.
  • In einigen Implementierungen kann das von dem Computerprogramm implementierte Verfahren umfassen, dass durch den Prozessor eine Ausfallperiode zwischen dem Beginn der Deaktivierung der ersten Anwendungsinstanz und der Beendigung der Aktivierung der zweiten Anwendungsinstanz aufrechterhalten wird, während der weder die erste Anwendungsinstanz noch die zweite Anwendungsinstanz auf irgendwelche Anwendereingaben antworten.
  • Mindestens ein Aspekt ist auf ein System zum Aktualisieren einer Anwendung ohne Neustart gerichtet. Das System enthält Verarbeitungsmittel und Speichermittel, auf denen Befehle gespeichert sind. Die Befehle veranlassen die Verarbeitungsmittel dazu, eine erste Anwendungsinstanz auszuführen. Die Befehle veranlassen die Verarbeitungsmittel dazu, eine zweite Anwendungsinstanz zu starten, während die erste Anwendungsinstanz noch ausgeführt wird. Die zweite Anwendungsinstanz umfasst eine aktualisierte Version der ersten Anwendungsinstanz. Die Befehle veranlassen die Verarbeitungsmittel dazu, eine erste Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz zu übertragen. Die Befehle veranlassen die Verarbeitungsmittel dazu, als Antwort auf den Abschluss der Übertragung der ersten Menge von Zustandsinformationen durch die zweite Anwendungsinstanz die Bereitschaft zur Aktivierung zu erklären. Die Befehle veranlassen die Verarbeitungsmittel dazu, die erste Anwendungsinstanz zu deaktivieren. Die Deaktivierung umfasst ein Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz. Die Deaktivierung umfasst ein Freigeben von Einzelzugriffs-Betriebsmitteln durch die erste Anwendungsinstanz. Die Befehle veranlassen die Verarbeitungsmittel dazu, die zweite Anwendungsinstanz zu aktivieren. Die Aktivierung umfasst ein Empfangen der zweiten Menge von Zustandsinformationen und ein Zugreifen auf die Einzelzugriffs-Betriebsmittel. Die Befehle veranlassen die Verarbeitungsmittel dazu, als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz durch die zweite Anwendungsinstanz zu erklären, dass die Aktivierung abgeschlossen ist. Die Befehle veranlassen die Verarbeitungsmittel dazu, die erste Anwendungsinstanz zu beenden.
  • Diese und andere Aspekte und Implementierungen sind nachfolgend im Einzelnen erörtert. Die vorstehenden Informationen und die folgende genaue Beschreibung enthalten veranschaulichende Beispiele verschiedener Aspekte und Implementierungen und stellen einen Überblick oder Rahmen zum Verständnis der Natur und des Charakters der beanspruchten Aspekte und Implementierungen dar. Die Zeichnungen bieten eine Veranschaulichung und ein weitergehendes Verständnis der verschiedenen Aspekte und Implementierungen und sind in dieser Beschreibung einbezogen und bilden einen Teil davon.
  • Figurenliste
  • Die beigefügten Zeichnungen sollen nicht maßstabsgetreu gezeichnet sein. Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente. Aus Gründen der Klarheit ist vielleicht nicht jede Komponente in jeder Zeichnung gekennzeichnet. In den Zeichnungen:
    • 1 ist ein Blockdiagramm eines Systems zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung;
    • 2 zeigt eine Abfolge von Ereignissen zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung;
    • 3 zeigt eine Abfolge von Ereignissen zum Verwenden einer Masteranwendung zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung;
    • 4 ist ein Ablaufdiagramm eines beispielhaften von einem Computerprogramm implementierten Verfahrens zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung; und
    • 5 ist ein Blockdiagramm, das eine allgemeine Architektur für ein Rechensystem darstellt, das zum Implementieren von Elementen der hier beschriebenen und dargestellten Systeme und von einem Computerprogramm implementierte Verfahren gemäß einer veranschaulichenden Implementierung verwendet werden kann.
  • Genaue Beschreibung
  • Diese Offenbarung bezieht sich im Allgemeinen auf ein System und ein von einem Computerprogramm implementiertes Verfahren, das die Aktualisierung einer Serveranwendung ermöglicht, ohne dass ein Neustart der Anwendung oder des Servers erforderlich ist. Die Aktualisierung kann daher für Server-Clients transparent oder nahezu transparent sein.
  • Systemdienste und Anwendungen mit langer Laufzeit benötigen gelegentliche oder periodische Fehlerbehebungen, Patches, Aktualisierungen oder Upgrades (allgemein als „Aktualisierungen“ bezeichnet). Traditionell wird die Anwendung in drei aufeinanderfolgenden Stufen gestoppt, aktualisiert und neu gestartet. Da der Dienst jedoch für einige Zeit pausiert wird, ist die Aktualisierung nicht transparent und für den Anwender störend.
  • Die vorgeschlagenen Systeme und von Computerprogrammen implementierten Verfahren beinhalten ein Starten einer neuen Version der Anwendung, während die alte Version der Anwendung noch läuft. Die neue Version kann alle Anwendungsaktualisierungen enthalten. Die neue Version kann alle Initialisierungen durchlaufen, die durchführbar sind, während die alte Version noch läuft. Dies kann ein Anfordern und/oder Empfangen einer beliebigen Programmierung aus externen Quellen, ein Empfangen einer Übertragung von Zustandsinformationen von der alten Version der Anwendung und/oder eine beliebige andere Initialisierung umfassen, die durchgeführt werden kann, ohne mit der alten Version in Konflikt zu geraten. Wenn die neue Version zur Aktivierung bereit ist, kann sie ihre Bereitschaft erklären. Die alte Version kann sich deaktivieren. Die Deaktivierung kann die minimale Menge an Arbeit umfassen, die erforderlich ist, um Betriebsmittel herunterzufahren oder zu übertragen, so dass die neue Version ohne Betriebsmittelkonflikte aktiviert werden kann. Wenn die Deaktivierung der alten Version abgeschlossen ist, kann die neue Version aktiviert werden. In einigen Implementierungen kann die Aktivierung ein Spiegelbild der Deaktivierung sein. Wenn die neue Version die Aktivierung abschließt, kann die alte Version langsam beendet werden; das heißt, eine Beendigung, die eine Anzahl von nicht-trivialen Operationen umfassen kann, kann zu solchen Zeitpunkten und auf eine solche Weise durchgeführt werden, dass andere Serveroperationen nicht gestört werden.
  • In einigen Implementierungen kann der Server eine zusätzliche „Masteranwendung“ ausführen, die die Anwendungsaktualisierung koordinieren oder ausführen kann. Der Master kann beispielsweise und ohne Beschränkung darauf die neue Version initiieren, die Aktivierungsbereitschaftsnachricht von der neuen Version empfangen, die alte Version benachrichtigen, sich zu deaktivieren, eine Nachricht empfangen, dass die alte Version deaktiviert ist, die neue Version benachrichtigen, sich zu aktivieren, und die alte Version beenden. Obwohl der Master nicht notwendig ist, kann er mehrere Vorteile bieten. Der Master kann eine relativ einfache Anwendung sein und kann daher sehr stabil sein. Der Master kann einen einzelnen Referenzpunkt für den Zustand einer Übertragung bereitstellen. Zum Beispiel kann der Master im Fall eines Fehlers vollständige Informationen über den Zustand der Aktualisierung haben. Der Master kann verschiedene Arten der Funktionszustandsprüfung und Invariantenprüfung durchführen, um sicherzustellen, dass die Aktualisierung erfolgreich und pünktlich geschieht. Wenn ein Schritt der Aktualisierung fehlschlägt, kann der Master unabhängig von der Natur des Ausfallzustands, in dem sich die Anwendung befindet, auf eine Zurückdreh- oder Eskalationsprozedur zurückgreifen. In einigen Implementierungen kann der Master beim Aktualisieren mehrerer verschiedener Anwendungen helfen und einen einzelnen Referenzpunkt für alle Aktualisierungen bereitstellen.
  • In einigen Implementierungen kann die Zustandsübertragung ein Schreiben eines Teils des oder des gesamten Zustands in ein Zwischenformat beinhalten, das sowohl von der alten Version als auch von der neuen Version interpretiert werden kann. Das Zwischenformat kann es ermöglichen, dass die binäre Darstellung des Zustands zwischen der alten und der neuen Version oder den Aktualisierungszwecken variiert. Eine Teilmenge des Zustands kann einen Zustand umfassen, der bestimmten Anwendern oder Clients zugeordnet ist. In einigen Implementierungen kann dieser Anwenderzustand mittels Serialisierung in ein Zwischenformat übertragen werden, das eine binäre Darstellung aufweist, die sich von derjenigen unterscheidet, die verwendet wird, um Anwendern zu dienen.
  • In einigen Implementierungen kann die Zustandsübertragung in mehreren Stufen erfolgen. Dies kann die Zeitdauer reduzieren, während der die Verfügbarkeit der Anwendung eingeschränkt ist. Eine erste Stufe der Zustandsübertragung kann während der Initialisierungsphase der neuen Anwendung stattfinden. Die erste Stufe kann eine Übertragung von Hintergrundzustandsinformationen wie etwa einer Liste von verbundenen Clients und Orte von Speicherbereichen, die von den Anwendungen und Clients gemeinsam genutzt werden, umfassen. Die Hintergrundzustandsinformationen können auch Dateideskriptoren und Zugriff auf Kernel-Betriebsmittel enthalten. Beginnend mit dem Start der ersten Stufe der Zustandsübertragung kann die Anwendung aufhören, invasivere Zustandsänderungen zu ermöglichen, wie z. B. zu ermöglichen, dass neue Clients eine Verbindung mit dem Server herstellen, oder neue Speicherregistrierungen zu akzeptieren; die Anwendung kann jedoch weiterhin bestehende Clients bedienen und es den vorhandenen Clients ermöglichen, neue Verkehrsflüsse zu öffnen. Diese vorübergehende Verringerung der Funktionalität ist möglicherweise nicht übermäßig störend, da diese Arten von Änderungen eher selten sind.
  • Eine zweite Stufe der Zustandsübertragung kann während der Deaktivierung der alten Version der Anwendung auftreten. Diese beinhaltet Zustandsinformationen, die für einen transparenten Service für Kunden benötigt werden; beispielsweise TCP-Zustandsinformationen, wie z. B. die Größe des TCP-Staufensters, welche Pakete unterwegs sind, und Sequenzkennungen von Paketen, die unterwegs sind oder empfangen werden, aber noch nicht bestätigt sind. Zu etwa der Zeit der zweiten Stufe der Zustandsübertragung kann die alte Version Betriebsmittel, die die beiden sich nicht teilen können, zu der neuen Version übertragen; beispielsweise Sockel und Ports, auf die beide Versionen der Anwendung nicht gleichzeitig zugreifen können. Während dieser Periode der Betriebsmittelübergabe und der Zustandsübertragung kann die Anwendung eine Ausfallperiode haben, während der sie nicht auf eingehende Pakete antworten und keine Pakete von sich aus senden kann. Daher wäre es vorteilhaft, diese Periode so kurz wie möglich zu halten. Das Aufteilen der Zustandsübertragungsoperationen auf zwei oder mehr Stufen kann dazu beitragen, dass die zweite Stufe der Zustandsübertragung kürzer gehalten wird. In einigen Implementierungen kann die Ausfallperiode unter 100 ms gehalten werden.
  • 1 ist ein Blockdiagramm eines Systems 100 zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung. Das System 100 enthält einen Server 110, einen Switch 120 und ein Netz 105. Der Server 110 umfasst einen Prozessor 130, einen Speicher 140 und eine Netzschnittstelle 150.
  • Der Server 110 ist ein Computerprogramm oder eine Computervorrichtung, die Dienste für Clientvorrichtungen bereitstellt. Die Dienste können eine Verarbeitung oder gemeinsame Nutzung von Daten für die Clients umfassen. Der Server 110 kann die Dienste eines Anwendungsservers, Datenbankservers, Dateiservers, Mailservers, Domainnamensystem-Servers (DNS-Servers), Spieleservers oder dergleichen bereitstellen. Zum Beispiel kann der Server 110 eine Nachrichtenweiterleitungsanwendung, Netztreiberanwendungen und Anwendungen für die Transportschichtunterstützung oder Netzschichtunterstützung ausführen. Andere Anwendungen können ständig aktive Systeme für virtuelle oder erweiterte Realität, Mobilanwendungen oder Fernproduktivitätsanwendungen wie gehostete virtuelle Maschinen umfassen. In einigen Implementierungen kann der Server 110 über einen oder mehrere Switches wie z. B. den Switch 120 eine Verbindung mit einem Netz wie etwa dem Netz 105 herstellen. Der Switch 120 kann ein Netzswitch oder System von Netzswitchen einschließlich eines Routers, Modems, Rand-Switches, Switches oben auf Racks oder dergleichen umfassen. In einigen Implementierungen kann der Server 110 über eine drahtlose, drahtgebundene oder optische Verbindung direkt mit dem Netz 105 verbunden sein. Zum Beispiel kann der Server 110 über einen Mobilfunk-LTE-Turm, einen mobilen Zugangspunkt oder einen Satelliten eine Verbindung mit dem Netz herstellen. Das Netz 105 kann ein sicheres lokales Netz (LAN) wie etwa ein Datenzentrumsnetz oder ein unsicheres Weitbereichsnetz (WAN) wie etwa das Internet darstellen.
  • Der Server 110 enthält einen Prozessor 130, einen Speicher 140 und eine Netzschnittstelle 150. Der Prozessor 130 kann ein Mikroprozessor oder ein System aus mehreren Mikroprozessoren sein. Der eine oder die mehreren Mikroprozessoren können eine Einkern- oder Mehrkernarchitektur umfassen. Der Prozessor 130 kann eine maßgeschneiderte oder programmierbare integrierte Schaltung (IC) wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC) oder eine feldprogrammierbares Gatteranordnung (FPGA) umfassen. Der Prozessor 130 kann einen Kernel, ein Betriebssystem und eine oder mehrere Anwendungen oder Dienste ausführen. Die Anwendungen umfassen Softwareprogramme zur direkten oder indirekten Verwendung durch Clients, die von dem Server 110 ausgeführt werden. Der Kernel und das Betriebssystem verwalten dagegen die Hardware- und Softwarebetriebsmittel des Servers 110 und stellen Dienste für die Anwendungen bereit.
  • Der Speicher 140 kann eine oder eine Kombination aus Festkörper-Datenspeichervorrichtungen, magnetischen oder optischen Datenspeichervorrichtungen umfassen. Der Speicher 140 kann einen Speicher mit wahlfreiem Zugriff und einen Direktzugriffsdatenspeicher umfassen und von einem beliebigen flüchtigen oder nichtflüchtigen Typ sein. Der Speicher 140 kann Daten und/oder Programmiercode enthalten. Der Programmiercode kann das Betriebssystem und jegliche Anwendungen oder Softwaredienste enthalten, die von dem Server 110 ausgeführt werden. Der Speicher 140 kann sowohl den Programmcode der auf dem Prozessor 130 ausgeführten Anwendungen als auch die von den Anwendungen verwendeten oder erzeugten Daten speichern.
  • Von Zeit zu Zeit kann es wünschenswert sein, eine Anwendung zu aktualisieren, um einen Fehler zu beheben, einen Patch oder eine Aktualisierung zu installieren oder auf eine neue Version umzusteigen (Operationen, die hier allgemein als „Aktualisierungen“ bezeichnet werden). Traditionell musste dazu in drei getrennten Schritten die Anwendung gestoppt, die Anwendung aktualisiert und die Anwendung neu gestartet werden. Bevor die Anwendung gestoppt wird, kann der Server 130 einen Fixpunkt speichern, der nach dem Neustart in die aktualisierte Anwendung geladen werden kann, damit die aktualisierte Anwendung die Dienste fortsetzen kann, die die Anwendung vor der Aktualisierung durchgeführt hat. Trotz der Fähigkeit, an der Stelle weiterzumachen, an der aufgehört wurde, ist die Anwendung immer noch offline und reagiert für eine bestimmte Zeit nicht mehr auf die Clients. In einigen Fällen kann es möglich sein, redundante Hardware zu verwenden und Clients auf eine sekundäre Maschine zu migrieren, damit die primäre Maschine die Anwendung aktualisieren kann, ohne den Dienst für die Clients zu unterbrechen. Dies erhöht die Kosten für das System sowohl aufgrund der zusätzlichen erforderlichen Infrastruktur als auch der Komplexität der Migration von Anwendungszuständen zwischen Maschinen. Es wäre daher vorteilhaft, die Anwendung auf der Maschine ohne Neustart aktualisieren zu können.
  • Um eine Anwendung mit minimaler Unterbrechung der Clientnutzung zu aktualisieren, kann der Server 110 zwei Anwendungsinstanzen auf dem Prozessor 130 ausführen. Das heißt, der Prozessor 130 kann gleichzeitig sowohl eine Anwendung A 132 als auch eine Anwendung B 134 ausführen. Der Prozessor 130 kann die Anwendung A 132 im Dienst von einem oder mehreren Clients ausführen. Wenn eine Aktualisierung der Anwendung erwünscht ist, kann der Prozessor 130 eine zweite Instanz der Anwendung als Anwendung B 134 starten. Die Anwendung A 132 und die Anwendung B 134 umfassen eine Programmierung für ein Protokoll zum Behandeln der gegenseitigen Erkennung und Zustandsübertragung. Das Protokoll kann definieren, wie sich die Anwendungsinstanzen gegenseitig erkennen und Zustandsinformationen austauschen, und ein Zwischenformat für Zustandsdaten umfassen, falls dies erforderlich ist. Sobald beide Anwendungsinstanzen ausgeführt werden, kann eine die andere mittels einer periodischen Überprüfung oder Abfrage einer bekannten Adresse wie etwa eines Unix-Domain-Sockels lokalisieren. Sobald die Anwendung A 132 und die Anwendung B 134 eine Kommunikationsverbindung aufgebaut haben, können sie mit der Übertragung der in dem Speicher 140 gespeicherten Zustandsinformationen beginnen. Die Zustandsinformationen enthalten Informationen über den Zustand der Anwendungsinstanz und Informationen über ihren Dienst für Clients. Die Zustandsinformationen können Hintergrundzustandsinformationen und Vordergrundzustandsinformationen umfassen. Hintergrundzustandsinformationen und Vordergrundzustandsinformationen sind willkürliche Ausdrücke, die in dieser Offenbarung verwendet werden, um verschiedene Aspekte von Zustandsinformationen basierend auf dem relativen Gewicht oder der Invasivität von Änderungen an dieser Zustandsinformationen zu unterscheiden. Zum Beispiel und ohne Beschränkung darauf können Hintergrundzustandsinformationen Informationen wie etwa eine Liste von verbundenen Clients, Orte von Speicherbereichen, die von einer Anwendungsinstanz und einem Client gemeinsam genutzt werden, Dateideskriptoren und Zugriff auf Kernel-Betriebsmittel umfassen. Vordergrundzustandsinformationen können zum Beispiel und ohne Beschränkung darauf die Größe des Staufensters des Stausteuerprotokolls (TCP), Sequenzkennungen aller Pakete, die unterwegs sind, und Sequenzkennungen von Paketen die empfangen worden sind, aber noch nicht bestätigt sind, umfassen. Im Allgemeinen sind Änderungen der Vordergrundzustandsinformationen tendenziell routinemäßig und häufig, wobei Änderungen bei jeder Anforderung, Antwort oder sogar jedem Paket auftreten, die bzw. das gesendet oder empfangen wird. Im Gegensatz dazu repräsentieren Änderungen an Hintergrundzustandsinformationen tendenziell Konfigurationsänderungen mit breiterer Wirkung wie z. B. ein Hinzufügen oder Löschen eines Clients und ein Zugreifen auf ein Systembetriebsmittel oder ein Freigeben desselben.
  • Die Anwendungsinstanzen können ihre Zustandsinformationen in dem Speicher 140 speichern. Die Anwendung A 132 kann ihre Zustandsinformationen in dem Speicher A 142 des Speichers 140 speichern und die Anwendung B 134 kann ihre Zustandsinformationen in dem Speicher B 144 speichern. Der Speicher A 142 und der Speicher B 144 können verschiedene Bereiche oder Register innerhalb eines zusammenhängenden Stücks von Speicherhardware darstellen oder können getrennte Teile von Speicherhardware darstellen, wie etwa separate Speicher-ICs. In einigen Implementierungen können sich der Speicher A 142 und der Speicher B 144 teilweise oder vollständig in einem gemeinsam genutzten Speicherbereich überlappen. In Implementierungen, die gemeinsam genutzte Speicherbereiche verwenden, muss möglicherweise eine Teilmenge der Zustandsinformationen überhaupt nicht übertragen werden. Während einer Zustandsübertragung können sich die Anwendungsinstanzen miteinander koordinieren, um die Zustandsinformationen von dem Speicher A 142 in den Speicher B 144 zu kopieren.
  • Obwohl beide Anwendungsinstanzen gleichzeitig online bleiben können, kann es während der Übertragung von Zustandsinformationen Perioden geben sein, in denen keine der Anwendungsinstanzen in der Lage ist, einige Zustandsinformationen zu aktualisieren. In diesen Perioden ist es möglicherweise nicht möglich, Konfigurationsänderungen vorzunehmen oder auf eingehende Anforderungen zu antworten. Um die Auswirkungen von Perioden reduzierter Funktionalität auf den Clientdienst zu minimieren, können die Zustandsinformationen in zwei oder mehr Stufen von der Anwendung A 132 zu der Anwendung B 134 übertragen werden. Zum Beispiel kann die Anwendung A 132 zuerst Hintergrundzustandsinformationen zu der Anwendung B 134 übertragen. Während der Übertragung von Hintergrundzustandsinformationen kann die Anwendung A 132 Versuche zurückweisen, den Hintergrundzustand zu ändern, um zu verhindern, dass die Hintergrundzustandsinformationen während der Anwendungsaktualisierung veralten. Da Änderungen des Hintergrundzustands relativ selten sind, besteht jedoch eine geringe Wahrscheinlichkeit, dass Clients in dieser Periode eine Unterbrechung der meisten Dienste erfahren. Sobald die Anwendung A 132 die Hintergrundzustandsinformationen zu der Anwendung B 134 übertragen hat, kann die Anwendung B 134 ihre Bereitschaft zur Aktivierung an die Anwendung A 134 erklären. Die Anwendung A 132 kann ihren Vordergrundzustand zu der Anwendung B 134 übertragen. Während der Übertragung von Vordergrundzustandsinformationen sind die Anwendungsinstanzen möglicherweise nicht in der Lage, eine zustandsbezogene Kommunikation aufrechtzuerhalten. In dieser Periode kann es zu einer Ausfallperiode kommen, da die Anwendung A 132 alle empfangenen Pakete ignoriert. Da die Vordergrundzustandsinformationen jedoch eine relativ kleine Datenmenge darstellen, kann die Übertragung der Vordergrundzustandsinformationen relativ schnell erfolgen. Die Ausfallperiode kann somit kurz gehalten werden. In einigen Implementierungen kann die Ausfallperiode auf weniger als 10 ms beschränkt werden. In einigen Implementierungen kann die Ausfallperiode auf weniger als 20 ms, 50 ms oder 100 ms beschränkt werden. Die Operationen einer Anwendungsaktualisierung sind weiter unten unter Bezugnahme auf 2 beschrieben.
  • In einigen Implementierungen kann der Server 110 zusätzlich eine Masteranwendung 136 auf dem Prozessor 130 ausführen. Der Master 136 kann Operationen zwischen der Anwendung A 132 und der Anwendung B 134 koordinieren. Beispielsweise und ohne Beschränkung darauf kann der Master 136 die Anwendung B initiieren 134, eine Aktivierungsbereitschaftsnachricht von der Anwendung B 134 empfangen, die Anwendung A 132 benachrichtigen, sich zu deaktivieren, eine Nachricht empfangen, dass die Anwendung A 132 deaktiviert ist, die Anwendung B 134 benachrichtigen, sich zu aktivieren, und Anwendung A 132 beenden. Obwohl der Master 136 nicht für alle Implementierungen erforderlich ist, kann er mehrere Vorteile bieten. Der Master 136 kann eine relativ einfache zustandslose Anwendung sein und kann daher sehr stabil sein. Der Master 136 kann einen einzelnen Referenzpunkt für den Zustand einer Übertragung bereitstellen. Zum Beispiel kann der Master 136 im Falle eines Fehlers vollständige Informationen bezüglich des Zustands der Aktualisierung haben. Der Master 136 kann verschiedene Arten von Funktionszustandsüberprüfungen und Invariantenüberprüfungen durchführen, um sicherzustellen, dass die Aktualisierung erfolgreich und pünktlich erfolgt. Wenn ein Schritt der Aktualisierung fehlschlägt, kann der Master 136 unabhängig von der Natur des Ausfallzustands, in dem sich die Anwendung befindet, auf eine Zurückdreh- oder Eskalationsprozedur zurückgreifen. In einigen Implementierungen kann der Master 136 beim Aktualisieren mehrerer verschiedener Anwendungen oder Anwendungstypen helfen und einen einzelnen Referenzpunkt für alle Aktualisierungen bereitstellen. Zum Beispiel kann der Master 136 Operationen zwischen einer dritten Anwendungsinstanz und einer vierten Anwendungsinstanz, die eine Aktualisierung der dritten Anwendungsinstanz umfasst, koordinieren. Die dritte Anwendungsinstanz und die vierte Anwendungsinstanz können einen anderen Dienst als die erste Anwendungsinstanz und die zweite Anwendungsinstanz ausführen. Die Operationen einer Anwendungsaktualisierung mit Unterstützung durch den Master 136 sind weiter unten unter Bezugnahme auf 3 beschrieben.
  • 2 zeigt einen Ablauf von Ereignissen 200 zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung. Der Ablauf 200 beschreibt Operationen und Kommunikation zwischen einer Anwendung A 202, einer Anwendung B 204, einem Speicher A 206 und einem Speicher B 208. Die Anwendung A 202 und die Anwendung B 204 können der Anwendung A 132 bzw. der Anwendung B 134 ähnlich sein, wie oben unter Bezugnahme auf 1 beschrieben sind. Ebenso können der Speicher A 206 und der Speicher B 208 dem Speicher A 142 bzw. dem Speicher B 144 ähnlich sein, wie sie oben unter Bezugnahme auf 1 beschrieben sind.
  • In Stufe 210 wird die Anwendung A 202, die zuvor gestartet worden ist, ausgeführt und bedient vermutlich Clients für einen gewissen Zeitraum.
  • In Stufe 212 wird die Anwendung B 204 gestartet. Die Anwendung A 202 und die Anwendung B 204 werden nun gleichzeitig ausgeführt, obwohl die Anwendung B 204 derzeit keine Clients bedient. Während der Stufe 212 lokalisiert die Anwendung B 204 die Anwendung A 202 (oder umgekehrt). Die Anwendungsinstanzen können sich über einen bekannten Port, z. B. einen Unix-Domain-Sockel, erkennen und miteinander verbinden. Wenn die Anwendungsinstanzen Kontakt herstellen, können sie die Zustandsübertragung initiieren.
  • In Stufe 214 ruft die Anwendung A 202 ihre Hintergrundzustandsinformationen aus dem Speicher A 206 ab. Dies kann ein Abrufen einer Liste von verbundenen Clients, der Orte von gemeinsam genutzten Speicherbereichen, Dateideskriptoren und ein Freigeben von Kernel-Betriebsmitteln umfassen. Nach Stufe 214 können weder die Anwendung A 202 noch die Anwendung B 204 Änderungen an den Hintergrundzustandsinformationen vornehmen, bis die Anwendung B 204 in Stufe 230 aktiviert wird. Während dieser Periode reduzierter Funktionalität ist die Anwendung A 202 möglicherweise nicht in der Lage, neue Verbindungen zu öffnen oder auf bestimmte Systembetriebsmittel, die von der Anwendung A 202 zu der Anwendung B 204 übertragen werden, zuzugreifen.
  • In Stufe 216 sendet die Anwendung A 202 die Hintergrundzustandsinformationen an die Anwendung B 204. In einigen Implementierungen kann die Anwendung A 202 die Hintergrundzustandsinformationen in ein Zwischenformat umwandeln, so dass sie sowohl von der Anwendung A 202 als auch von der Anwendung B 204 interpretiert werden können. In einigen Implementierungen ist mindestens eine Teilmenge der Hintergrundzustandsinformationen bestimmten Clientvorrichtungen zugeordnet. Die Anwendung A 202 kann die Hintergrundzustandsinformationen, die spezifischen Clientvorrichtungen zugeordnet sind, an die Anwendung B 204 mittels Serialisierung in einem Zwischenformat, das sich von einer Form unterscheidet, die zum Bedienen der Clientvorrichtungen verwendet wird, übertragen.
  • In Stufe 218 speichert die Anwendung B 202 die empfangenen Hintergrundzustandsinformationen in dem Speicher B 208.
  • In Stufe 220 erklärt die Anwendung B 204 ihre Bereitschaft zur Aktivierung.
  • In Stufe 222 ruft die Anwendung A 202 als Antwort auf das Empfangen der Erklärung von Anwendung B 204 ihre Vordergrundzustandsinformationen aus dem Speicher A 206 ab. Nach Stufe 222 können weder die Anwendung A 202 noch die Anwendung B 204 Änderungen an den Vordergrundzustandsinformationen vornehmen, bis die Anwendung B 204 in Stufe 230 aktiviert wird. Während dieser Periode ignoriert die Anwendung A 202 alle eingehenden Pakete, was eine Ausfallperiode erzeugt.
  • In Stufe 224 sendet die Anwendung A 202 die Vordergrundzustandsinformationen an die Anwendung B 204. In einigen Implementierungen kann die Anwendung A 202 die Vordergrundzustandsinformationen in ein Zwischenformat umwandeln, so dass sie sowohl von der Anwendung A 202 als auch von der Anwendung B 204 interpretiert werden können. In einigen Implementierungen ist mindestens eine Teilmenge der Vordergrundzustandsinformationen spezifischen Clientvorrichtungen zugeordnet. Die Anwendung A 202 kann die Vordergrundzustandsinformationen, die bestimmten Clientvorrichtungen zugeordnet sind, an die Anwendung B 204 mittels Serialisierung in einem Zwischenformat, das sich von einer Form unterscheidet, die zum Bedienen der Clientvorrichtungen verwendet wird, übertragen.
  • In Stufe 226 speichert die Anwendung B 204 die empfangenen Vordergrundzustandsinformationen in dem Speicher B 208.
  • In Stufe 228 gibt die Anwendung A 202 Systembetriebsmittel frei. Dazu können Einzelanwender-Systembetriebsmittel gehören, auf die nicht mehr als eine Anwendung oder Anwendungsinstanz gleichzeitig zugreifen kann, z. B. bestimmte Ports, Peripherievorrichtungen oder Speicherorte. Die Anwendung B 204 kann auf diese Betriebsmittel zugreifen, wenn sie von der Anwendung A 202 freigegeben werden. Sobald die Anwendung B 204 auf alle freigegebenen Betriebsmittel zugegriffen hat, wird sie zur aktiven Anwendungsinstanz.
  • In Stufe 230 erklärt die Anwendung B 204 an die Anwendung A 202, dass die Aktivierung abgeschlossen ist. Die Anwendung B 204 kann damit beginnen, den Verkehr zu und von den Clients zu verarbeiten, wodurch die Sperrzeit beendet wird.
  • In Stufe 232 kann die Anwendung A 202 beendet werden. Die Beendigung kann nichttriviale Operationen umfassen, die erhebliche Systembetriebsmittel erfordern. Um zu vermeiden, dass die Ausführung anderer Anwendungen gestört wird, kann der Server 110 die Anwendung A 202 langsam, d. h. mit niedriger Priorität während Perioden der Untätigkeit, beenden.
  • Die verschiedenen Stufen des Ablaufs 200 können in unterschiedlichen Reihenfolgen erfolgen, mehrere Stufen können gleichzeitig erfolgen, und sie können mehr oder weniger Stufen als die oben beschriebenen umfassen, ohne vom Umfang dieser Offenbarung abzuweichen.
  • 3 zeigt eine Abfolge von Ereignissen 300 zum Verwenden einer Masteranwendung 310 zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung. Der Ablauf 300 beschreibt Operationen und Kommunikation zwischen einer Anwendung A 302, einer Anwendung B 304, einem Speicher A 306, einem Speicher B 308 und einem Master 310. Die Anwendung A 302 und die Anwendung B 304 können der Anwendung A 132 bzw. der Anwendung B 134 ähnlich sein, wie sie oben unter Bezugnahme auf 1 beschrieben sind. Ebenso können der Speicher A 306 und der Speicher B 308 dem Speicher A 142 bzw. dem Speicher B 144 ähnlich sein, wie sie oben unter Bezugnahme auf 1 beschrieben sind. Der Master 310 kann dem oben unter Bezugnahme auf 1 beschriebenen Master 136 ähnlich sein.
  • In Stufe 312 wird die Anwendung A 302, die zuvor gestartet worden ist, ausgeführt und bedient vermutlich Clients für einen gewissen Zeitraum.
  • In Stufe 314 initiiert der Master 310 die Anwendung B 304. Die Anwendung A 302 und die Anwendung B 304 werden nun gleichzeitig ausgeführt, obwohl die Anwendung B 304 derzeit keine Clients bedient. In einigen Implementierungen kann die Anwendung B 304 die Anwendung A 302 über einen bekannten Port wie etwa einen Unix-Domain-Sockel erkennen (oder umgekehrt). Wenn die Anwendungsinstanzen Kontakt herstellen, können sie die Zustandsübertragung initiieren. In einigen Implementierungen wird der Master 310 jede Anwendungsinstanz lokalisieren und die Kommunikation zwischen ihnen vermitteln. Zu einem geeigneten Zeitpunkt kann der Master 310 die Zustandsübertragung initiieren, indem er der Anwendung A 302 befiehlt, ihren Hintergrundzustand aus dem Speicher A 306 abzurufen.
  • In Stufe 316 ruft die Anwendung A 302 ihre Hintergrundzustandsinformationen aus dem Speicher A 306 ab. Dies kann ein Abrufen einer Liste von verbundenen Clients, die Orte von gemeinsam genutzten Speicherbereichen, Dateideskriptoren und ein Freigeben von Kernel-Betriebsmitteln umfassen. Nach Stufe 316 können weder die Anwendung A 302 noch die Anwendung B 304 Änderungen an den Hintergrundzustandsinformationen vornehmen, bis die Anwendung B 304 in Stufe 336 aktiviert wird. Während dieser Periode reduzierter Funktionalität ist die Anwendung A 302 möglicherweise nicht in der Lage, neue Verbindungen zu öffnen oder auf bestimmte Systembetriebsmittel, die von der Anwendung A 302 zu der Anwendung B 304 übertragen werden, zuzugreifen.
  • In Stufe 318 sendet die Anwendung A 302 die Hintergrundzustandsinformationen an die Anwendung B 304. In einigen Implementierungen kann die Anwendung A 302 die Hintergrundzustandsinformationen an die Anwendung B 304 senden. In einigen Implementierungen kann die Anwendung A 302 die Hintergrundzustandsinformationen über den Master 310 an die Anwendung B 304 senden. In einigen Implementierungen kann die Anwendung A 302 die Hintergrundzustandsinformationen in ein Zwischenformat umwandeln, so dass sie sowohl von der Anwendung A 302 als auch von der Anwendung B 304 interpretiert werden können. In einigen Implementierungen ist mindestens eine Teilmenge der Hintergrundzustandsinformationen spezifischen Clientvorrichtungen zugeordnet. Die Anwendung A 302 kann die Hintergrundzustandsinformationen, die spezifischen Clientvorrichtungen zugeordnet sind, an die Anwendung B 304 mittels Serialisierung in einem Zwischenformat, das sich von einer Form unterscheidet, die zum Bedienen der Clientvorrichtungen verwendet wird, übertragen.
  • In Stufe 320 speichert die Anwendung B 302 die empfangenen Hintergrundzustandsinformationen in dem Speicher B 308.
  • In Stufe 322 erklärt die Anwendung B 304 ihre Bereitschaft zur Aktivierung durch Senden einer Erklärung an den Master 310. In einigen Implementierungen kann der Master 310 den Bereitschaftszustand der Anwendung B 304 durch periodisches Abfragen des Dateisystems bezüglich eines Signals oder Merkers, der von der Anwendung B 304 hinterlassen worden ist, erhalten.
  • In Stufe 324 sendet der Master 310 einen Befehl an die Anwendung A 302, mit der Deaktivierung zu beginnen. In einigen Implementierungen kann die Anwendung A 302 den Befehl zum Deaktivieren durch periodisches Abfragen des Dateisystems bezüglich eines Signals oder Merkers, der von dem Master 310 hinterlassen worden ist, erhalten.
  • In Stufe 326 ruft die Anwendung A 302 als Antwort auf das Empfangen des Deaktivierungsbefehls von dem Master 310 ihre Vordergrundzustandsinformationen aus dem Speicher A 306 ab. Nach Stufe 326 können weder die Anwendung A 302 noch die Anwendung B 304 Änderungen an den Vordergrundzustandsinformationen vornehmen, bis die Anwendung B 304 in Stufe 336 aktiviert wird. Während dieser Periode ignoriert die Anwendung A 302 alle eingehenden Pakete, wodurch eine Ausfallperiode erzeugt wird.
  • In Stufe 328 sendet die Anwendung A 302 die Vordergrundzustandsinformationen an die Anwendung B 304. In einigen Implementierungen kann die Anwendung A 302 die Vordergrundzustandsinformationen an die Anwendung B 304 senden. In einigen Implementierungen kann die Anwendung A 302 die Vordergrundzustandsinformationen über den Master 310 zu der Anwendung B 304 senden. In einigen Implementierungen kann die Anwendung A 302 die Vordergrundzustandsinformationen in ein Zwischenformat umwandeln, so dass sie sowohl von der Anwendung A 302 als auch von der Anwendung B 304 interpretiert werden können. In einigen Implementierungen ist mindestens eine Teilmenge der Vordergrundzustandsinformationen spezifischen Clientvorrichtungen zugeordnet. Die Anwendung A 302 kann die Vordergrundzustandsinformationen, die spezifischen Clientvorrichtungen zugeordnet sind, mittels Serialisierung in einem Zwischenformat, das sich von einer Form unterscheidet, die zum Bedienen der Clientvorrichtungen verwendet wird, an die Anwendung B 304 übertragen.
  • In Stufe 330 speichert die Anwendung B 304 die Vordergrundzustandsinformationen in dem Speicher B 308.
  • In Stufe 332 gibt die Anwendung A 302 Systembetriebsmittel frei. Dazu können Einzelanwender-Systembetriebsmittel gehören, auf die nicht mehr als eine Anwendung oder Anwendungsinstanz gleichzeitig zugreifen kann, z. B. bestimmte Ports, Peripherievorrichtungen oder Speicherorte. In einigen Implementierungen kann der Master 310 eine Benachrichtigung von der Anwendung A 302 empfangen, dass die Anwendung B 304 auf diese Betriebsmittel zugreifen kann, wenn sie von der Anwendung A 302 freigegeben werden. Sobald die Anwendung B 304 auf alle freigegebenen Betriebsmittel zugegriffen hat, kann sie zur aktiven Anwendungsinstanz werden.
  • In Stufe 334 kann die Anwendung A 302 den Master 310 darüber benachrichtigen, dass die Übertragung von Vordergrundzustandsinformationen und die Freigabe von Betriebsmitteln abgeschlossen sind.
  • In Stufe 336 kann der Master 310 nach dem Empfangen der Benachrichtigung von der Anwendung A 302, dass die Übertragung von Vordergrundzustandsinformationen und die Freigabe von Betriebsmitteln abgeschlossen ist, der Anwendung B befehlen, sich zu aktivieren.
  • In Stufe 338 erklärt die Anwendung B 304 an den Master 310, dass die Aktivierung abgeschlossen ist. Die Anwendung B 304 kann damit beginnen, den Verkehr zu und von den Clients zu verarbeiten, wodurch die Sperrzeit beendet wird.
  • In Stufe 340 befiehlt der Master 310 der Anwendung A 302, sich zu beenden. Die Beendigung kann nichttriviale Operationen umfassen, die erhebliche Systembetriebsmittel benötigen. Um die Ausführung anderer Anwendungen nicht zu stören, kann der Server 110 die Anwendung A 302 langsam, d. h. mit niedriger Priorität während Perioden der Untätigkeit, beenden.
  • Während der Anwendungsaktualisierung kann der Master 310 Zustandsinformationen bezüglich des Zustands der Anwendungsaktualisierung pflegen. Wenn die Aktualisierung an irgendeinem Punkt fehlschlägt, kann der Master 310 die Aktualisierung entweder von Anfang an oder von irgendeiner geeigneten Zwischenstufe aus erneut beginnen. Der Master 310 kann auch Zustandsinformationen bezüglich des Zustands der Anwendungsaktualisierung für andere Anwendungen, die auf dem Server 110 ausgeführt werden, bereitstellen. In einigen Implementierungen kann der Master 310 Aktualisierungen für mehrere Anwendungen entweder seriell oder gleichzeitig verwalten.
  • Die verschiedenen Stufen des Ablaufs 300 können in anderen Reihenfolgen erfolgen, mehrere Stufen können gleichzeitig erfolgen und sie können mehr oder weniger Stufen als die oben beschriebenen umfassen, ohne vom Umfang dieser Offenbarung abzuweichen.
  • 4 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 400 zum Aktualisieren einer Anwendung ohne Neustart gemäß einer veranschaulichenden Implementierung. Das Verfahren 400 umfasst ein Ausführen einer ersten Anwendungsinstanz (Stufe 410). Das Verfahren 400 umfasst ein Starten einer zweiten Anwendungsinstanz, während die erste Anwendungsinstanz noch ausgeführt wird (Stufe 420). Das Verfahren 400 umfasst ein Übertragen von Hintergrundzustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz (Stufe 430). Das Verfahren 400 umfasst ein Erklären der Bereitschaft zur Aktivierung durch die zweite Anwendungsinstanz als Antwort auf den Abschluss der Übertragung der Hintergrundzustandsinformationen (Stufe 440). Das Verfahren 400 umfasst ein Deaktivieren der ersten Anwendungsinstanz (Stufe 450). Das Verfahren 400 umfasst ein Aktivieren der zweiten Anwendungsinstanz (Stufe 460). Das Verfahren 400 umfasst als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz ein Erklären, dass die Aktivierung abgeschlossen ist, durch die zweite Anwendungsinstanz (Stufe 470). Das Verfahren 400 umfasst ein Beenden der ersten Anwendungsinstanz (Stufe 480).
  • Das Verfahren 400 umfasst ein Ausführen einer ersten Anwendungsinstanz (Stufe 410). Zu Beginn des Verfahrens 400 führt der Server 110 die erste Anwendungsinstanz auf dem Prozessor 130 aus. In einigen Implementierungen kann die erste Anwendungsinstanz periodisch versuchen, eine zweite Anwendungsinstanz zu erkennen. Die erste Anwendungsinstanz kann durch Überwachen einer bekannten Adresse versuchen, die zweite Anwendungsinstanz zu entdecken. Die erste Anwendungsinstanz kann die bekannte Adresse periodisch, beispielsweise jede Sekunde, alle paar Sekunden oder in einem anderen geeigneten Intervall, abfragen.
  • Das Verfahren 400 umfasst ein Starten einer zweiten Anwendungsinstanz, während die erste Anwendungsinstanz noch ausgeführt wird (Stufe 420). Der Server 110 kann die Ausführung der zweiten Anwendungsinstanz auf dem Prozessor 130 starten, während die erste Anwendungsinstanz noch ausgeführt wird. Die zweite Anwendungsinstanz umfasst eine aktualisierte Version der ersten Anwendungsinstanz. Das heißt, die zweite Anwendungsinstanz kann eine neue Version der ersten Anwendungsinstanz darstellen, einschließlich Fehlerbehebungen, Patches oder Softwareaktualisierungen. Die erste Anwendungsinstanz und die zweite Anwendungsinstanz können sich gegenseitig über eine bekannte Adresse wie etwa einen Unix-Domain-Sockel entdecken und vereinbaren, eine Zustandsübertragung zu initiieren. In einigen Implementierungen kann die zweite Anwendungsinstanz durch Abfragen einer wohlbekannten Adresse versuchen, die erste Anwendungsinstanz zu entdecken.
  • Das Verfahren 400 umfasst ein Übertragen von Hintergrundzustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz (Stufe 430). In einigen Implementierungen kann die erste Anwendungsinstanz ihre Hintergrundzustandsinformationen aus dem Speicher 140 abrufen und an die zweite Anwendungsinstanz senden, die sie wiederum in einem anderen Abschnitt des Speichers 140 speichern kann. In einigen Implementierungen kann die erste Anwendungsinstanz die Steuerung des Speicherbereichs, der die Hintergrundzustandsinformationen enthält, an die zweite Anwendungsinstanz übergeben. In einigen Implementierungen kann eine Kombination aus Datenübertragung und gemeinsamer Nutzung von Speichern verwendet werden, um die Hintergrundzustandsinformationen miteinander zu teilen. In einigen Implementierungen können die Hintergrundzustandsinformationen umfassen: eine Liste von verbundenen Clientvorrichtungen, Orte von Speicherbereichen, die mit verbundenen Clients gemeinsam genutzt werden, Dateideskriptoren und/oder Zugriff auf Kernel-Betriebsmittel. In einigen Implementierungen kann die erste Anwendungsinstanz die Hintergrundzustandsinformationen in ein Zwischenformat umwandeln. Das Zwischenformat kann derart sein, dass es sowohl von der ersten Anwendungsinstanz als auch von der zweiten Anwendungsinstanz interpretiert werden kann. In einigen Implementierungen ist mindestens eine Teilmenge der Hintergrundzustandsinformationen spezifischen Clientvorrichtungen zugeordnet. Die erste Anwendungsinstanz kann die Hintergrundzustandsinformationen, die spezifischen Clientvorrichtungen zugeordnet sind, mittels Serialisierung in einem Zwischenformat, das sich von einer Form unterscheidet, die zum Bedienen der Clientvorrichtungen verwendet wird, übertragen.
  • Das Verfahren 400 umfasst ein Erklären der Bereitschaft zur Aktivierung durch die zweite Anwendungsinstanz Als Antwort auf den Abschluss der Übertragung der Hintergrundzustandsinformationen (Stufe 440). In einigen Implementierungen kann die zweite Anwendungsinstanz die Benachrichtigung an die erste Anwendungsinstanz senden.
  • Das Verfahren 400 umfasst ein Deaktivieren der ersten Anwendungsinstanz (Stufe 450). Die erste Anwendungsinstanz kann nach Empfangen der Bereitschaftserklärung von der zweiten Anwendungsinstanz mit der Deaktivierung beginnen. Die Deaktivierung kann ein Übertragen von Vordergrundzustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz umfassen. In einigen Implementierungen können die Vordergrundzustandsinformationen für jede von einer oder mehreren Clientvorrichtungen umfassen: eine Größe des TCP-Staufensters, Sequenzkennungen aller Pakete, die unterwegs sind, und/oder Sequenzkennungen aller Pakete, die empfangen worden sind, aber noch nicht bestätigt sind. Die Deaktivierung kann ferner ein Freigeben von Einzelzugriffs-Betriebsmitteln, d. h. Systembetriebsmittel, auf die jeweils nur eine Anwendungsinstanz zugreifen kann, durch die erste Anwendungsinstanz umfassen. Sobald die erste Anwendungsinstanz mit der Deaktivierung beginnt, können die Anwendungsinstanzen in eine Ausfallperiode eintreten, während der die erste Anwendungsinstanz und die zweite Anwendungsinstanz alle empfangenen Pakete ignorieren. Die Ausfallperiode kann sich fortsetzen, bis die zweite Anwendung mit der Aktivierung beginnt.
  • Das Verfahren 400 umfasst ein Aktivieren der zweiten Anwendungsinstanz (Stufe 460). Die Aktivierung kann ein Empfangen der Vordergrundzustandsinformationen von der ersten Anwendungsinstanz durch die zweite Anwendungsinstanz umfassen. Die Aktivierung kann ferner ein Zugreifen auf die Einzelzugriffs-Betriebsmittel, die zuvor von der ersten Anwendungsinstanz freigegeben worden sind, durch die zweite Anwendungsinstanz umfassen.
  • Das Verfahren 400 umfasst als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz ein Erklären, dass die Aktivierung abgeschlossen ist, durch die zweite Anwendungsinstanz (Stufe 470). Sobald die zweite Anwendungsinstanz die Vordergrundstatusinformationen empfangen hat und auf die Einzelzugriffs-Betriebsmittel zugegriffen hat, kann die zweite Anwendungsinstanz die Aktivierung für abgeschlossen erklären. Sobald die Aktivierung abgeschlossen ist, kann die zweite Anwendungsinstanz alle Clientdienste übernehmen, die vor der Aktualisierung von der ersten Anwendungsinstanz gehandhabt wurden, und neue Clientverbindungen akzeptieren.
  • Das Verfahren 400 umfasst ein Beenden der ersten Anwendungsinstanz (Stufe 480). Die erste Anwendungsinstanz kann nach Empfangen einer Benachrichtigung von der zweiten Anwendung oder eines Befehls von der Masteranwendung auf eine Weise beendet werden, die den Betrieb anderer Anwendungen, die auf dem Prozessor 130 ausgeführt werden, nicht stört.
  • In einigen Implementierungen kann eine Masteranwendung dabei helfen, Operationen zwischen der ersten Anwendungsinstanz und der zweiten Anwendungsinstanz zu koordinieren. Zum Beispiel und ohne Beschränkung darauf kann die Masteranwendung den Start der zweiten Anwendungsinstanz in Stufe 420 initiieren. Die Masteranwendung kann die Erklärung der Bereitschaft zur Aktivierung von der zweiten Anwendungsinstanz in Stufe 440 empfangen und der ersten Anwendungsinstanz in Stufe 450 befehlen, sich zu deaktivieren. Der Master kann in Stufe 450 eine Benachrichtigung von der ersten Anwendungsinstanz empfangen, dass die Deaktivierung abgeschlossen ist, und der zweiten Anwendungsinstanz in Stufe 460 befehlen, sich zu aktivieren. Die Masteranwendung kann nach einer Benachrichtigung von der zweiten Anwendungsinstanz, dass die Aktivierung abgeschlossen ist, der ersten Anwendungsinstanz in Stufe 480 befehlen, sich zu beenden. Die Masteranwendung kann mehr oder weniger Operationen in dem Verfahren 400 durchführen, ohne vom Umfang dieser Offenbarung abzuweichen.
  • In einigen Implementierungen kann die Masteranwendung dabei helfen, Operationen für Aktualisierungen für mehr als eine Anwendung oder einen Anwendungstyp zu koordinieren. Zum Beispiel kann die Masteranwendung Operationen zwischen einer dritten Anwendungsinstanz und einer vierten Anwendungsinstanz, die eine Aktualisierung der dritten Anwendungsinstanz umfasst, koordinieren. Die dritte Anwendungsinstanz und die vierte Anwendungsinstanz können einen anderen Dienst als die erste Anwendungsinstanz und die zweite Anwendungsinstanz ausführen.
  • Die verschiedenen Stufen des Verfahrens 400 können in unterschiedlichen Reihenfolgen erfolgen, mehrere Stufen können gleichzeitig erfolgen und sie können mehr oder weniger Stufen als die oben beschriebenen umfassen, ohne vom Umfang dieser Offenbarung abzuweichen.
  • 5 ist ein Blockdiagramm, das eine allgemeine Architektur für ein Rechensystem 900 veranschaulicht, das verwendet werden kann, um Elemente der hier beschriebenen und dargestellten Systeme und Verfahren gemäß einer veranschaulichenden Implementierung zu implementieren. Das Rechensystem 900 kann beim Implementieren der Systeme und Verfahren zum Aktualisieren einer Anwendung ohne einen Neustart, die in 1 bis 4 gezeigt sind, verwendet werden.
  • In einer groben Übersicht enthält das Rechensystem 910 mindestens einen Prozessor 950 zum Ausführen von Aktionen gemäß Befehlen und eine oder mehrere Speichervorrichtungen 970 oder 975 zum Speichern von Befehlen und Daten. Das gezeigte beispielhafte Rechensystem 910 umfasst einen oder mehrere Prozessoren 950, die über einen Bus 915 mit mindestens einem Netzschnittstellencontroller 920 mit einem oder mehreren Netzschnittstellenports 922 kommunizieren, die mit einer oder mehreren Netzvorrichtungen 924 verbunden sind, einen Speicher 970 und beliebige andere Vorrichtungen 980, z. B. eine I/O-Schnittstelle. Im Allgemeinen wird ein Prozessor 950 Befehle ausführen, die aus dem Speicher empfangen werden. Der dargestellte Prozessor 950 beinhaltet den Cache-Speicher 975 oder ist direkt damit verbunden.
  • Genauer kann der Prozessor 950 eine beliebige Logikschaltung sein, die Befehle verarbeitet, also z. B. Befehle, die aus dem Speicher 970 oder dem Cache 975 abgerufen werden. In vielen Ausführungsformen ist der Prozessor 950 eine Mikroprozessoreinheit oder ein Spezialprozessor. Die Rechenvorrichtung 900 kann auf einem beliebigen Prozessor oder einer beliebigen Menge von Prozessoren, der bzw. die in der Lage ist, wie hierin beschrieben zu arbeiten, basieren. In einigen Implementierungen kann der Prozessor 950 in der Lage sein, die in 1 bis 4 gezeigten Verfahren zum Aktualisieren einer Anwendung ohne Neustart auszuführen. Der Prozessor 950 kann ein Einkern- oder Mehrkernprozessor sein. Der Prozessor 950 kann aus mehreren Prozessoren bestehen. In einigen Implementierungen kann der Prozessor 950 dazu ausgelegt sein, um Mehrstrang-Operationen auszuführen. In einigen Implementierungen kann der Prozessor 950 eine oder mehrere virtuelle Maschinen oder Container zusammen mit einem Hypervisor oder Containermanager zum Verwalten des Betriebs der virtuellen Maschinen oder Container hosten. In solchen Implementierungen können die in 1 bis 4 gezeigten Systeme und Verfahren in den virtualisierten oder containerisierten Umgebungen, die auf dem Prozessor 950 bereitgestellt sind, implementiert werden.
  • Der Speicher 970 kann eine beliebige Vorrichtung sein, die zum Speichern computerlesbarer Daten geeignet ist. Der Speicher 970 kann eine Vorrichtung mit festem Speicher oder eine Vorrichtung zum Lesen von Wechselspeichermedien sein. Beispiele umfassen alle Formen von nichtflüchtigem Speicher, Medien und Speichervorrichtungen, Halbleiterspeichervorrichtungen (z. B. EPROM, EEPROM, SDRAM und Flash-Speichervorrichtungen), Magnetplatten, magnetooptische Platten und optische Platten (z. B. CD-ROM-, DVD-ROM- und Blu-ray®-Discs). Ein Rechensystem 900 kann eine beliebige Anzahl von Speichervorrichtungen 970 aufweisen. In einigen Implementierungen kann der Speicher 970 Befehle enthalten, die den Verfahren zum Aktualisieren einer Anwendung ohne Neustart entsprechen, die in 1-4 dargestellt sind. In einigen Implementierungen unterstützt der Speicher 970 virtualisierten oder containerisierten Speicher, auf den durch Ausführungsumgebungen für virtuelle Maschinen oder Container zugegriffen werden kann, die von dem Rechensystem 910 bereitgestellt werden.
  • Der Cachespeicher 975 ist im Allgemeinen eine Form von Computerspeicher, der für schnelle Lesezeiten in unmittelbarer Nähe des Prozessors 950 angeordnet ist. In einigen Implementierungen ist der Cachespeicher 975 ein Teil des Prozessors 950 oder befindet sich auf demselben Chip. In einigen Implementierungen gibt es mehrere Ebenen von Cache 975, z. B. L2- und L3-Cache-Schichten.
  • Der Netzschnittstellencontroller 920 verwaltet den Datenaustausch über die Netzschnittstellen 922 (auch als Netzschnittstellenports bezeichnet). Der Netzschnittstellencontroller 920 handhabt die Bitübertragungs- und Datenverbindungsschichten des OSI-Modells für die Netzkommunikation. In einigen Implementierungen werden einige der Aufgaben des Netzschnittstellencontrollers durch den Prozessor 950 gehandhabt. In einigen Implementierungen ist der Netzschnittstellencontroller 920 Teil des Prozessors 950. In einigen Implementierungen weist ein Rechensystem 910 mehrere Netzschnittstellencontroller 920 auf. Die Netzschnittstellen 922 sind Verbindungspunkte für physische Netzverbindungen. In einigen Implementierungen unterstützt der Netzschnittstellencontroller 920 drahtlose Netzverbindungen und ein Schnittstellenanschluss 922 ist ein drahtloser Empfänger/Sender. Im Allgemeinen tauscht eine Rechenvorrichtung 910 Daten mit anderen Netzvorrichtungen 924 über physische oder drahtlose Verbindungen zu Netzschnittstellen 922 aus. In einigen Implementierungen implementiert der Netzschnittstellencontroller 920 ein Netzprotokoll wie etwa Ethernet.
  • Die anderen Netzvorrichtungen 924 sind mit der Rechenvorrichtung 910 über einen Netzschnittstellenport 922 verbunden. Die anderen Netzvorrichtungen 924 können Peer-Rechenvorrichtungen, Netzvorrichtungen oder irgendwelche anderen Rechenvorrichtungen mit Netzfunktionalität sein. Zum Beispiel kann eine erste Netzvorrichtung 924 eine Netzvorrichtung wie etwa ein Hub, eine Brücke, ein Switch oder ein Router sein, die die Rechenvorrichtung 910 mit einem Datennetz wie etwa dem Internet verbindet.
  • Die anderen Vorrichtungen 980 können eine I/O-Schnittstelle, externe serielle Vorrichtungsports und beliebige zusätzliche Coprozessoren umfassen. Zum Beispiel kann ein Rechensystem 910 eine Schnittstelle (z. B. einen universellen seriellen Bus (USB-Schnittstelle)) zum Verbinden von Eingabevorrichtungen (z. B. einer Tastatur, eines Mikrofons, einer Maus oder einer anderen Zeigevorrichtung), Ausgabevorrichtungen (z. B. einer Videoanzeige, Lautsprecher oder Drucker) oder zusätzlicher Speichervorrichtungen (z. B. eines tragbaren Flash-Laufwerks oder externen Medienlaufwerks) umfassen. In einigen Implementierungen umfasst eine Rechenvorrichtung 900 eine zusätzliche Vorrichtung 980 wie z. B. einen Coprozessor, z. B. kann ein mathematischer Coprozessor den Prozessor 950 für hohe Genauigkeit oder komplexe Berechnungen unterstützen.
  • Gemäß Implementierungen, die in dieser Beschreibung beschrieben sind, werden Systeme und Verfahren zum Aktualisieren einer Anwendung ohne Neustart bereitgestellt. Ein Prozessor kann eine zweite Anwendungsinstanz starten, während eine erste Anwendungsinstanz noch ausgeführt wird. Die erste Anwendungsinstanz kann eine erste Menge von Zustandsinformationen zu der zweiten Anwendungsinstanz übertragen. Die zweite Anwendungsinstanz kann als Antwort auf den Abschluss der Übertragung ihre Bereitschaft zur Aktivierung erklären. Die erste Anwendungsinstanz kann als Antwort auf die Erklärung deaktiviert werden. Die Deaktivierung umfasst ein Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz und ein Freigeben von Einzelzugriffs-Betriebsmitteln. Die zweite Anwendungsinstanz kann aktiviert werden. Die Aktivierung umfasst ein Empfangen der zweiten Menge von Zustandsinformationen und ein Zugreifen auf die Einzelzugriffs-Betriebsmittel. Die zweite Anwendungsinstanz kann als Antwort auf den Abschluss der Aktivierung erklären, dass die Aktivierung abgeschlossen ist. Die erste Anwendungsinstanz kann als Antwort auf die Erklärung beendet werden.
  • Implementierungen des Gegenstands und der Operationen, die in dieser Beschreibung beschrieben sind, können in digitalen elektronischen Schaltungen, in Computersoftware, die auf einem konkreten Medium verkörpert ist, Firmware oder Hardware einschließlich der in dieser Beschreibung offenbarten Strukturen und ihrer strukturellen Äquivalente oder in Kombinationen von einem oder mehreren davon implementiert sein. Implementierungen des in dieser Beschreibung beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. ein oder mehrere Module von Computerprogrammbefehlen, die auf einem Computerspeichermedium codiert sind, das beispielsweise ein konkretes nichttransitorisches Computerspeichermedium sein kann, implementiert sein, um von Datenverarbeitungsvorrichtungen ausgeführt zu werden oder deren Betrieb zu steuern. Das Computerspeichermedium kann eine computerlesbare Speichervorrichtung, ein computerlesbares Speichersubstrat, eine Speichervorrichtung oder Speicheranordnung mit wahlfreiem oder seriellem Zugriff oder eine Kombination aus einem oder mehreren davon sein. Das Computerspeichermedium kann auch eine oder mehrere separate Komponenten oder Medien (z. B. mehrere CDs, Platten oder andere Speichervorrichtungen) sein oder in diesen enthalten sein. Das Computerspeichermedium kann greifbar und nichttransitorisch sein.
  • Die in dieser Beschreibung beschriebenen Operationen können als Operationen implementiert werden, die von einer Datenverarbeitungsvorrichtung an Daten ausgeführt werden, die auf einer oder mehreren computerlesbaren Speichervorrichtungen gespeichert sind oder aus anderen Quellen empfangen werden. Die Operationen können innerhalb der nativen Umgebung der Datenverarbeitungsvorrichtung oder innerhalb einer oder mehrerer virtueller Maschinen oder Container, die von der Datenverarbeitungsvorrichtung gehostet werden, ausgeführt werden.
  • Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter Sprachen, interpretierter Sprachen, deklarativer oder prozeduraler Sprachen, und das Computerprogramm kann in jeder beliebigen Form eingesetzt werden, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Verwendung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei, die andere Programme oder Daten enthält, wie z. B. ein oder mehrere Scripts, die in einem Dokument in Auszeichnungssprache gespeichert sind, in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Bibliotheken, Unterprogramme oder Teile von Code speichern) gespeichert sein. Ein Computerprogramm kann zur Ausführung auf einem Computer oder auf mehreren Computern oder einer oder mehreren virtuellen Maschinen oder Containern, die sich an einem Standort befinden oder über mehrere Standorte verteilt sind und durch ein Kommunikationsnetz miteinander verbunden sind, eingesetzt werden. Beispiele für Kommunikationsnetze umfassen ein lokales Netz („LAN“) und ein Weitverkehrsnetz („WAN“), ein Inter-Netz (z. B. das Internet) und Peer-zu-Peer-Netze (z. B. Ad-hoc-Peer-zu-Peer-Netze).
  • Die Prozesse und Logikabläufe, die in dieser Beschreibung beschrieben sind, können von einem oder mehreren programmierbaren Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Aktionen durch Bearbeiten von Eingabedaten und Erzeugen einer Ausgabe durchzuführen. Die Prozesse und Logikabläufe können auch von Spezial-Logikschaltungen durchgeführt werden und die Vorrichtung kann als eine solche Spezial-Logikschaltung wie etwa als feldprogrammierbare Gatteranordnung (FPGA) oder anwendungsspezifische integrierte Schaltung (ASIC) implementiert sein.
  • Obwohl diese Beschreibung viele spezifische Implementierungsdetails enthält, sollten diese nicht als Einschränkungen des Umfangs einer Erfindung oder des Beanspruchbaren ausgelegt werden, sondern vielmehr als Beschreibungen von Merkmalen, die für bestimmte Ausführungsformen spezifisch sein können. Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit getrennten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in jeder geeigneten Unterkombination implementiert werden. Obwohl darüber hinaus Merkmale oben so beschrieben sein können, dass sie in bestimmten Kombinationen agieren und sogar anfänglich derart beansprucht werden, können ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen werden und die beanspruchte Kombination kann auf eine Unterkombination oder Variation einer Unterkombination ausgerichtet werden.
  • Obwohl Operationen in den Zeichnungen in einer bestimmten Reihenfolge dargestellt sind, sollte dies ebenfalls nicht dahingehend verstanden werden, dass es erforderlich ist, solche Operationen in der gezeigten Reihenfolge oder in sequentieller Reihenfolge auszuführen oder alle dargestellten Operationen durchzuführen, um wünschenswerte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemmodule und Komponenten in den oben beschriebenen Ausführungsformen nicht so verstanden werden, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in einem einzigen Softwareprodukt integriert werden können oder in mehreren Softwareprodukten verpackt werden können.
  • Verweise auf „oder“ können als einschließend ausgelegt werden, so dass jegliche Begriffe, die unter Verwendung von „oder“ beschrieben sind, einen einzelnen, mehr als einen und alle der beschriebenen Begriffe angeben können. Die Bezeichnungen „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw. sollen nicht notwendigerweise eine Reihenfolge angeben und werden im Allgemeinen lediglich dazu verwendet, zwischen gleichen oder ähnlichen Objekten oder Elementen zu unterscheiden.
  • Verschiedene Abwandlungen der Implementierungen, die in dieser Offenbarung beschrieben sind, sind für Fachleute offensichtlich, und die hier definierten generischen Prinzipien können auf andere Implementierungen angewendet werden, ohne vom Gedanken oder Umfang dieser Offenbarung abzuweichen. Somit sollen die Ansprüche nicht auf die hierin gezeigten Implementierungen beschränkt sein, sondern ihnen soll der breiteste Umfang gewährt werden, der mit dieser Offenbarung, den Prinzipien und den hierin offenbarten neuartigen Merkmalen konsistent ist.

Claims (15)

  1. System zum Aktualisieren einer Anwendung ohne Neustart, das umfasst: einen Prozessor; und einen Speicher, auf dem Befehle gespeichert sind, um den Prozessor zu Folgendem zu veranlassen: Ausführen einer ersten Anwendungsinstanz; Starten einer zweiten Anwendungsinstanz, während die erste Anwendungsinstanz noch ausgeführt wird, wobei die zweite Anwendungsinstanz eine aktualisierte Version der ersten Anwendungsinstanz umfasst; Übertragen einer ersten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz; Erklären der Bereitschaft zur Aktivierung durch die zweite Anwendungsinstanz als Antwort auf den Abschluss der Übertragung der ersten Menge von Zustandsinformationen; Deaktivieren der ersten Anwendungsinstanz, wobei die Deaktivierung umfasst: Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz; und Freigeben von Einzelzugriffs-Betriebsmitteln durch die erste Anwendungsinstanz; Aktivieren der zweiten Anwendungsinstanz, wobei die Aktivierung umfasst: Empfangen der zweiten Menge von Zustandsinformationen; und Zugreifen auf die Einzelzugriffs-Betriebsmittel; als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz, Erklären durch die zweite Anwendungsinstanz, dass die Aktivierung abgeschlossen ist; und Beenden der ersten Anwendungsinstanz.
  2. System nach Anspruch 1, wobei die Befehle den Prozessor dazu veranlassen, eine Masteranwendung auszuführen, um Operationen zwischen der ersten Anwendungsinstanz und der zweiten Anwendungsinstanz zu koordinieren.
  3. System nach Anspruch 2, wobei die Masteranwendung: den Start der zweiten Anwendungsinstanz initiiert; von der zweiten Anwendungsinstanz die Erklärung der Bereitschaft zur Aktivierung empfängt; bei Empfangen der Erklärung der Bereitschaft der ersten Anwendungsinstanz befiehlt, sich zu deaktivieren; eine Benachrichtigung von der ersten Anwendungsinstanz empfängt, dass die Deaktivierung abgeschlossen ist; bei Empfang der Benachrichtigung der zweiten Anwendungsinstanz befiehlt, sich zu aktivieren; und die erste Anwendungsinstanz beendet.
  4. System nach Anspruch 2 oder 3, wobei die Masteranwendung Operationen zwischen einer dritten Anwendungsinstanz und einer vierten Anwendungsinstanz, die eine Aktualisierung der dritten Anwendungsinstanz umfasst, koordiniert, wobei die dritte Anwendungsinstanz und die vierte Anwendungsinstanz einen anderen Dienst ausführen als die erste Anwendungsinstanz und die zweite Anwendungsinstanz.
  5. System nach einem der Ansprüche 1 bis 4, wobei die erste Anwendungsinstanz periodisch eine vorbestimmte Adresse oder einen Sockel auf das Vorhandensein der zweiten Anwendungsinstanz überprüft.
  6. System nach einem der Ansprüche 1 bis 5, wobei die erste Menge von Zustandsinformationen umfasst: eine Liste von verbundenen Clients, Orte von gemeinsam genutzten Speicherbereichen, Dateideskriptoren und/oder Zugriff auf Kernel-Betriebsmittel.
  7. System nach einem der Ansprüche 1 bis 6, wobei die erste Menge von Zustandsinformationen in ein Zwischenformat geschrieben werden, das sowohl von der ersten Anwendungsinstanz als auch von der zweiten Anwendungsinstanz interpretiert werden kann; und/oder wobei mindestens eine Teilmenge der ersten Menge von Zustandsinformationen spezifischen Clients zugeordnet ist und die Teilmenge mittels Serialisierung in ein Zwischenformat übertragen wird, das sich von einer Form unterscheidet, die verwendet wird, um die spezifischen Clients zu bedienen; und/oder wobei die Befehle den Prozessor zu Folgendem veranlassen: Aufrechterhalten einer Ausfallperiode zwischen dem Beginn der Deaktivierung der ersten Anwendungsinstanz und dem Abschluss der Aktivierung der zweiten Anwendungsinstanz, während der weder die erste Anwendungsinstanz noch die zweite Anwendungsinstanz auf irgendwelche Anwendereingaben antworten
  8. System nach einem der Ansprüche 1 bis 7, wobei die zweite Menge von Zustandsinformationen umfasst: eine Größe des TCP-Staufensters, Sequenzkennungen jeglicher Pakete, die unterwegs sind; und/oder Sequenzkennungen jeglicher Pakete, die empfangen worden sind, aber noch nicht bestätigt sind.
  9. Computerprogramm, das auf einem oder mehreren Computerspeichermedien verkörpert ist und Computerprogrammbefehle enthält, die bei Ausführung durch eine Datenverarbeitungsvorrichtung ein Aktualisieren einer Anwendung ohne Neustart durchführen, das umfasst: Ausführen einer ersten Anwendungsinstanz durch einen Prozessor; Starten einer zweiten Anwendungsinstanz durch den Prozessor, während die erste Anwendungsinstanz noch ausgeführt wird, wobei die zweite Anwendungsinstanz eine aktualisierte Version der ersten Anwendungsinstanz umfasst; Übertragen einer ersten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz durch den Prozessor; Erklären der Bereitschaft zur Aktivierung durch die zweite Anwendungsinstanz als Antwort auf den Abschluss der Übertragung der ersten Menge von Zustandsinformationen; Deaktivieren der ersten Anwendungsinstanz durch den Prozessor, wobei die Deaktivierung umfasst: Übertragen einer zweiten Menge von Zustandsinformationen von der ersten Anwendungsinstanz zu der zweiten Anwendungsinstanz; und Freigeben von Einzelzugriffs-Betriebsmitteln durch die erste Anwendungsinstanz; Aktivieren der zweiten Anwendungsinstanz durch den Prozessor, wobei die Aktivierung umfasst: Empfangen der zweiten Menge von Zustandsinformationen; und Zugreifen auf die Einzelzugriffs-Betriebsmittel; als Antwort auf den Abschluss der Aktivierung der zweiten Anwendungsinstanz, Erklären durch die zweite Anwendungsinstanz, dass die Aktivierung abgeschlossen ist; und Beenden der ersten Anwendungsinstanz durch den Prozessor.
  10. Computerprogramm nach Anspruch 9, das umfasst: Ausführen einer Masteranwendung durch den Prozessor, um Operationen zwischen der ersten Anwendungsinstanz und der zweiten Anwendungsinstanz zu koordinieren.
  11. Computerprogramm nach Anspruch 10, wobei die Masteranwendung: den Start der zweiten Anwendungsinstanz initiiert; von der zweiten Anwendungsinstanz die Erklärung der Bereitschaft zur Aktivierung empfängt; bei Empfangen der Erklärung der Bereitschaft der ersten Anwendungsinstanz befiehlt, sich zu deaktivieren; eine Benachrichtigung von der ersten Anwendungsinstanz empfängt, dass die Deaktivierung abgeschlossen ist; bei Empfang der Benachrichtigung der zweiten Anwendungsinstanz befiehlt, sich zu aktivieren; und die erste Anwendungsinstanz beendet.
  12. Computerprogramm nach Anspruch 10 oder 11, wobei die Masteranwendung Operationen zwischen einer dritten Anwendungsinstanz und einer vierten Anwendungsinstanz, die eine Aktualisierung der dritten Anwendungsinstanz umfasst, koordiniert, wobei die dritte Anwendungsinstanz und die vierte Anwendungsinstanz einen anderen Dienst ausführen als die erste Anwendungsinstanz und die zweite Anwendungsinstanz.
  13. Computerprogramm nach einem der Ansprüche 9 bis 12, wobei das Verfahren umfasst: periodisches Überprüfen einer vorbestimmten Adresse oder eines Sockels auf das Vorhandensein der zweiten Anwendungsinstanz durch die erste Anwendungsinstanz; und/oder wobei die erste Menge von Zustandsinformationen umfasst: eine Liste von verbundenen Clients, Orte von gemeinsam genutzten Speicherbereichen, Dateideskriptoren und/oder Zugriff auf Kernel-Betriebsmittel.
  14. Computerprogramm nach einem der Ansprüche 9 bis 13, wobei die erste Menge von Zustandsinformationen in ein Zwischenformat geschrieben wird, das sowohl von der ersten Anwendungsinstanz als auch von der zweiten Anwendungsinstanz interpretiert werden kann; und/oder wobei mindestens eine Teilmenge der ersten Menge von Zustandsinformationen spezifischen Clients zugeordnet ist und die Teilmenge mittels Serialisierung in ein Zwischenformat übertragen wird, das sich von einer Form unterscheidet, die verwendet wird, um die spezifischen Clients zu bedienen; und/oder wobei die zweite Menge von Zustandsinformationen umfasst: Größe des TCP-Staufensters, Sequenzkennungen jeglicher Pakete, die unterwegs sind, und/oder Sequenzkennungen jeglicher Pakete, die empfangen worden sind, aber noch nicht bestätigt sind.
  15. Computerprogramm nach einem der Ansprüche 9 bis 14, das umfasst: Aufrechterhalten einer Ausfallperiode zwischen dem Beginn der Deaktivierung der ersten Anwendungsinstanz und der Beendigung der Aktivierung der zweiten Anwendungsinstanz durch den Prozessor, während der weder die erste Anwendungsinstanz noch die zweite Anwendungsinstanz auf irgendwelche Anwendereingaben antworten.
DE202018102031.5U 2017-05-01 2018-04-13 Transparente Aktualisierung eines Systemdienstes oder einer Anwendung Active DE202018102031U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/583,849 2017-05-01
US15/583,849 US10261780B2 (en) 2017-05-01 2017-05-01 Transparent upgrade of a system service or application

Publications (1)

Publication Number Publication Date
DE202018102031U1 true DE202018102031U1 (de) 2018-07-17

Family

ID=61827824

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202018102031.5U Active DE202018102031U1 (de) 2017-05-01 2018-04-13 Transparente Aktualisierung eines Systemdienstes oder einer Anwendung
DE102018108859.0A Pending DE102018108859A1 (de) 2017-05-01 2018-04-13 Transparente Aktualisierung eines Systemdienstes oder einer Anwendung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE102018108859.0A Pending DE102018108859A1 (de) 2017-05-01 2018-04-13 Transparente Aktualisierung eines Systemdienstes oder einer Anwendung

Country Status (6)

Country Link
US (1) US10261780B2 (de)
EP (1) EP3399407B1 (de)
CN (1) CN108881372A (de)
DE (2) DE202018102031U1 (de)
GB (1) GB2563312B (de)
WO (1) WO2018203969A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531531B1 (en) * 2018-03-08 2022-12-20 Amazon Technologies, Inc. Non-disruptive introduction of live update functionality into long-running applications
US20220019380A1 (en) * 2018-11-19 2022-01-20 Telefonaktiebolaget Lm Ericsson (Publ) Methods providing network service restoration context and related service instance sets and storage resource nodes
US11019178B1 (en) * 2019-01-07 2021-05-25 West Corporation Deployment router based on channel traffic
US11048549B2 (en) * 2019-04-04 2021-06-29 Google Llc Transferral of process state and/or components in computing environments
CN113190343A (zh) * 2020-01-14 2021-07-30 阿里巴巴集团控股有限公司 应用实例的控制方法、装置、设备及系统
US11070621B1 (en) * 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing
US20220164221A1 (en) * 2020-11-23 2022-05-26 Motorola Solutions, Inc. Preserving persistent link connections during a cloud-based service system upgrade
EP4064045A1 (de) * 2021-03-25 2022-09-28 ABB Schweiz AG Verfahren zur echtzeitaktualisierung von prozess-software

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360363B1 (en) * 1997-12-31 2002-03-19 Eternal Systems, Inc. Live upgrade process for object-oriented programs
US7155462B1 (en) 2002-02-01 2006-12-26 Microsoft Corporation Method and apparatus enabling migration of clients to a specific version of a server-hosted application, where multiple software versions of the server-hosted application are installed on a network
AU2003217319A1 (en) * 2002-02-04 2003-09-02 Fast-Chip, Inc. Services processor having a packet editing unit
US7000229B2 (en) * 2002-07-24 2006-02-14 Sun Microsystems, Inc. Method and system for live operating environment upgrades
US7555751B1 (en) * 2004-08-11 2009-06-30 3Com Corporation Method and system for performing a live system upgrade
US8146073B2 (en) 2004-09-30 2012-03-27 Microsoft Corporation Updating software while it is running
US8713556B2 (en) * 2008-02-25 2014-04-29 Sap Ag Virtual appliance update method
US8332848B2 (en) * 2009-03-12 2012-12-11 Red Hat Israel, Ltd. Mechanism for staged upgrades of a virtual machine system
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
US9438494B2 (en) * 2011-12-28 2016-09-06 Avvasi Inc. Apparatus and methods for optimizing network data transmission
US9152410B2 (en) * 2012-06-21 2015-10-06 Vaibhav KHANDELWAL Auto-update while running client interface with handshake
US20140059534A1 (en) * 2012-08-22 2014-02-27 General Electric Company Method and system for software management
US20140229928A1 (en) * 2013-02-11 2014-08-14 Claes Göran Edström Upgrading software in production environments
US9888059B2 (en) * 2013-03-15 2018-02-06 Gordon E. Seay Methods and systems for switching between software applications
CN104423989B (zh) * 2013-09-02 2017-11-28 联想(北京)有限公司 一种应用更新方法及电子设备
US9430223B2 (en) 2014-09-25 2016-08-30 International Business Machines Corporation Live operating system update mechanisms
US10007546B2 (en) 2015-01-19 2018-06-26 Vmware, Inc. Operating-system exchanges using memory-pointer transfers
US9734000B2 (en) * 2015-06-18 2017-08-15 Microsoft Technology Licensing, Llc Seamless transitions between applications and devices
US10289398B2 (en) * 2015-09-26 2019-05-14 Cisco Technology, Inc. In-service upgrade of kernel loadable modules
US10404837B2 (en) 2015-09-30 2019-09-03 International Business Machines Corporation User datagram protocol (UDP) application handling during live kernel update
CN105677404B (zh) * 2015-12-31 2019-03-19 拉扎斯网络科技(上海)有限公司 一种基于Zookeeper的配置更新方法及装置

Also Published As

Publication number Publication date
GB2563312A (en) 2018-12-12
EP3399407A1 (de) 2018-11-07
CN108881372A (zh) 2018-11-23
EP3399407B1 (de) 2021-12-01
US10261780B2 (en) 2019-04-16
DE102018108859A1 (de) 2018-11-08
US20180314515A1 (en) 2018-11-01
WO2018203969A1 (en) 2018-11-08
GB201804245D0 (en) 2018-05-02
GB2563312B (en) 2021-06-16

Similar Documents

Publication Publication Date Title
DE202018102031U1 (de) Transparente Aktualisierung eines Systemdienstes oder einer Anwendung
DE112020005786T5 (de) Systeme und verfahren zum ermöglichen eines hochverfügbaren verwalteten ausfallsicherungsdienstes
DE68928311T2 (de) Fern-Urlader
DE102014109518A1 (de) Techniken zur Initialisierung von einem Speichergerät, auf das von der Ferne zugegriffen werden kann
DE102016103733A1 (de) Kanaleigentum in einem Veröffentlichungs-/Abonnier-System
DE112013003289T5 (de) Gerät, System und Verfahren für client-geregelte Sitzungspersistenz zwischen ein oder mehreren Clients und Servern eines Rechenzentrums
DE112012004294T5 (de) Starten eines Prozesses
DE202012013448U1 (de) Prozessormodussperre
DE102017104077A1 (de) Bereitstellung der hyperkonvergierten Bare-Metal-Infrastruktursysteme durch den Top-of-Rack-Switch
DE202013012495U1 (de) Metadatenbasierte virtual Maschine-Konfiguration
DE112012006336T5 (de) Netzwerksystem, konfiguriert um die Vorwärtsfehlerkorrektur während einer verlinkten Schulungssequenzzu lösen
DE112013004187T5 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE112017005453T5 (de) Konfiguration verteilter Datenverarbeitungssysteme
DE112020004353T5 (de) Globale tabellenverwaltungsoperationen für replizierte tabellen mit mehreren regionen
DE112014000433T5 (de) Kapseln eines virtuellen Servers in einer Hypervisor-Subpartition
EP4289123A1 (de) Verfahren und vorrichtung zur konfiguration einer applikation
DE102022108863A1 (de) Sicherung von daten für einen namensraum, der einem mandanten zugeordnet ist
WO2015155093A1 (de) Verfahren und system zur deterministischen autokonfiguration eines gerätes
DE102012218945B4 (de) Zugriffssteuerung in einer hybriden Umgebung
DE102021127762A1 (de) Systeme und verfahren für zero touch provisioning ( ztp) übertrunk/lacp-ports
DE112010005509T5 (de) Robotersystemsteuerverfahren und eine Vorrichtung davon
DE112012004554B4 (de) Serielle Verarbeitung des Zugriffs auf Daten bei Datenverarbeitungsumgebungen mitmehreren Grossrechnern
DE102023110549A1 (de) Bereitstellung von netzfunktionen eines netzabschnitts
DE102013109107A1 (de) Verfahren und System zum Implementieren vonDatenladeprotokollen
DE102022116740A1 (de) System und verfahren zur unterstützung von smm-aktualisierung und telemetrie zur laufzeit für blankmetalleinsätze

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years