DE112021003348T5 - Verwalten von datenübertragung zwischen mikrodiensten - Google Patents

Verwalten von datenübertragung zwischen mikrodiensten Download PDF

Info

Publication number
DE112021003348T5
DE112021003348T5 DE112021003348.4T DE112021003348T DE112021003348T5 DE 112021003348 T5 DE112021003348 T5 DE 112021003348T5 DE 112021003348 T DE112021003348 T DE 112021003348T DE 112021003348 T5 DE112021003348 T5 DE 112021003348T5
Authority
DE
Germany
Prior art keywords
microservices
computer
program instructions
resource
traffic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112021003348.4T
Other languages
English (en)
Inventor
Richard Chamberlain
John Pilkington Adam
Howard Hellyer
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021003348T5 publication Critical patent/DE112021003348T5/de
Granted legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • H04L47/762Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions triggered by the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ausführungsformen der vorliegenden Erfindung stellen Verfahren, Computerprogrammprodukte und Systeme bereit. Ein Beispiel weist ein Überwachen von Datenverkehr zwischen einer Mehrzahl von Mikrodiensten auf, um eine Eigenschaft des Datenverkehrs zu bestimmen. Ausführungsformen der vorliegenden Erfindung können dann auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs jeden der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource verlagern.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich allgemein auf die Datenübertragung zwischen Mikrodiensten und genauer auf ein Verwalten von Datenübertragung zwischen einer Mehrzahl von Mikrodiensten.
  • Herkömmliche Mikrodienste sind eine Softwareentwicklungstechnik, insbesondere eine Variante des strukturellen Stils einer dienstorientierten Architektur (service-oriented architecture (SOA)), die eine Anwendung als eine Sammlung von Diensten anordnet. Somit verwenden Mikrodienste (oder eine Mikrodienstarchitektur) einen Cloudnativen Ansatz, bei dem eine einzelne Anwendung aus vielen lose verbundenen und unabhängig einsetzbaren kleineren Komponenten oder Diensten zusammengesetzt ist. Diese Dienste besitzen üblicherweise ihren eigenen Stapel, einschließlich der Datenbank und des Datenmodells und tauschen miteinander über eine Kombination von „Representational State Transfer“-Anwendungsprogrammierschnittstellen (representational state transfer application programming interfaces (REST APIs)), Ereignis-Streaming und Nachrichtenvermittlern Daten aus. Diese Dienste sind zudem üblicherweise durch Geschäftsfähigkeit organisiert, wobei eine Linie, die Dienste trennt, oft als ein begrenzter Kontext (bounded context) bezeichnet wird.
  • Mikrodienste, die in Cloud-Umgebungen eingesetzt werden, verwenden üblicherweise Cloud-APIs, um miteinander Daten auszutauschen. Diese APIs werden üblicherweise mittels eines REST-Aufrufs umgesetzt, wie eines „HyperText Transfer Protocol (HTTP)“-REST-Aufrufs. Für eine einfache REST-Funktion enthält das Meiste der Verarbeitung, die erforderlich ist, um diese Funktion zu bedienen, ein Marshalling, Übertragen und Unmarshalling einer Anfrage, die verwendet wird, um den API-Aufruf vorzunehmen. Marshalling bezieht sich auf den Prozess eines Umwandelns einer Speicherdarstellung eines Objekts in ein Datenformat, das zur Speicherung oder Übertragung geeignet ist, und es wird üblicherweise verwendet, wenn Daten zwischen unterschiedlichen Teilen eines Computerprogramms/Dienstes oder von einem Programm/Dienst zu einem anderen bewegt werden müssen. Unmarshalling bezieht sich auf ein Entpacken des Datenformats durch Umwandeln des Datenformats zurück in eine Speicherdarstellung.
  • Das Bedienen der Funktion kann auch ein Verschlüsseln und Entschlüsseln der API-Aufrufe enthalten, wenn sie über das Netzwerk vorgenommen werden. Als ein Ergebnis wird die Mehrheit der Verarbeitung, die durchgeführt wird, um einen HTTP-REST-Funktionsaufruf vorzunehmen, mittels überschüssiger und/oder indirekter Rechenzeit, Speicher, Bandbreite oder anderer Ressourcen durchgeführt, die erforderlich sind, um die Aufgabe durchzuführen (d.h. Rechenüberhang), anstatt Anwendungslogik zu verwenden.
  • Cloud-Anwendungen können eine Knotenaffinität (d.h. eine Arbeitermaschine in einer Cloud-Umgebung) verwenden, um Netzwerkdatenverkehr zu minimieren, indem eingeschränkt wird, welche Knoten ein Pod (d.h. ein Objekt, das einen Satz von ausgeführten Containern in einem Cluster darstellt) auswählen kann, um darauf geplant zu werden, auf Grundlage von Kennzeichnungen, die dem Knoten zugeordnet sind. Der Überhang von Marshalling und Unmarshalling von Daten zu und von den HTTP-Nachrichten bleibt jedoch. Zusätzlich können Sicherheitsanforderungen einer Organisation erfordern, dass sich HTTP-Datenverkehr durch das Netzwerk bewegt, um als „HyperText Transfer Protocol Secure“ (HTTPS) verschlüsselt zu werden, was den erforderlichen Verarbeitungsaufwand weiter erhöht.
  • KU RZDARSTELLU NG
  • Die vorliegende Erfindung will ein computerumgesetztes Verfahren zum Verwalten der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten bereitstellen.
  • Die vorliegende Erfindung will ferner ein Computerprogrammprodukt bereitstellen, das Computerprogrammcode zum Umsetzen eines vorgeschlagenen Verfahrens enthält, wenn es durch eine Verarbeitungseinheit ausgeführt wird.
  • Die vorliegende Erfindung will zudem ein Verarbeitungssystem bereitstellen, das geeignet ist, diesen Computerprogrammcode auszuführen.
  • Die vorliegende Erfindung will zudem ein System zum Verwalten der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten bereitstellen.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein computerumgesetztes Verfahren bereitgestellt. Das Verfahren weist ein Überwachen von Datenverkehr zwischen einer Mehrzahl von Mikrodiensten auf, um eine Eigenschaft des Datenverkehrs zu bestimmen. Das Verfahren weist auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs ein Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource auf.
  • Gemäß noch einem weiteren Aspekt der Erfindung wird ein Computersystem bereitgestellt. Das System weist eine Überwachungseinheit auf, die so konfiguriert ist, dass sie Datenverkehr zwischen einer Mehrzahl von Mikrodiensten überwacht, um eine Eigenschaft des Datenverkehrs zu bestimmen. Das System weist ferner eine Verlagerungseinheit auf, die so konfiguriert ist, dass sie auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs jeden der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource verlagert.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Computerprogrammprodukt bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speicherungsmedium mit damit ausgebildeten Programmanweisungen auf, wobei die Programmanweisungen durch eine Verarbeitungseinheit ausführbar sind, um die Verarbeitungseinheit zu veranlassen, ein Verfahren gemäß einer vorgeschlagenen Ausführungsform durchzuführen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verarbeitungssystem bereitgestellt, das mindestens einen Prozessor und das Computerprogrammprodukt gemäß einer Ausführungsform aufweist. Der mindestens eine Prozessor ist geeignet, den Computerprogrammcode des Computerprogrammprodukts auszuführen.
  • Figurenliste
  • Nun werden in lediglich beispielhafter Weise bevorzugte Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in denen:
    • 1 eine bildliche Darstellung eines verteilten Beispielsystems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
    • 2 ein Blockschaubild eines Beispielsystems ist, in dem Aspekte der veranschaulichenden Ausführungsformen gemäß einer Ausführungsform der vorliegenden Erfindung umgesetzt sein können;
    • 3 ein Ablaufplan eines computerumgesetzten Verfahrens zum Verwalten einer Datenübertragung zwischen einer Mehrzahl von Mikrodiensten gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 4 ein vereinfachtes Blockschaubild einer beispielhaften Ausführungsform eines Systems zum Verwalten der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 5A bis 5E vereinfachte Blockschaubilder von Beispielen der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten gemäß einer Ausführungsform der vorliegenden Erfindung sind; und
    • 6 ein Blockschaubild eines Beispielsystems gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • DETAILLIERTE BESCHREIBUNG
  • Es sollte sich verstehen, dass die Figuren lediglich schematisch sind, und nicht maßstabsgerecht gezeichnet sind. Es sollte sich zudem verstehen, dass dieselben Bezugszahlen in den Figuren verwendet werden, um dieselben oder ähnliche Teile anzugeben.
  • Wenn im Kontext der vorliegenden Anmeldung Ausführungsformen der vorliegenden Erfindung ein Verfahren bilden, sollte es sich verstehen, dass ein solches Verfahren ein Prozess zur Ausführung durch einen Computer sein kann, d.h. ein computerumsetzbares Verfahren sein kann. Die verschiedenen Schritte des Verfahrens können daher verschiedene Teile eines Computerprogramms widerspiegeln, d.h. verschiedene Teile eines oder mehrerer Algorithmen.
  • Zudem kann im Kontext der vorliegenden Anmeldung ein System eine einzelne Einheit oder eine Sammlung verteilter Einheiten sein, die geeignet sind, eine oder mehrere Ausführungsformen der Verfahren der vorliegenden Erfindung auszuführen. Zum Beispiel kann ein System ein Personal Computer (PC), ein Server oder eine Sammlung von PCs und/oder Servern sein, die über ein Netzwerk wie beispielsweise ein lokales Netzwerk (local area network), das Internet und so weiter verbunden sind, um gemeinsam mindestens eine Ausführungsform der Verfahren der vorliegenden Erfindung auszuführen.
  • Konzepte zum Verwalten einer Datenübertragung zwischen einer Mehrzahl von Mikrodiensten werden vorgeschlagen. Solche Konzepte können ein Optimieren von Mikrodiensten mittels Bearbeitung von autonomem auf Last reagierendem Transport und Topologie ermöglichen. Dementsprechend können Ausführungsformen eine dynamische Verringerung des Verarbeitungsaufwands zur Datenübertragung zwischen einer Mehrzahl von Mikrodiensten auf Grundlage einer tatsächlichen Leistung einer Anwendung ermöglichen, anstatt Anwendungsänderungen zu erfordern. Ausführungsformen können ferner eine automatische Migration von Mikrodiensten um einen Cluster ermöglichen.
  • Solche Konzepte können ein Konzept des „herunter“- und „herauf“-Bringens von Mikrodiensten einbeziehen (d.h. Herunterfahren und Neustarten der Mikrodienste), während die Mikrodienste umkonfiguriert werden. Die Mikrodienste können eine allgemeine API zum Datenübertragen zwischen sich selbst verwenden, die auf Grundlage des sich zwischen den Mikrodiensten bewegenden Datenverkehrs umkonfiguriert werden kann. Durch Umkonfigurieren der Mikrodienste kann die Datenübertragung zwischen Datenübertragung mittels „HyperText Transfer Protocol Secure“ (HTTPS), „HyperText Transfer Protocol“ (HTTP), prozessübergreifender Datenübertragung und direkten Funktionsaufrufen ausgetauscht werden.
  • Ausführungsformen können in Verbindung mit einer API-Schicht zum Abstrahieren von Funktionsaufrufen zwischen Diensten, einem Überwachungsdienst (d.h. einer Überwachungseinheit), der Datenverkehr überwacht, der über erzeugte APIs vorgenommen wird, und einem Zusammensetzungsdienst (d.h. einer Verlagerungseinheit), die Dienste „herunter“- und „herauf“-bringt, umgesetzt werden, während umkonfiguriert wird, wie die Dienste Daten austauschen. Die API-Schicht kann mittels Dokumentation erzeugt werden, die eine Schnittstellenspezifikation in einer anderen übergeordneten Spezifikationssprache aufweist. Die erzeugte API-Schicht kann eine Mehrzahl von APIs aufweisen und kann verwendet werden, um zwischen Diensten aufzurufen. Die erzeugten APIs können dem Überwachungsdienst automatisch eine Auslastung (d.h. Datenverkehr) berichten.
  • Ausführungsformen können ferner in Verbindung mit einem Konzept eines Erzeugens von REST-Aufrufen mittels der API-Schicht und Analysierens des resultierenden Datenverkehrs zwischen Diensten in einer verteilten Mikrodienstumgebung umgesetzt werden, die innerhalb einer Cloud-Umgebung ausgeführt wird. Wenn eine signifikante Menge an Datenverkehr zwischen den Diensten identifiziert wird, können die Mikrodienste durch Herunterfahren und Starten (oder Herunter- und Heraufskalieren) der Mikrodienste näher beieinander umkonfiguriert werden.
  • Vorgeschlagene Ausführungsformen können ein Konzept eines Anpassens von Diensten zum Verwenden einer spezifisch erzeugten API-Schicht, anstatt direkter REST-Aufrufe, einsetzen. Als ein Ergebnis kann die erzeugte API-Schicht ändern, wie API-Aufrufe vorgenommen werden. Verlagerungsdienste zur selben Maschine können den Prozess der Verschlüsselung und Entschlüsselung aus Datenübertragung entfernen. Verlagerungsdienste zum selben Container können die Datenübertragung in prozessübergreifende Aufrufe ändern. Verlagerungsdienste zum selben Prozess können die Datenübertragung in einfache Funktionsaufrufe ändern. In jedem Fall können die Dienste als „Black Boxes“ behandelt werden, so dass die Anforderung von spezifischen Informationen über jeden Dienst verringert wird.
  • Ausführungsformen der vorliegenden Erfindung erkennen, dass Informationen aus Nachrichten, die zwischen Mikrodiensten gesendet werden, erlangt werden können und dann verwendet werden können, um jeden der Mikrodienste umzuverteilen (z.B. durch Verringern des für die Datenübertragung zwischen ihnen erforderlichen Abstands). Ausführungsformen der vorliegenden Erfindung können daher diese Mikrodienste näher zueinander bringen, indem sie von ihren ursprünglichen Ressourcen (d.h. Ursprungsressourcen) zu einer Ressource gebracht werden, die durch die Mikrodienste gemeinsam genutzt wird (d.h. einer gemeinsam genutzten Ressource). Durch gemeinsames Nutzen einer Ressource können Ausführungsformen der vorliegenden Erfindung die Komplexität der Datenübertragung zwischen den Mikrodiensten verringern, können auf den Informationen beruhen, die aus der Datenübertragung erlangt werden. Insofern können Informationen, die keine komplexen Datenübertragungsverfahren zwischen den Mikrodiensten erfordern, mittels einer einfacheren Verteilungstechnik gesendet werden, indem die Mikrodienste näher zueinander gebracht werden.
  • Vorgeschlagene Ausführungsformen können ferner ein Konzept des Bewegens von zwei oder mehr Containern in ein gemeinsam genutztes Pod und/oder des Bewegens von zwei oder mehr Mikrodiensten in einen gemeinsam genutzten Container zum Verwenden von prozessübergreifender Datenübertragung einsetzen, anstatt ein Netzwerk zu verwenden, wenn die zwei oder mehr Mikrodienste häufig interagieren.
  • In einer vorgeschlagenen Ausführungsform kann das Verlagern jedes der Mehrzahl von Mikrodiensten für jeden der Mehrzahl von Mikrodiensten ein Neustarten des Mikrodienstes an der gemeinsam genutzten Ressource und ein Herunterfahren des Mikrodienstes an seiner Ursprungsressource aufweisen. Auf diese Weise kann die Mehrzahl von Mikrodiensten näher zueinander gebracht werden, so dass die durch jeden der Mehrzahl von Mikrodiensten verwendete Ressource über alle der Mehrzahl von Mikrodiensten gemeinsam genutzt wird. Folglich kann dies den Verarbeitungsaufwand verringern, der für die Datenübertragung zwischen der Mehrzahl von Mikrodiensten erforderlich ist, was die Effizienz in der Datenübertragung verbessern kann.
  • In manchen Ausführungsformen kann das Verlagern jedes der Mehrzahl von Mikrodiensten ein Umkonfigurieren der Datenübertragung zwischen der Mehrzahl von Mikrodiensten aufweisen, indem die Mehrzahl von Mikrodiensten von jeder ihrer jeweiligen Ursprungsressourcen auf einer gemeinsam genutzten Ressource gesammelt wird. Auf diese Weise kann die Datenübertragung umkonfiguriert werden, um den Verarbeitungsaufwand bezüglich eines Mikrodienstes zu verringern, der eine Funktion eines anderen Mikrodienstes der Mehrzahl von Mikrodiensten aufruft.
  • In einer vorgeschlagenen Ausführungsform kann die Eigenschaft des überwachten Datenverkehrs mindestens eines von einer Datenmenge, die sich zwischen der Mehrzahl von Mikrodiensten bewegt, einem Typ der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen, und einem Durchsatz der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen, aufweisen. Auf diese Weise kann der Umfang der Vielfalt von Eigenschaften des überwachten Datenverkehrs erhöht werden, die verwendet werden können, um zu bestimmen, ob jeder der Mehrzahl von Mikrodiensten verlagert werden soll. Als ein Ergebnis kann die Wirksamkeit und Zuverlässigkeit des Verlagerns jedes der Mehrzahl von Mikrodiensten auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs verbessert werden, da die Informationen bezüglich des überwachten Datenverkehrs, die als eine Basis zum Verlagern jedes der Mehrzahl von Mikrodiensten verwendet werden können, verbessert werden können.
  • In manchen Ausführungsformen kann mindestens eine der Ursprungsressource und der gemeinsam genutzten Ressource eine virtuelle Ressource aufweisen. Auf diese Weise können sich die Mikrodienste innerhalb einer Cloud-Umgebung befinden, welche die Verfügbarkeit und Leichtigkeit der Wiederherstellung in einem Fall eines Softwareausfalls verbessern kann. Dies kann ferner eine verbesserte Zentralisierung der Verwaltung der Mikrodienste und eine verbesserte Kompatibilität zwischen Anwendungen ermöglichen. Zusätzlich kann dies Personalkosten, Leistung und Kühlung durch Verwenden weniger physischer Ausrüstung verringern sowie die Auslastung von Hardware verbessern, indem eine gemeinsame Nutzung von Hardware durch virtuelle Maschinen auf inaktive Ausrüstung reduziert wird.
  • In manchen Ausführungsformen kann die virtuelle Ressource eines von einem Knoten, einem Pod eines Knotens, einem Container, einem Container eines Pods, einem Prozess und einem Prozess eines Containers aufweisen. Auf diese Weise kann die Datenübertragung zwischen der Mehrzahl von Mikrodiensten umkonfiguriert werden, indem die Mehrzahl von Mikrodiensten näher zusammen verlagert wird. Die Vielfalt virtueller Ressourcen, die durch jeden der Mehrzahl von Mikrodiensten verwendet wird, kann eine Reihe von Abstraktionen mit verringerter Latenz darstellen, wenn sich die Mehrzahl von Mikrodiensten näher zusammen bewegt. Durch Verlagern der Mehrzahl von Mikrodiensten von separaten Ursprungsressourcen zu gemeinsam genutzten virtuellen Ressourcen kann die Menge des Verarbeitungsaufwands, der zur Datenübertragung zwischen den Mikrodiensten erforderlich ist, verringert werden.
  • In manchen Ausführungsformen kann das Verlagern jedes der Mehrzahl von Mikrodiensten ein Bestimmen aufweisen, ob die Eigenschaft des überwachten Datenverkehrs eine vorgegebene Anforderung erfüllt. Der Schritt kann ferner als Reaktion darauf, dass die Eigenschaft des überwachten Datenverkehrs die vorgegebene Anforderung erfüllt, ein Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource aufweisen. Auf diese Weise kann die Leichtigkeit einer Steuerung des Verlagerns jeder der Mehrzahl von Mikrodiensten verbessert werden. Folglich kann die Effizienz und Zuverlässigkeit des Verlagerns jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu der gemeinsam genutzten Ressource erhöht werden.
  • In manchen Ausführungsformen kann die vorgegebene Anforderung mindesten eines davon aufweisen, dass eine Datenmenge größer als oder gleich einem vorgegebenen Schwellenwert ist, ein Typ der Daten ein vorgegebener Typ ist und ein Durchsatz der Daten größer als oder gleich einem vorgegebenen Schwellenwert ist. Auf diese Weise kann der Umfang der Vielfalt von vorgegebenen Anforderungen, die verwendet werden, um zu bestimmen, ob jeder der Mehrzahl von Mikrodiensten verlagert werden soll, erhöht werden. Als ein Ergebnis kann die Wirksamkeit und Zuverlässigkeit des Verlagerns jedes der Mehrzahl von Mikrodiensten auf Grundlage der vorgegebenen Eigenschaft des überwachten Datenverkehrs verbessert werden.
  • In einer vorgeschlagenen Ausführungsform kann das Überwachen des Datenverkehrs zwischen der Mehrzahl von Mikrodiensten ein Empfangen von Anfragen, die zwischen der Mehrzahl von Mikrodiensten ausgetauscht werden, dann ein Überwachen von Datenverkehr, der den empfangenen Anfragen zugeordnet ist, aufweisen. Auf diese Weise kann der Datenverkehr zwischen der Mehrzahl von Mikrodiensten auf Grundlage der empfangenen Anfragen überwacht werden, die zwischen der Mehrzahl von Mikrodiensten ausgetauscht werden. Dies kann ein Sammeln von Informationen, die zum Überwachen des zu sammelnden Datenverkehrs erforderlich sind, direkt von der Quelle des Datenverkehrs ermöglichen (d.h. die zwischen der Mehrzahl von Mikrodiensten ausgetauschten Anfragen). Folglich kann die Zuverlässigkeit und Effizienz des Überwachens des Datenverkehrs verbessert werden.
  • In manchen Ausführungsformen kann das Verlagern jedes der Mehrzahl von Mikrodiensten für jeden der Mehrzahl von Mikrodiensten ein Pflegen einer ersten Instanz des Mikrodienstes an seiner Ursprungsressource, Neustarten einer zweiten Instanz des Mikrodienstes an der gemeinsam genutzten Ressource und ein Herunterfahren der zweiten Instanz des Mikrodienstes an seiner Ursprungsressource aufweisen. Auf diese Weise kann jeder der Mehrzahl von Mikrodiensten temporär statt permanent verlagert werden oder eine weitere Verlagerung erfordern, um den Mikrodienst seiner Ursprungsressource zurückzugeben. Zusätzlich kann jeder der Mehrzahl von Mikrodiensten in Bezug auf eine Interaktion (d.h. Datenübertragung) mit einem ersten Mikrodienst verlagert werden, ohne eine Interaktion mit einem zweiten Mikrodienst zu beeinflussen. Als ein Ergebnis kann dies die Zeit und die Verarbeitung verringern, die zum Verlagern jedes der Mehrzahl von Mikrodiensten erforderlich sind, daher kann die Effizienz des Verlagerns jedes der Mehrzahl von Mikrodiensten verbessert werden.
  • 1 stellt eine bildliche Darstellung eines beispielhaften verteilten Systems dar, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt sein können; Ein verteiltes System 100 kann ein Netzwerk von Computern enthalten, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Das verteilte System 100 enthält mindestens ein Netzwerk 102, welches das Medium ist, das verwendet wird, um Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern bereitzustellen, die innerhalb des verteilten Datenverarbeitungssystems 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie beispielsweise Kabel, kabellose Datenübertragungsverbindungen oder Lichtwellenleiterkabel enthalten.
  • In dem dargestellten Beispiel sind ein erster 104 und ein zweiter Server 106 zusammen mit einer Speicherungseinheit 108 mit dem Netzwerk 102 verbunden. Darüber hinaus sind Clients 110, 112 und 114 ebenfalls mit dem Netzwerk 102 verbunden. Bei den Clients 110, 112 und 114 kann es sich zum Beispiel um Personal Computer, Netzwerkcomputer oder dergleichen handeln. In dem dargestellten Beispiel stellt der erste Server 104 den Clients 110, 112, und 114 Daten wie beispielsweise Startdateien (boot files), Betriebssystemabbilder (operating system images) und Anwendungen bereit. Die Clients 110, 112 und 114 sind in dem dargestellten Beispiel Clients des ersten Servers 104. Das verteilte Verarbeitungssystem 100 kann zusätzliche Server, Clients und andere nicht gezeigte Einheiten enthalten.
  • In dem dargestellten Beispiel ist das verteilte System 100 das Internet, wobei das Netzwerk 102 für eine weltweite Ansammlung von Netzwerken und Vermittlungseinheiten (gateways) steht, die das Protokollpaket „Transmission Control Protocol/Internet Protocol“ (TCP/IP) verwenden, um miteinander Daten auszutauschen. Das Rückgrat des Internets bildet ein Backbone aus Hochgeschwindigkeitsleitungen zur Datenübertragung zwischen größeren Knoten oder Host-Computern, die aus tausenden kommerzieller, behördlicher, Bildungs- und anderen Computersystemen bestehen, die Daten und Nachrichten leiten. Natürlich kann das verteilte System 100 auch so umgesetzt sein, dass es eine Anzahl verschiedener Netzwerktypen wie zum Beispiel ein Intranet, ein lokales Netzwerk (local area network (LAN)), ein Weitverkehrsnetzwerk (wide area network (WAN)) oder dergleichen enthält. Wie oben ausgeführt ist 1 als Beispiel und nicht als Einschränkung für verschiedene Ausführungsform der vorliegenden Erfindung hinsichtlich der Architektur gedacht, und daher sollten die besonderen in 1 gezeigten Elemente nicht als Einschränkung im Hinblick auf die Umgebungen angesehen werden, in denen die veranschaulichenden Ausführungsformen der vorliegenden Erfindung umgesetzt sein können.
  • 2 ist in Blockschaubild eines Beispielsystems 200, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt sein können. Das System 200 stellt ein Beispiel für einen Computer wie den Client 110 in 1 dar, in dem sich von Computern verwendbarer Code oder Anweisungen befinden können, welche die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung umsetzen. Zum Beispiel kann das System 200 so konfiguriert sein, dass es eine Überwachungseinheit und eine Verlagerungseinheit gemäß einer Ausführungsform umsetzt.
  • In dem dargestellten Beispiel setzt das System 200 eine Knotenpunkt-Architektur (hub architecture) einschließlich einer „north bridge and memory controller hub“ (NB/MCH) 202 (Northbrigde und Knotenpunkt für Speichersteuereinheiten) und einer „south bridge and input/output (I/O) controller hub“ (SB/ICH) 204 (Southbridge und Knotenpunkt für Eingabe/Ausgabe(E/A)-Steuereinheiten) ein. Eine Verarbeitungseinheit 206, ein Hauptarbeitsspeicher 208 und ein Grafikprozessor 210 sind mit der NB/MCH 202 verbunden. Der Grafikprozessor 210 kann über einen beschleunigten Grafikanschluss (accelerated graphics port (AGP)) mit der NB/MCH 202 verbunden sein.
  • In dem dargestellten Beispiel ist der Adapter für das lokale Netzwerk (LAN) 212 mit der SB/ICH 204 verbunden. Ein Audioadapter 216, ein Tastatur- und Mausadapter 220, ein Modem 222, ein Nur-Lese-Speicher (read only memory ROM) 224, ein Festplattenlaufwerk (hard disk drive (HDD)) 226, ein CD-ROM-Laufwerk 230, Anschlüsse für einen universellen seriellen Bus (universal serial bus (USB)) und weitere Kommunikationsanschlüsse 232 sowie PCI/PCIe-Einheiten 234 sind über einen ersten Bus 238 und einen zweiten Bus 240 mit der SB/ICH 204 verbunden. Zu PCI/PCIe-Einheiten können zum Beispiel Ethernet-Adapter, Erweiterungskarten (add-in cards) und PC-Karten für Notebook-Computer zählen. PCI verwendet im Gegensatz zu PCIe eine Karten-Bus-Steuereinheit. Bei dem ROM 224 kann es sich zum Beispiel um ein grundlegendes Flash-Eingabe/Ausgabe-System (flash basic input/output system (BIOS)) handeln.
  • Die HDD 226 und das CD-ROM-Laufwerk 230 sind über den zweiten Bus 240 mit der SB/ICH 204 verbunden. Die HDD 226 und das CD-ROM-Laufwerk 230 können zum Beispiel eine integrierte Laufwerkelektronik (integrated drive electronics (IDE)) oder eine Anbindungsschnittstelle mit fortschrittlicher serieller Technologie (serial advanced technology attachment (SATA) interface) verwenden. Eine Super-E/A-Einheit (Super I/O (SIO) device) 236 kann mit der SB/ICH 204 verbunden sein.
  • Ein Betriebssystem läuft auf der Verarbeitungseinheit 206. Das Betriebssystem stellt die Steuerung vielfältiger Komponenten innerhalb des Systems 200 in 2 bereit und koordiniert sie. Als ein Client kann es sich bei dem Betriebssystem um ein kommerziell verfügbares Betriebssystem handeln. Ein objektorientiertes Programmiersystem, wie beispielsweise das Java™-Programmiersystem kann in Verbindung mit dem Betriebssystem laufen und stellt Aufrufe des Betriebssystems aus Java™-Programmen oder -Anwendungen bereit, die auf dem System 200 ausgeführt werden.
  • Als ein Server kann es sich bei dem System 200 zum Beispiel um ein Computersystem eines „IBM® eServer™ System p®“ handeln, welches das Betriebssystem „Advanced Interactive Executive (AIX®)“ oder das Betriebssystem LINUX® ausführt. Bei dem System 200 kann es sich um ein symmetrisches Mehrfachprozessorsystem (symmetric multiprocessor (SMP) system) handeln, das eine Mehrzahl von Prozessoren in der Verarbeitungseinheit 206 enthält. Alternativ kann ein Einzelprozessorsystem eingesetzt werden.
  • Anweisungen für das Betriebssystem, das Programmiersystem sowie Anwendungen oder Programme befinden sich auf Speicherungseinheiten wie der HDD 226 und können zur Ausführung durch die Verarbeitungseinheit 206 in den Hauptarbeitsspeicher 208 geladen werden. Gleichermaßen können ein oder mehrere Nachrichtenverarbeitungsprogramme geeignet sein, um durch die Speicherungseinheiten und/oder den Hauptarbeitsspeicher 208 gespeichert zu werden.
  • Die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung können durch die Verarbeitungseinheit 206 unter Verwenden von von Computern verwendbarem Programmcode durchgeführt werden, der sich in einem Speicher wie zum Beispiel dem Hauptarbeitsspeicher 208, dem ROM 224 oder in einer oder mehreren Peripherieeinheiten 226 und 230 befinden kann.
  • Ein Bussystem wie beispielsweise der in 2 gezeigte erste Bus 238 oder zweite Bus 240 kann einen oder mehrere Busse aufweisen. Selbstverständlich kann das Bussystem unter Verwenden jedes beliebigen Typs von Kommunikationsnetz (communication fabric) oder Architekturtyps umgesetzt sein, der eine Übertragung von Daten zwischen unterschiedlichen Komponenten oder Einheiten bereitstellt, die an das Netz oder die Architektur angebunden sind. Eine Kommunikationseinheit wie beispielsweise der Modem 222 oder der Netzwerkadapter 212 von 2 können eine oder mehrere Einheiten enthalten, die verwendet werden, um Daten zu übertragen und zu empfangen. Bei einem Speicher kann es sich zum Beispiel um den Hauptarbeitsspeicher 208, den ROM 224 oder einen Cache handeln wie er in der NB/MCH in 2 zu finden ist.
  • Für den Fachmann ist ersichtlich, dass die Hardware in den 1 und 2 je nach Umsetzung variieren kann. Weitere interne Hardware oder Peripherieeinheiten wie beispielsweise Flash-Speicher, entsprechender nichtflüchtiger Speicher oder optische Festplattenlaufwerke und Ähnliches können zusätzlich zu oder anstelle der in den 1 und 2 dargestellten Hardware verwendet werden. Zudem können die Prozesse der veranschaulichenden Ausführungsformen auf ein anderes Mehrfachprozessor-Datenverarbeitungssystem als das zuvor erwähnte System angewandt werden, ohne den Geist und Umfang der vorliegenden Erfindung zu verlassen.
  • Darüber hinaus kann das System 200 die Form eines von einer Anzahl unterschiedlicher Datenverarbeitungssysteme einschließlich Client-Datenverarbeitungseinheiten, Server-Datenverarbeitungseinheiten, eines Tablet-Computers, eines Laptop-Computers, eines Telefons oder einer anderen Kommunikationseinheit, eines persönlichen digitalen Assistenten (personal digital assistant (PDA)) oder Ähnliches annehmen. In manchen veranschaulichenden Beispielen kann es sich bei dem System 200 um eine transportable Computereinheit handeln, die mit Flash-Speicher konfiguriert ist, um nichtflüchtigen Speicher zum Beispiel zum Speichern von Betriebssystemdateien und/oder von Benutzern erzeugten Daten bereitzustellen. Im Wesentlichen kann es sich bei dem System 200 ohne architektonische Einschränkung um jedes beliebige bekannte oder später entwickelte Datenverarbeitungssystem handeln.
  • Nun Bezug nehmend auf 3 ist dort ein Ablaufplan eines computerumgesetzten Verfahrens zum Verwalten einer Datenübertragung zwischen einer Mehrzahl von Mikrodiensten dargestellt.
  • Schritt 310 weist ein Überwachen von Datenverkehr zwischen einer Mehrzahl von Mikrodiensten auf, um eine Eigenschaft des Datenverkehrs zu bestimmen.
  • Hier weist Schritt 310 einen Schritt 312 und 314 auf. Schritt 312 weist ein Empfangen von Anfragen auf, die zwischen der Mehrzahl von Mikrodiensten ausgetauscht werden. Schritt 314 weist ein Überwachen von Datenverkehr auf, der den empfangenen Anfragen zugeordnet ist.
  • Insbesondere weist die Eigenschaft des überwachten Datenverkehrs mindestens eines von einer Datenmenge, die sich zwischen der Mehrzahl von Mikrodiensten bewegt, einem Typ der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen, und einem Durchsatz der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen, auf.
  • Schritt 320 weist auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs ein Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource auf.
  • In dieser Ausführungsform weist Schritt 320 Schritte 322 und 324 auf. Schritt 322 weist ein Bestimmen auf, ob die Eigenschaft des überwachten Datenverkehrs eine vorgegebene Anforderung erfüllt. Schritt 324 weist als Reaktion darauf, dass die Eigenschaft des überwachten Datenverkehrs die vorgegebene Anforderung erfüllt, ein Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource auf.
  • Mittels Beispielen weist die vorgegebene Anforderung mindesten eines davon auf, dass eine Datenmenge größer als oder gleich einem vorgegebenen Schwellenwert ist, ein Typ der Daten ein vorgegebener Typ ist und ein Durchsatz der Daten größer als oder gleich einem vorgegebenen Schwellenwert ist.
  • Schritt 320 weist für jeden der Mehrzahl von Mikrodiensten ein Neustarten des Mikrodienstes an der gemeinsam genutzten Ressource und ein Herunterfahren des Mikrodienstes an seiner Ursprungsressource auf.
  • In dieser Ausführungsform weist Schritt 320 ferner ein Umkonfigurieren der Datenübertragung zwischen der Mehrzahl von Mikrodiensten auf, indem die Mehrzahl von Mikrodiensten von jeder ihrer jeweiligen Ursprungsressourcen auf einer gemeinsam genutzten Ressource gesammelt wird.
  • In dieser Ausführungsform weist Schritt 320 für jeden der Mehrzahl von Mikrodiensten ein Pflegen einer ersten Instanz des Mikrodienstes an seiner Ursprungsressource, Neustarten einer zweiten Instanz des Mikrodienstes an der gemeinsam genutzten Ressource und ein Herunterfahren der zweiten Instanz des Mikrodienstes an seiner Ursprungsressource auf. Zum Beispiel werden mehrere Instanzen der Mehrzahl von Mikrodiensten in unterschiedlichen Modi ausgeführt. Eine Instanz jedes der Mehrzahl von Mikrodiensten wird von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource verlagert. In einem Beispiel befinden sich eine erste Instanz eines ersten Mikrodienstes und eine Instanz eines zweiten Mikrodienstes in demselben Prozess, jedoch bleibt eine zweite Instanz des ersten Mikrodienstes allein in einem separaten Knoten, um die Last von Dienstanfragen von einem dritten Mikrodienst zu teilen. In einem weiteren Beispiel werden Interaktionen zwischen Diensten durch Routen dargestellt. Eine Route AB weist eine Route von einem Mikrodienst A zu einem Mikrodienst B auf, und eine Route CB weist eine Route von einem Mikrodienst C zum Mikrodienst B auf. In dem Beispiel wird die Route AB stark verwendet (d.h. enthält hohe Niveaus von Datenverkehr), und die Route CB wird nicht stark verwendet (d.h. enthält niedrige Niveaus von Datenverkehr). In diesem Szenario wird eine zweite Instanz von Mikrodienst B an einer gemeinsam genutzten Ressource mit Mikrodienst A neu gestartet und an ihrer Ursprungsressource heruntergefahren. Eine erste Instanz (d.h. eine ursprüngliche Instanz) von Mikrodienst B wird an ihrer Ursprungsressource belassen (d.h. gepflegt), so dass die Route CB nicht betroffen ist.
  • Hier weist mindestens eine der Ursprungsressourcen und der gemeinsam genutzten Ressource eine virtuelle Ressource auf.
  • Mittels Beispielen weist die virtuelle Ressource eines von einem Knoten, einem Pod eines Knotens, einem Container, einem Container eines Pods, einem Prozess und einem Prozess eines Containers auf. Zum Beispiel werden zwei Mikrodienste auf zwei separaten Knoten heruntergefahren und auf einem gemeinsam genutzten Knoten neu gestartet. In einem weiteren Beispiel können zwei Mikrodienste auf demselben Knoten heruntergefahren werden und innerhalb eines gemeinsam genutzten Pods hochgefahren. In einem weiteren Beispiel können zwei Mikrodienste in demselben Pod heruntergefahren werden und in einem gemeinsam genutzten Container als zwei Prozesse hochgefahren werden. In einem weiteren Beispiel können zwei Mikrodienste in zwei separaten Prozessen heruntergefahren werden und innerhalb eines gemeinsam genutzten Prozesses hochgefahren werden.
  • Zum Beispiel stellt die vorstehend offenbarte Liste virtueller Ressourcen eine Reihe von Abstraktionen mit verringerter Latenz dar, wenn sich die Ressourcen näher beieinander befinden. In einem Beispiel weist die Datenübertragung zwischen zwei Mikrodiensten, die sich auf zwei separaten Knoten befinden, Netzwerkdatenverkehr zwischen separaten Servern auf. In einem Beispiel weist die Datenübertragung zwischen zwei Mikrodiensten, die sich auf zwei separaten Containern befinden, Netzwerkdatenverkehr auf einem gemeinsam genutzten Server auf. In einem Beispiel weist die Datenübertragung zwischen zwei Mikrodiensten, die sich in zwei separaten Prozessen befinden, prozessübergreifende Aufrufe auf. In einem Beispiel weist die Datenübertragung zwischen zwei Mikrodiensten, die sich in einem gemeinsam genutzten Prozess befinden, direkte Aufrufe auf. Das Ausmaß, zu dem die Mikrodienste verlagert werden können, hängt von der Infrastruktur der Cloud-Umgebung und der Mikrodienst-Laufzeit ab (d.h. ob Mikrodienste eine verwaltete, dynamische oder kompilierte Laufzeit aufweisen).
  • In einer weiteren Ausführungsform weist die jeweilige Ursprungsressource jedes der Mehrzahl von Mikrodiensten eine gemeinsam genutzte Ursprungsressource der Mehrzahl von Mikrodiensten auf. In diesem Beispiel war die Mehrzahl von Mikrodiensten zuvor kollabiert und wurde nun expandiert, indem jeder der Mehrzahl von Mikrodiensten von seinen jeweiligen Ursprungsressourcen (d.h. der gemeinsam genutzten Ursprungsressource der zuvor kollabierten Mehrzahl von Mikrodiensten) zu einer gemeinsam genutzten Ressource (d.h. einer gemeinsam genutzten Zielressource) verlagert wurde. Zum Beispiel weist die gemeinsam genutzte Ressource eine Ursprungsressource der Mehrzahl von Mikrodiensten auf. Insofern wird die Mehrzahl von Mikrodiensten von einer Ursprungsressource, die durch die Mehrzahl von Mikrodiensten gemeinsam genutzt wird, zu einer gemeinsam genutzten Ressource verteilt, auf der sich mindestens einer der Mehrzahl von Mikrodiensten zuvor befand.
  • Nun Bezug nehmend auf 4 ist dort ein vereinfachtes Blockschaubild einer beispielhaften Ausführungsform eines Systems zum Verwalten einer Datenübertragung zwischen einer Mehrzahl von Mikrodiensten dargestellt.
  • Das System weist eine Überwachungseinheit 410 auf, die so konfiguriert ist, dass sie Datenverkehr zwischen einer Mehrzahl von Mikrodiensten überwacht, um eine Eigenschaft des Datenverkehrs zu bestimmen. Das System weist ferner eine Verlagerungseinheit 420 auf, die so konfiguriert ist, dass sie auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs jeden der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource verlagert.
  • Hier weist die Überwachungseinheit 410 eine Empfangseinheit 412 auf, die so konfiguriert ist, dass sie Anfragen empfängt, die zwischen den Mikrodiensten ausgetauscht werden. Die Überwachungseinheit 410 ist ferner so konfiguriert, dass sie Datenverkehr überwacht, der den empfangenen Anfragen zugeordnet ist.
  • Mittels Beispielen weist die Eigenschaft des überwachten Datenverkehrs mindestens eines von einer Datenmenge, die sich zwischen der Mehrzahl von Mikrodiensten bewegt, einem Typ der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen, und einem Durchsatz der Daten auf, die sich zwischen der Mehrzahl von Mikrodiensten bewegen.
  • Hier weist die Verlagerungseinheit 420 eine Neustarteinheit 422 auf, die so konfiguriert ist, dass sie für jeden der Mehrzahl von Mikrodiensten den Mikrodienst an der gemeinsam genutzten Ressource neu startet und den Mikrodienst an seiner Ursprungsressource herunterfährt.
  • Die Verlagerungseinheit 420 weist eine Umkonfiguriereinheit 424 auf, die so konfiguriert ist, dass sie die Datenübertragung zwischen der Mehrzahl von Mikrodiensten umkonfiguriert, indem die Mehrzahl von Mikrodiensten von jeder ihrer jeweiligen Ursprungsressourcen auf einer gemeinsam genutzten Ressource gesammelt wird.
  • In dieser Ausführungsform ist die Verlagerungseinheit 420 ferner so konfiguriert, dass sie bestimmt, ob die Eigenschaft des überwachten Datenverkehrs eine vorgegebene Anforderung erfüllt, und als Reaktion darauf, dass die Eigenschaft des überwachten Datenverkehrs die vorgegebene Anforderung erfüllt, jeden der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu der gemeinsam genutzten Ressource verlagert.
  • Mittels Beispielen weist die vorgegebene Anforderung mindesten eines davon auf, dass eine Datenmenge größer als oder gleich einem vorgegebenen Schwellenwert ist, ein Typ der Daten ein vorgegebener Typ ist und ein Durchsatz der Daten größer als oder gleich einem vorgegebenen Schwellenwert ist.
  • In dieser Ausführungsform ist die Neustarteinheit 422 ferner so konfiguriert, dass sie für jeden der Mehrzahl von Mikrodiensten eine erste Instanz des Mikrodienstes an seiner Ursprungsressource pflegt, eine zweiten Instanz des Mikrodienstes an der gemeinsam genutzten Ressource neu startet und die zweite Instanz des Mikrodienstes an seiner Ursprungsressource herunterfährt.
  • Insbesondere weist mindestens eine der Ursprungsressourcen und der gemeinsam genutzten Ressource eine virtuelle Ressource auf.
  • Mittels Beispielen weist die virtuelle Ressource eines von einem Knoten, einem Pod eines Knotens, einem Container, einem Container eines Pods, einem Prozess und einem Prozess eines Containers auf.
  • Nun Bezug nehmend auf 5A bis 5E sind dort vereinfachte Blockschaubilder von Beispielen der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten dargestellt.
  • In einem Beispiel stellen ein Dienst A 520 und ein Dienst B 522 zwei unterschiedliche Mikrodienste innerhalb einer verteilten Anwendung in einem Containerorchestrierungssystem bereit. Der Dienst A 520 ruft häufig den Dienst B 522 über eine veröffentlichte Anwendungsprogrammierschnittstelle (API), zum Beispiel OpenAPI, auf. Sowohl der Dienst A 520 als auch der Dienst B 522 sind als Anwendungen in einer plattformübergreifenden Open-Source-Laufzeitumgebung umgesetzt. Die Anwendungen sind in Dateien eingebaut, die mehrere Schichten aufweisen, die verwendet werden, um Code in einem Container auf einem auf Standard beruhenden Betriebssystemabbild (OS image) auszuführen, d.h. einer Datei, die das Betriebssystem, das ausführbar ist, und beliebige Datendateien enthält, die sich auf Programme auf dem Betriebssysteme beziehen (z.B. ein Systemabbild, ein Plattenabbild oder ein Prozessabbild). Nachdem sie eingebaut sind, werden die Anwendungen dann als Container innerhalb von Pods in dem Containerorchestrierungssystem bereitgestellt.
  • Während der Erweiterung wird der Dienst A 520 unter Verwenden von Anwendungsprogrammierschnittstellen entwickelt (d.h. erzeugt), die aus der veröffentlichten Anwendungsprogrammierschnittstellen-Definition (z.B. OpenAPI-Definition) des Dienstes B 522 erzeugt werden. In einer Ausführungsform wird dies mittels eines Clientseitigen Gerüstwerkzeugs für Webanwendungen erzeugt, um einen Packungsverwalter zu erzeugen, der in dem Dienst A 520 als eine normale Abhängigkeit enthalten sein kann. Der erzeugte Code von Dienst A 520 wickelt Aufrufe von dem Dienst A 520 zu dem Dienst B 522 ab. Der erzeugte Code bestimmt den geeigneten Transport auf Grundlage von mindestens einem von Aufbauzeit, Konfigurationsparametern, Bereitstellungszeit-Konfigurationsparametern und Laufzeit-Konfigurationsparametern. Zum Beispiel werden während der Aufbauzeit sowohl der Dienst A 520 als auch der Dienst B 522 in denselben Container gepackt. Zum Beispiel wird zu der Bereitstellungszeit eine Instanz des Containers mit einem Konfigurationsparameter (z.B. einer Umgebungsvariablen) gestartet, der identifiziert, welche Dienste von Dienst A 520 und Dienst B 522 durch die Instanz zu starten sind. Zum Beispiel berichten zur Laufzeit Instanzen von sowohl Dienst A 510 als auch Dienst B 522 ihre Last an die Überwachungseinheit 410.
  • 5A stellt eine knotenübergreifende Datenübertragung zwischen dem Dienst A 520 und dem Dienst B 522 dar. Der Dienst A 520 ist in einem ersten Knoten 510, und der Dienst B 522 ist in einem zweiten Knoten 510, so dass die Dienste zwischen den Knoten 510 Daten austauschen. Das „Hypertext Transfer Protocol“ (HTTP) weist ein Marshalling, Verschlüsseln, Netzwerken, Entschlüsseln, dann Unmarshalling einer Nachricht zwischen dem Dienst A 520 und dem Dienst B 522 auf. 5B stellt eine Pod-übergreifende Datenübertragung (d.h. eine knoteninterne Datenübertragung) zwischen dem Dienst A 520 und dem Dienst B 522 dar. Der Dienst A 520 ist in einem ersten Pod 512, und der Dienst B 522 ist in einem zweiten Pod 512, so dass die Dienste zwischen den Pods 512 Daten austauschen. Beide Pods sind innerhalb desselben Knotens 510. Das „Hypertext Transfer Protocol“ (HTTP) weist ein Marshalling, Verschlüsseln, Entschlüsseln, dann Unmarshalling einer Nachricht zwischen dem Dienst A 520 und dem Dienst B 522 auf. 5C stellt eine containerübergreifende Datenübertragung (d.h. eine Pod-interne Datenübertragung) zwischen dem Dienst A 520 und dem Dienst B 522 dar. Der Dienst A 520 ist in einem Container 514, und der Dienst B 522 ist in einem zweiten Container 514, so dass die Dienste zwischen den Containern 514 Daten austauschen. Beide Container 514 sind innerhalb desselben Pods 512. Das „Hypertext Transfer Protocol“ (HTTP) weist ein Marshalling, dann Unmarshalling einer Nachricht zwischen dem Dienst A 520 und dem Dienst B 522 auf. 5D stellt eine prozessübergreifende Datenübertragung (d.h. eine containerinterne Datenübertragung) zwischen dem Dienst A 520 und dem Dienst B 522 dar. Der Dienst A 520 ist in einem Prozess, und der Dienst B 522 ist in einem zweiten Prozess, so dass die Dienste zwischen den Prozessen Daten austauschen. Beide Prozesse sind innerhalb desselben Containers 514. Die prozessübergreifende Datenübertragung bezieht kein „Hypertext Transfer Protokoll“ ein. 5E stellt einen prozessinternen Funktionsaufruf zwischen dem Dienst A 520 und dem Dienst B 522 dar. Der Dienst A 520 und der Dienst B 522 sind in einem gemeinsam genutzten Prozess, so dass die Dienste innerhalb des gemeinsam genutzten Prozesses Daten austauschen. Die prozessübergreifende Datenübertragung bezieht kein „Hypertext Transfer Protokoll“ ein.
  • Wenn sich die Last auf dem gesamten Containerorchestrierungssystem ändert, wird die Art, in der der Dienst A 520 und der Dienst B 522 Daten austauschen, geändert (d.h. mittels der Verlagerungseinheit 420). Zum Beispiel wird die Datenübertragung von Podübergreifender Datenübertragung unter Verwenden von „Transport Layer Security“ (TLS) (5B) in Pod-übergreifende Datenübertragung zwischen Containern ohne TLS geändert (5C). Als ein Ergebnis ist der Aufwand, der zum Verschlüsseln und Entschlüsseln von Nachrichten erforderlich ist, nicht länger erforderlich und wird daher eingespart.
  • In einem weiteren Beispiel werden einzelne Container so geleitet, dass sie ihre prozessinternen Instanzen des Dienstes A 520 und des Dienstes B 522 starten und stoppen. Der Dienst A 520 und der Dienst B 522 werden in einen gemeinsam genutzten Container zusammengepackt, daher kann eine laufende Instanz von Dienst A 520 ihre eigene Instanz von Dienst B starten, sodass sich die API-Schicht von einem Erzeugen von HTTP-REST-Aufrufen in reale Funktionsaufrufe ändert (5E).
  • In einem Beispiel zählt die Überwachungseinheit API-Aufrufe und/oder verwendet fortschrittliche bekannte Maßzahlen wie beispielsweise Profilieren oder eine andere Instrumentierung, um Verarbeitungsaufwände zu berichten, die der Datenübertragung zugeordnet sind (d.h. Überwachen von Datenverkehr zwischen einer Mehrzahl von Mikrodiensten, um eine Eigenschaft des Datenverkehrs zu bestimmen). Die Verlagerungseinheit entscheidet unter Verwenden von heuristischen Techniken, wie die Dienste organisiert werden sollen. Zum Beispiel besitzt die Verlagerungseinheit Regeln dazu, wie viele unabhängige Instanzen für Redundanz gepflegt werden müssen, ob eine Gesamtantwortzeit zu priorisieren ist oder eine Anzahl von Containern in Verwendung minimiert werden soll, um abrechenbare Speicherkosten zu verringern. Diese Techniken können als unterschiedliche Profile definiert werden, zum Beispiel wird ein Entwicklungsprofil definiert, das die Anzahl von Containern in Verwendung auf einen Minimalwert skaliert, um sie auf einem System eines lokalen Softwareentwicklers auszuführen.
  • Mittels eines weiteren Beispiels, wie in 6 veranschaulicht, können Ausführungsformen ein Computersystem 70 aufweisen, das einen Teil eines Netzwerksystems 7 bilden kann. Zum Beispiel kann eine Verlagerungseinheit durch das Computersystem 70 umgesetzt werden. Zu den Komponenten des Computersystems/Servers 70 können, ohne auf diese beschränkt zu sein, eine oder mehrere Verarbeitungsanordnungen, die zum Beispiel Prozessoren oder Verarbeitungseinheiten 71 aufweisen, ein Systemspeicher 74 und ein Bus 90 gehören, der vielfältige Systemkomponenten einschließlich des Systemspeichers 74 mit der Verarbeitungseinheit 71 verbindet.
  • Der Systemspeicher 74 kann durch ein Computersystem lesbare Medien in der Form von flüchtigem Speicher, wie beispielsweise einen Direktzugriffsarbeitsspeicher (random access memory (RAM)) 75, und/oder einen Cachearbeitsspeicher 76 enthalten. Das Computersystem/der Server 70 kann ferner weitere Wechsel-/Nicht-Wechsel-, flüchtige/nichtflüchtige Computersystemspeicherungsmedien enthalten. In solchen Beispielen kann jedes durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 90 verbunden sein. Der Speicher 74 kann mindestens ein Programmprodukt enthalten, das einen Satz (z.B. mindestens eines) von Programmmodulen enthält, die so konfiguriert sind, dass sie die Funktionen von vorgeschlagenen Ausführungsformen ausführen. Zum Beispiel kann der Speicher 74 ein Computerprogrammprodukt mit einem durch die Verarbeitungseinheit 71 ausführbaren Programm enthalten, um das System zu veranlassen, ein Verfahren zum Verwalten der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten durchzuführen.
  • Ein Programm/Dienstprogramm 78 mit einem Satz (mindestens einem) von Programmmodulen 79 kann in dem Speicher 74 gespeichert werden. Die Programmmodule 79 führen allgemein die Funktionen und/oder Verfahrensweisen von vorgeschlagenen Ausführungsformen zum Verwalten der Datenübertragung zwischen einer Mehrzahl von Mikrodiensten aus.
  • Das Computersystem/der Server 70 kann auch mit einer oder mehreren externen Einheiten 80 Daten austauschen, wie beispielsweise einer Tastatur, einer Zeigeeinheit, einer Anzeige 85 usw.; einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/dem Server 70 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die das Computersystem/den Server 70 befähigen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe(E/A)-Schnittstellen 72 erfolgen. Des Weiteren kann das Computersystem/der Server 70 mit einem oder mehreren Netzwerken, wie beispielsweise einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet), über einen Netzwerkadapter 73 Daten austauschen (z.B. wiedererzeugten Inhalt einem System oder Benutzer mitzuteilen).
  • Wenn im Kontext der vorliegenden Anmeldung Ausführungsformen der vorliegenden Erfindung ein Verfahren bilden, sollte es sich verstehen, dass ein solches Verfahren ein Prozess zur Ausführung durch einen Computer ist, d.h. ein computerumsetzbares Verfahren ist. Die verschiedenen Schritte des Verfahrens spiegeln daher verschiedene Teile eines Computerprogramms wider, d.h. verschiedene Teile eines oder mehrerer Algorithmen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speicherungsmedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speicherungsmedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speicherungsmedium kann es sich zum Beispiel um eine elektronische Speicherungseinheit, eine magnetische Speicherungseinheit, eine optische Speicherungseinheit, eine elektromagnetische Speicherungseinheit, eine Halbleiterspeicherungseinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speicherungsmediums gehören die Folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein „Storage Class Memory“ (SCM), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speicherungsmedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speicherungsmedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speicherungseinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server umfassen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speicherungsmedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speicherungsmedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speicherungsmedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt umfasst, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) umfassen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der vielfältigen Ausführungsformen der vorliegenden Erfindung wurden zu Zwecken der Veranschaulichung vorgelegt, sind jedoch nicht als erschöpfend oder auf die offenbarten Ausführungsformen beschränkt beabsichtigt. Viele Modifikationen und Variationen sind für den Fachmann ersichtlich, ohne von dem Umfang und Geist der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt anzutreffenden Technologien am besten zu erklären oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (20)

  1. Computerumgesetztes Verfahren, aufweisend: Bestimmen einer Eigenschaft von Datenverkehr durch Überwachen des Datenverkehrs zwischen einer Mehrzahl von Mikrodiensten; und Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs.
  2. Computerumgesetztes Verfahren nach Anspruch 1 wobei das Verlagern jedes der Mehrzahl von Mikrodiensten aufweist: für jeden der Mehrzahl von Mikrodiensten ein Neustarten des Mikrodienstes an der gemeinsam genutzten Ressource und ein Herunterfahren des Mikrodienstes an seiner Ursprungsressource.
  3. Computerumgesetztes Verfahren nach Anspruch 1 wobei das Verlagern jedes der Mehrzahl von Mikrodiensten aufweist: Umkonfigurieren der Datenübertragung zwischen der Mehrzahl von Mikrodiensten, indem die Mehrzahl von Mikrodiensten von jeder ihrer jeweiligen Ursprungsressourcen auf der gemeinsam genutzten Ressource gesammelt wird.
  4. Computerumgesetztes Verfahren nach Anspruch 1, wobei die Eigenschaft des überwachten Datenverkehrs mindestens eines aufweist von: einer Datenmenge, die sich zwischen der Mehrzahl von Mikrodiensten bewegt; einem Typ der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen; und einem Durchsatz der Daten, die sich zwischen der Mehrzahl von Mikrodiensten bewegen.
  5. Computerumgesetztes Verfahren nach Anspruch 1, wobei mindestens eine der Ursprungsressource und der gemeinsam genutzten Ressource eine virtuelle Ressource aufweist.
  6. Computerumgesetztes Verfahren nach Anspruch 5, wobei die virtuelle Ressource eines aufweist von: einem Knoten; einem Pod eines Knotens; einem Container; einem Container eines Pods; einem Prozess; und einem Prozess eines Containers.
  7. Computerumgesetztes Verfahren nach Anspruch 1 wobei das Verlagern jedes der Mehrzahl von Mikrodiensten aufweist: Bestimmen, ob die Eigenschaft des überwachten Datenverkehrs eine vorgegebene Anforderung erfüllt; und als Reaktion darauf, dass die Eigenschaft des überwachten Datenverkehrs die vorgegebene Anforderung erfüllt, ein Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu der gemeinsam genutzten Ressource.
  8. Computerumgesetztes Verfahren nach Anspruch 7, wobei die vorgegebene Anforderung mindestens eines davon aufweist: dass eine Datenmenge größer als oder gleich einem vorgegebenen Schwellenwert ist; dass ein Typ der Daten ein vorgegebener Typ ist; und dass ein Durchsatz der Daten größer als oder gleich einem vorgegebenen Schwellenwert ist.
  9. Computerumgesetztes Verfahren nach Anspruch 1 wobei das Überwachen des Datenverkehrs zwischen der Mehrzahl von Mikrodiensten aufweist: Empfangen von Anfragen, die zwischen der Mehrzahl von Mikrodiensten ausgetauscht werden; und Überwachen von Datenverkehr, der den empfangenen Anfragen zugeordnet ist.
  10. Computerumgesetztes Verfahren nach Anspruch 1 wobei das Verlagern jedes der Mehrzahl von Mikrodiensten für jeden der Mehrzahl von Mikrodiensten aufweist: Pflegen einer ersten Instanz des Mikrodienstes an seiner Ursprungsressource; Neustarten einer zweiten Instanz des Mikrodienstes an der gemeinsam genutzten Ressource; und Herunterfahren der zweiten Instanz des Mikrodienstes an seiner jeweiligen Ursprungsressource;
  11. Computerprogrammprodukt, aufweisend: ein oder mehrere computerlesbare Speicherungsmedien und auf dem einen oder den mehreren computerlesbaren Speicherungsmedien gespeicherte Programmanweisungen, wobei die Programmanweisungen aufweisen: Programmanweisungen zum Bestimmen einer Eigenschaft von Datenverkehr durch Überwachen des Datenverkehrs zwischen einer Mehrzahl von Mikrodiensten; und Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs.
  12. Computerumgesetztes Verfahren nach Anspruch 11, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten aufweist: für jeden der Mehrzahl von Mikrodiensten Programmanweisungen zum Neustarten des Mikrodienstes an der gemeinsam genutzten Ressource und Herunterfahren des Mikrodienstes an seiner Ursprungsressource.
  13. Computerprogrammprodukt nach Anspruch 11, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten aufweisen: Programmanweisungen zum Umkonfigurieren der Datenübertragung zwischen der Mehrzahl von Mikrodiensten, indem die Mehrzahl von Mikrodiensten von jeder ihrer jeweiligen Ursprungsressourcen auf der gemeinsam genutzten Ressource gesammelt wird.
  14. Computerprogrammprodukt nach Anspruch 11, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten aufweisen: Programmanweisungen zum Bestimmen, ob die Eigenschaft des überwachten Datenverkehrs eine vorgegebene Anforderung erfüllt; und Programmanweisungen, um als Reaktion darauf, dass die Eigenschaft des überwachten Datenverkehrs die vorgegebene Anforderung erfüllt, jeden der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu der gemeinsam genutzten Ressource zu verlagern.
  15. Computerprogrammprodukt nach Anspruch 11, wobei die Programmanweisungen zum Überwachen jedes der Mehrzahl von Mikrodiensten aufweisen: Programmanweisungen zum Empfangen von Anfragen, die zwischen der Mehrzahl von Mikrodiensten ausgetauscht werden; und Programmanweisungen zum Überwachen von Datenverkehr, der den empfangenen Anfragen zugeordnet ist.
  16. Computerprogrammprodukt nach Anspruch 11, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten für jeden der Mehrzahl von Mikrodiensten aufweist: Programmanweisungen zum Pflegen einer ersten Instanz des Mikrodienstes an seiner Ursprungsressource; Programmanweisungen zum Neustarten einer zweiten Instanz des Mikrodienstes an der gemeinsam genutzten Ressource; und Programmanweisungen zum Herunterfahren der zweiten Instanz des Mikrodienstes an seiner jeweiligen Ursprungsressource.
  17. Computersystem aufweisend: einen oder mehrere Computerprozessoren; ein oder mehrere computerlesbare Speicherungsmedien; und Programmanweisungen zum Bestimmen einer Eigenschaft von Datenverkehr durch Überwachen des Datenverkehrs zwischen einer Mehrzahl von Mikrodiensten; und Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu einer gemeinsam genutzten Ressource auf Grundlage der bestimmten Eigenschaft des überwachten Datenverkehrs.
  18. Computersystem nach Anspruch 17, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten aufweist: für jeden der Mehrzahl von Mikrodiensten Programmanweisungen zum Neustarten des Mikrodienstes an der gemeinsam genutzten Ressource und zum Herunterfahren des Mikrodienstes an seiner Ursprungsressource.
  19. Computersystem nach Anspruch 17, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten aufweisen: Programmanweisungen zum Umkonfigurieren der Datenübertragung zwischen der Mehrzahl von Mikrodiensten, indem die Mehrzahl von Mikrodiensten von jeder ihrer jeweiligen Ursprungsressourcen auf der gemeinsam genutzten Ressource gesammelt wird.
  20. Computersystem nach Anspruch 17, wobei die Programmanweisungen zum Verlagern jedes der Mehrzahl von Mikrodiensten aufweisen: Programmanweisungen zum Bestimmen, ob die Eigenschaft des überwachten Datenverkehrs eine vorgegebene Anforderung erfüllt; und Programmanweisungen, um als Reaktion darauf, dass die Eigenschaft des überwachten Datenverkehrs die vorgegebene Anforderung erfüllt, jeden der Mehrzahl von Mikrodiensten von seiner jeweiligen Ursprungsressource zu der gemeinsam genutzten Ressource zu verlagern.
DE112021003348.4T 2020-08-05 2021-07-27 Verwalten von datenübertragung zwischen mikrodiensten Granted DE112021003348T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/985,265 2020-08-05
US16/985,265 US11153227B1 (en) 2020-08-05 2020-08-05 Managing communication between microservices
PCT/IB2021/056793 WO2022029560A1 (en) 2020-08-05 2021-07-27 Managing communication between microservices

Publications (1)

Publication Number Publication Date
DE112021003348T5 true DE112021003348T5 (de) 2023-04-13

Family

ID=78083066

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021003348.4T Granted DE112021003348T5 (de) 2020-08-05 2021-07-27 Verwalten von datenübertragung zwischen mikrodiensten

Country Status (6)

Country Link
US (1) US11153227B1 (de)
JP (1) JP2023536304A (de)
CN (1) CN115777192A (de)
DE (1) DE112021003348T5 (de)
GB (1) GB2613725A (de)
WO (1) WO2022029560A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599387B2 (en) * 2021-06-30 2023-03-07 Dell Products L.P. Re-initiation of microservices utilizing context information provided via service calls
CN114826866B (zh) * 2022-03-31 2022-11-15 北京翼辉信息技术有限公司 跨平台微服务体系结构、计算设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1760989A1 (de) * 2005-08-30 2007-03-07 Alcatel Webdienste in einem gleichrangigen Netz
US11153223B2 (en) * 2016-04-07 2021-10-19 International Business Machines Corporation Specifying a disaggregated compute system
US9716617B1 (en) * 2016-06-14 2017-07-25 ShieldX Networks, Inc. Dynamic, load-based, auto-scaling network security microservices architecture
US10866851B2 (en) * 2016-09-28 2020-12-15 Netflix, Inc. Determining the failure resiliency of a service in a distributed computing system
US20180136931A1 (en) 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US10382257B2 (en) 2017-03-16 2019-08-13 International Business Machines Corporation Microservices communication pattern for fault detection in end-to-end flows
US10523507B2 (en) * 2017-05-11 2019-12-31 Nirmata, Inc. Method and system for tuning performance of microservices-based applications
US10599499B2 (en) 2017-09-30 2020-03-24 Oracle International Corporation API registry in a container platform providing property-based API functionality
US20190253274A1 (en) * 2018-02-14 2019-08-15 Megaport (Services) Pty Ltd. Network interconnection service
CN108924221B (zh) * 2018-06-29 2020-08-25 华为技术有限公司 分配资源的方法和装置
US10911332B2 (en) * 2018-12-17 2021-02-02 Cisco Technology, Inc. Time sensitive networking in a microservice environment
CN109743199A (zh) * 2018-12-25 2019-05-10 中国联合网络通信集团有限公司 基于微服务的容器化管理***
US11182474B2 (en) * 2019-01-24 2021-11-23 Vmware, Inc. Common serverless security API
US11012520B2 (en) * 2019-03-11 2021-05-18 International Business Machines Corporation Manage a network of microservices
US20200351286A1 (en) * 2019-05-03 2020-11-05 ShieldX Networks, Inc. Configuring an island virtual switch for provisioning of network security services
US11455224B2 (en) * 2019-05-16 2022-09-27 Citrix Systems, Inc Displaying a service graph in association with a time of a detected anomaly
US10924367B2 (en) * 2019-05-17 2021-02-16 Citrix Systems, Inc. Using service graphs to compare performance of a plurality of versions of a microservice
US11057487B2 (en) * 2019-05-17 2021-07-06 Citrix Systems, Inc. Systems and methods for recording metadata about microservices for requests to the microservices
US11055191B2 (en) * 2019-05-17 2021-07-06 Citrix Systems, Inc. Service graph highlights missing nodes and links

Also Published As

Publication number Publication date
GB2613725A (en) 2023-06-14
GB202303065D0 (en) 2023-04-19
CN115777192A (zh) 2023-03-10
WO2022029560A1 (en) 2022-02-10
US11153227B1 (en) 2021-10-19
JP2023536304A (ja) 2023-08-24

Similar Documents

Publication Publication Date Title
DE112016003726B4 (de) Dynamisch definierte virtuelle private Netzwerktunnel in hybriden Cloud-Umgebungen
DE102017217971B4 (de) Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting
DE102016222048B4 (de) Dynamisch definierte virtuelle private netzwerktunnel in hybriden cloud-umgebungen
DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE112011100808B4 (de) System und Verfahren zum Unterstützen der Instanziierung und Migration virtueller Maschinen
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112014002847B4 (de) Verwenden von Client-Ressourcen während Mobilitätsoperationen
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
DE112021003348T5 (de) Verwalten von datenübertragung zwischen mikrodiensten
DE112011101633T5 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE112013004187T5 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE112021006595T5 (de) Benutzerkontextmigration basierend auf einem berechnungsdiagramm in einer künstlichen intelligenzanwendung, die in einer edge-computing-umgebung ausgeführt wird
DE102013205572A1 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
DE112022003720T5 (de) Verwenden eines fernen pods in kubernetes
DE102020110143A1 (de) Standortbasierte virtualisierungs-workload-platzierung
DE102016222861A1 (de) Transparentes, sicheres Durchführen von Abrufvorgängen
DE112021003908T5 (de) Föderales maschinenlernen durch verwenden von ortsabhängigem hashing
DE112020004967T5 (de) Änderungsverwaltung und analytik für microservices
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112020004760T5 (de) Steuern von interaktionen mit einer skalierbaren anwendung
DE112022002615T5 (de) Kontinuierliche funktionsfähigkeit und integrität von anwendungen während eines migrationsvorgangs
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
DE112017005512T5 (de) Datenübertragung innerhalb von geschäftsräumen und ausserhalb von geschäftsräumen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0067100400

Ipc: H04L0041081600

R016 Response to examination communication
R018 Grant decision by examination section/examining division