DE202014010885U1 - Beschleunigung basierend auf zwischengespeicherte Flüsse - Google Patents

Beschleunigung basierend auf zwischengespeicherte Flüsse Download PDF

Info

Publication number
DE202014010885U1
DE202014010885U1 DE202014010885.4U DE202014010885U DE202014010885U1 DE 202014010885 U1 DE202014010885 U1 DE 202014010885U1 DE 202014010885 U DE202014010885 U DE 202014010885U DE 202014010885 U1 DE202014010885 U1 DE 202014010885U1
Authority
DE
Germany
Prior art keywords
request
remote procedure
parallel
execution
procedure calls
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
DE202014010885.4U
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 DE202014010885U1 publication Critical patent/DE202014010885U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

System, das Folgendes umfasst: einen Prozessor; Ein Prozessor-lesbarer Speicher, in dem Instruktionen gespeichert sind, die bewirken, dass der Prozessor ein Verfahren ausführt, das folgende Schritte umfasst: Empfangen einer Inhaltsanforderung von einem Zugriffsgeräts an einem Webserver; Analysieren der empfangenen Inhaltsanforderung am dem Webserver, um zu bestimmen, ob die empfangene Inhaltsanforderung dieselbe ist wie eine zuvor durch den Webserver ausgeführte Inhaltsanforderung; als Reaktion auf das Bestimmen, ob die empfangene Inhaltsanforderung dieselbe wie eine zuvor ausgeführte Inhaltsanforderung ist, Identifizieren eines oder mehrerer Fernprozeduraufrufe, die separat parallel zur Ausführung der empfangenen Inhaltsanforderung auf Grundlage der zuvor ausgeführten Inhaltsanforderung ausgeführt werden können, und Initiieren der Ausführung der identifizierten Fernprozeduraufrufe parallel zur seriellen Ausführung der empfangenen Inhaltsanforderung; lokales Zwischenspeichern von Daten auf dem Webserver, die als Reaktion auf die parallele Ausführung der identifizierten Fernprozeduraufrufe empfangen werden; und Bereitstellen der zwischengespeicherten Daten an das Zugriffsgerät als Reaktion auf die serielle Ausführung der empfangenen Inhaltsanforderung.

Description

  • Hintergrund:
  • Zunehmend fordern dynamische Benutzer in komplexen Großrechenumgebungen oft viele serielle RPCs an unterschiedlichen Backends an. Diese RPCs sind für Ingenieure sehr teuer zu optimieren; Optimierungen bedeuten eine erhebliche technische Komplexität und hohe Wartungskosten, und fügen Systemen oft Latenz hinzu.
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Selbst mit perfekt optimierter Handcodierung, um einen Teil dieser RPCs zu parallelisieren, sind sie weiterhin typischerweise viele serialisierte Blöcke von RPCs. Dies führt zu einer erhöhten Latenz, und die Kosten zur Reduzierung der Latenz sind sehr hoch in Bezug auf Engineering-Zeitaufwand und System-Komplexität.
  • Zusammenfassung
  • Ausführungsformen von Lösungen, die hierin diskutiert werden, können sich auf ein System beziehen, das Folgendes umfasst: einen Prozessor; einen Prozessor-lesbaren Speicher, in dem Befehle gespeichert werden, die den Prozessor veranlassen, ein Verfahren auszuführen, mit folgenden Schritten: Empfangen einer Inhaltsanforderung, wobei die Inhaltsanforderung mindestens eine Datenanforderung für Information aus einer Datenbank enthält; Analysieren der empfangenen Inhaltsanforderung; Bestimmen, ob die analysierte Inhaltsanforderung mindestens eine Datenanforderung enthält, die separat parallel zur Ausführung der empfangenen Inhaltsanforderung ausgeführt werden kann; als Reaktion auf eine Bestimmung, dass die empfangene Inhaltsanforderung mindestens eine Datenanforderung enthält, die separat parallel zur empfangenen Inhaltsanforderung ausgeführt werden kann, Ausführung der mindestens einen Datenanforderung parallel zur Ausführung der empfangenen Inhaltsanforderung; wobei das Ausführen das Senden der mindestens einen Datenanforderung an mindestens eine Datenbank zur Ausführung umfasst; Empfangen der angeforderten Daten von der mindestens einer Datenbank als Reaktion auf die mindestens eine Datenanforderung; lokales Speichern der empfangenen, angeforderten Daten; und Bereitstellen der gespeicherten empfangenen angefragten Daten als Reaktion auf die Ausführung der empfangenen Inhaltsanforderung.
  • Bei einigen Ausführungsformen enthält die Inhaltsanforderung zwei oder mehr Datenanforderungen für Informationen von einer oder mehreren Datenbanken, wobei die zwei oder mehreren Datenanforderungen eine erste Datenanforderung und eine zweite Datenanforderung enthalten.
  • Bei einigen Ausführungsformen umfasst die Initiierung der Ausführung das Initiieren der Ausführung der ersten Datenanforderungen parallel zur zweiten Datenanforderung und parallel zur empfangenen Inhaltsanforderung.
  • Bei einigen Ausführungsformen enthält das Empfangen von angeforderten Daten das Empfangen angeforderter Daten als Reaktion auf die erste Datenanforderung und das Empfangen angeforderter Daten als Reaktion auf die zweite Datenanforderung.
  • Bei einigen Ausführungsformen umfasst das Senden mindestens einer Datenanforderung an mindestens eine Datenbank zur Ausführung einschließlich das Senden der mindestens einen Datenanforderung an eine Datenzentrale.
  • Bei einigen Ausführungsformen umfasst das Analysieren das Identifizieren der in der empfangenen Inhaltsanforderung enthaltenen Datenanforderungen.
  • Bei einigen Ausführungsformen umfasst das Bestimmen das Bestimmen, ob die identifizierten Datenanforderungen mit einem bekannten oder vorher ausgeführten Satz von Datenanforderungen übereinstimmen, die einer bekannten oder zuvor ausgeführten Inhaltsanforderung zugewiesen sind.
  • Bei einigen Ausführungsformen umfasst das Analysieren das Bestimmen, ob die empfangene Inhaltsanforderung im Wesentlichen dieselbe wie eine zuvor ausgeführte empfangene Inhaltsanforderung ist; und als Reaktion auf eine Bestimmung, dass die empfangene Inhaltsanforderung im Wesentlichen dieselbe wie eine vorher ausgeführte empfangene Inhaltsanforderung ist, Bestimmen, dass die empfangene Inhaltsanforderung mindestens eine Datenanforderung umfasst, die separat parallel zur empfangenen Inhaltsanforderung ausgeführt werden kann, und Initiieren der Ausführung dieser Datenanforderungen, die der zuvor ausgeführten empfangenen Inhaltsanforderung parallel zur Ausführung der empfangenen Inhaltsanforderung zugewiesen sind.
  • Bei einigen Ausführungsformen umfasst das Analysieren das Erzeugen einer Anforderungssignatur auf der Grundlage der empfangenen Inhaltsanforderung.
  • Bei einigen Ausführungsformen umfasst das Bestimmen das Vergleichen der erzeugten Anforderungssignatur mit einer oder mehreren bekannten oder zuvor erzeugten Anforderungssignaturen, wobei die bekannten oder vorher erzeugten Anforderungssignaturen jeweils einem Satz einer oder mehreren bekannten oder zuvor ausgeführten Datenanforderungen zugewiesen sind.
  • Bei einigen Ausführungsformen enthält die empfangene Inhaltsanforderung Information über eine Anwendung, die die Inhaltsanforderung erzeugt.
  • Bei einigen Ausführungsformen wird die Anforderungssignatur basierend auf den Informationen über die Anwendung erzeugt, die die Inhaltsanforderung erzeugt.
  • Bei einigen Ausführungsformen umfasst das Bestimmen das Vergleichen eines Analyseergebnisses mit einem oder mehreren bekannten oder vorherigen Analyseergebnissen, wobei jedes der bekannten oder vorherigen Analyseergebnisse einem Satz einer oder mehreren zuvor ausgeführten Datenanforderungen zugewiesen ist.
  • Bei einigen Ausführungsformen werden die bekannten oder vorherigen Analyseergebnisse in dem Prozessor-lesbaren Speicher gespeichert.
  • Ausführungsformen von Techniken und hier beschriebenen Lösungen können sich auf ein Verfahren beziehen, das einige oder alle der oben beschriebenen Schritte umfasst. Ausführungsformen von Techniken und Lösungen, die hier beschrieben sind, können sich auf ein computerlesbares Medium beziehen, wie beispielsweise ein elektrisches, magnetisches oder optisches Speichermedium oder eine Trägerwelle mit Befehlen zum Durchführen einiger oder aller der oben beschriebenen Verfahrensschritte, die darin ausgeführt sind.
  • Ausführungsformen von Techniken und Lösungen, die hier beschrieben sind, können sich auf ein System beziehen, das Folgendes umfasst: einen Prozessor; einen Prozessor-lesbaren Speicher, in dem Befehle gespeichert sind, die bewirken, dass der Prozessor ein Verfahren durchführt, das die folgenden Schritte umfasst: Empfangen einer Anforderung für Inhalte von einer anfragenden Entität; Erzeugen eines Anforderungsfingerabdrucks basierend auf der empfangenen Anforderung für Inhalt; zunächst Bestimmen, ob der erzeugte Anforderungs-Fingerabdruck mit einem gespeicherten Anforderungsfingerabdruck übereinstimmt; als Reaktion auf eine Bestimmung, dass der erzeugte Anforderungsfingerabdruck mit dem gespeicherten Anforderungsfingerabdruck übereinstimmt, die Fernprozeduraufrufe initiiert, die dem gespeicherten Anforderungsfingerabdruck parallel zugewiesen sind; Bestimmen, ob der eine der Fernprozeduraufrufe, die parallel ausgeführt wurden, die Ausführung abgeschlossen hat; als Reaktion auf eine Bestimmung, dass der eine der parallelen Fernprozeduraufrufe die Ausführung beendet hat, das Zurückgeben eines Ergebnisses des einen der parallel ausgeführten Fernprozeduraufrufe die Ausführung zum Ergebnis-Stub abgeschlossen hat; und als Reaktion auf eine Bestimmung, dass der eine der Fernprozeduraufrufe, die parallel ausgeführt werden, die Ausführung nicht abgeschlossen hat, Unterbrechung der seriellen Ausführung des Fernprozeduraufrufs, bis der eine der Fernprozeduraufrufe, die parallel ausgeführt werden, die Ausführung abgeschlossen hat und ein Ergebnis des abgeschlossenen Prozeduraufrufe ausgibt, die parallel zum Ergebnis-Stub ausgeführt wurden; und als Reaktion auf alle seriell ausgeführten Fernprozeduraufrufe, die ein Ergebnis haben, ein Anforderungsergebnis an die anfordernde Entität auf der Grundlage der Ergebnisse der Fernprozeduraufrufe ausgeben.
  • Ein weiterer Anwendungsbereich der beschriebenen Systeme und Verfahren wird aus der nachfolgenden detaillierten Beschreibung ersichtlich. Es sollte jedoch verstanden werden, dass die detaillierte Beschreibung und die spezifischen Beispiele, die Ausführungsformen der Systeme und Verfahren angeben, nur zur Veranschaulichung dienen, da verschiedene Änderungen des Sinns und des Umfangs der hier offenbarten Konzepte anhand dieser detaillierten Beschreibung geschulten Personen ersichtlich werden.
  • Kurzbeschreibung der Zeichnungen
  • Die erörterten Systeme und Verfahren werden aus der nachfolgenden detaillierten Beschreibung und den beigefügten Zeichnungen, die nur zur Veranschaulichung gegeben werden und daher nicht einschränkend sind, vollständiger verständlich.
  • 1a zeigt ein Blockdiagramm, das eine Ausführungsform einer wie hier beschriebenen RPC-Beschleunigungsoperation darstellt;
  • 1b zeigt ein Blockdiagramm, das eine Ausführungsform einer wie hier beschriebenen RPC-Beschleunigungsoperation darstellt;
  • 2 zeigt ein Blockdiagramm, das eine Ausführungsform einer wie hier beschriebenen RPC-Signatur darstellt;
  • 3 zeigt ein Blockdiagramm, das eine Ausführungsform von wie hier beschriebenen Datenflüssen zwischen einem Datenzugriffsgerät und einem Datenzentrum darstellt;
  • 4 zeigt ein Blockdiagramm, das eine Ausführungsform von wie hier beschriebenen Datenflüssen zwischen einem Datenzugriffsgerät und einem Datenzentrum darstellt;
  • 5 zeigt ein Blockschaltbild, das eine Ausführungsform einer, wie hier beschriebenen, RPC-Beschleunigungsoperation darstellt; und
  • 6 zeigt ein Blockdiagramm, das eine Ausführungsform eines Computergeräts darstellt, das angeordnet ist, um einige oder alle der hierin beschriebenen RPC-Beschleunigungs- oder Automatisierungsoperationen auszuführen.
  • Die Zeichnungen werden ausführlich in der detaillierten Beschreibung beschrieben.
  • Detaillierte Beschreibung
  • Die folgende detaillierte Beschreibung bezieht sich auf die begleitenden Zeichnungen. Die gleichen Bezugsziffern in verschiedenen Zeichnungen können die gleichen oder ähnliche Elemente identifizieren. Darüber hinaus soll die folgende detaillierte Beschreibung nicht als Beschränkung der Erfindung angesehen werden. Stattdessen wird der Umfang der hierin diskutierten Konzepte durch die beigefügten Ansprüche und Äquivalente davon definiert.
  • Die Techniken und Systeme, die hier offenbart sind, beziehen sich auf Geräte und Verfahren, die dazu dienen, Anforderungen auf einem laufenden System zu instrumentieren, um die Muster von eingehenden Anforderungen (Client Remote Procedure Calls – RPCs) sowie abhängige RPC-Anforderungsflüsse (nachgelagerte oder ausgefächerte RPCs) zu lernen. Das Lernen kann heuristisch basiert, auf Regression basiert oder auf Speicherung basiert sein. In 1a ist eine Ausführungsform eines Arbeitsablaufs eines instrumentierten Anforderungsabfangens und das RPC-Automatisierungsverfahren dargestellt.
  • Bei der gezeigten Ausführungsform kann eine Anforderung beispielsweise bei einem lokalen Webserver empfangen 1001 werden. Der Webserver kann mit Hardware, Software oder einer Kombination davon ausgestattet sein, die eine Analyse der Anforderung 1010 ausführt. Ausführungsformen einer solchen Analyse können heuristische Analysen umfassen, um die Anforderung gegen bekannte oder erwartete Muster zu analysieren. Ausführungsformen einer derartigen Analyse können eine Memo- oder Hash-basierte Analyse umfassen, um einen Signatur- oder Hash-Schlüssel basierend auf der Anforderung und einigen oder allen der darin enthaltenen oder damit zugewiesen Daten zu erzeugen.
  • Die Analyseergebnisse können dann 1020 ausgewertet werden, um zu bestimmen, ob der Webserver oder die RPC-Automatisierungssoftware oder -hardware, die darin beinhaltet oder damit verknüpft ist, 1030 die Typen von RPCs vorhersagen kann, die die Anforderung erfordern wird, bevor der Webserver die empfangene Anforderung vollständig verarbeitet hat. Die Analyseergebnisse können auch verwendet werden, um die für zukünftige Vorhersagen verwendeten Daten zu aktualisieren 1060. Solche Daten können das Ändern von Gewichten oder Schwellen umfassen, die Regeln oder Schätzalgorithmen zugewiesen sind. Bei einigen Ausführungsformen können solche Daten neue oder zusätzliche Anforderungssignaturen oder Hash-Schlüssel zum Auswerten zukünftiger Anforderungen enthalten.
  • Bei einigen Ausführungsformen kann das Analysieren der Anforderung 1010 oder das Auswerten der Analyseergebnisse 1020 auch das Bestimmung umfassen, ob die Anforderung ein Kandidat für eine RPC-Vorhersage oder eine Automatisierung ist. Bei solchen Ausführungsformen kann jede analysierte Anforderung mit einem Schwellenwert der RPC-Aufrufe oder Datenbankabfragen verglichen werden, um zu bestimmen, ob die Anforderung ein Kandidat für die hier diskutiert RPC-Automatisierung ist.
  • Wenn bestimmt wird, dass eine Anforderung nicht vorhersehbar 1030 oder anderweitig kein geeigneter Kandidat für die RPC-Automatisierung ist, kann die Anforderung 1050 mit den verschiedenen RPCs und/oder Datenbankabfragen der Anfrage, die in sequentieller Reihenfolge verarbeitet wird, normal verarbeitet werden. Wenn bestimmt wird, dass eine Anforderung vorhersagbar 1030 oder anderweitig ein geeigneter Kandidat für die RPC-Automatisierung ist, kann eine Gruppe von RPCs oder Datenbankabfragen, die vorhergesagt oder anderweitig bestimmt wurde, dass sie der empfangenen Anforderung zugewiesen ist, parallel zu 1040 initiiert werden. Diese RPCs und Abfragen können zu Rechenzentren und Datenbanken und Datenspeichern ausgehen, die dann Ergebnisse an das System zurückgeben, das die anfängliche Anforderung verarbeitet. Das System, das in einigen Ausführungsformen ein Webserver sein kann, empfängt und speichert die Ergebnisse der RPCs und Abfragen 1070.
  • Bei einigen Ausführungsformen kann der Webserver, nachdem die parallelen RPCs 1040 initiiert wurden, die ankommende Anforderung normal 1050 weiterverarbeiten, als ob die darin enthaltenen RPCs oder Abfragen sequentiell adressiert werden würden. Wenn jedoch ein RPC oder eine Abfrage in der Anforderung auftritt, kann das System zunächst prüfen, ob, basierend auf den 1070 von den initiierten 1040 parallelen RPCs und Abfragen empfangenen und zwischengespeicherten Ergebnissen, irgendwelche zwischengespeicherten Ergebnisse 1080 für diesen RPC oder diese Abfrage verfügbar sind. Falls ein zwischengespeichertes Ergebnis 1080 verfügbar ist, kann das zwischengespeicherte Ergebnis als Reaktion auf die Anforderung 1090 zurückgegeben werden, wodurch eine leichte Latenz eliminiert oder verringert wird, die ansonsten durch diese Anforderung entsteht oder dieser zugewiesen ist. Wenn kein zwischengespeichertes Ergebnis verfügbar ist 1080, kann der RPC oder die Abfrage aus der Anforderung ausgeführt und ein Ergebnis davon zurückgegeben werden 1099.
  • Die oben beschriebene Ausführungsform bezieht sich entweder auf eine heuristische oder memorisierungsbasierte Ausführungsform eines RPC-Automatisierungssystems. Eine heuristisch basierte Ausführungsform kann Regeln und Regelsätze umfassen, die es einem System basierend auf einem ankommenden RPC ermöglichen, zu bestimmen oder abzuleiten, welche Arten von nachfolgenden/zusätzlichen/eingebetteten RPCs in dem zugehörigen RPC enthalten, diesem zugewiesen sein oder diesem folgen können. Die ermittelten oder abgeleiteten RPCs können dann zur Ausführung ausgelöst werden, bevor die nachfolgenden/zusätzlichen/eingebetteten RPCs verarbeitet werden, und die Ergebnisse dieser ausgelösten RPCs können lokal auf dem System zwischengespeichert werden, das den ankommenden RPC empfängt. Wenn die tatsächlichen nachfolgenden/zusätzlichen/eingebetteten RPCs, die dem ankommenden RPC zugewiesen sind, durch dieses System verarbeitet werden, sind die Ergebnisse von beispielsweise allen Datenbankabfragen, die mit diesen RPCs verknüpft sind, bereits lokal zwischengespeichert und als Reaktion auf den RPC sofort verfügbar.
  • Bei einer memorisierungsbasierten Ausführungsform kann ein System, das eingehende RPCs empfängt, eine Signatur jeder eingehenden Anforderung aufzeichnen. Bei einigen Ausführungsformen können Anforderungen analysiert werden, um Abfragen mit hoher Latenz und/oder RPC-aufwendige Abfragen zu identifizieren. Ausführungsformen einer aufgezeichneten Signatur können Elemente wie die Benutzer-ID, von der die Anforderung stammt, sowie Komponenten der Anforderung, wie beispielsweise eine Zieladresse (z. B. eine Websiteadresse/URL) und/oder beliebige Zieldatenbank(en), umfassen. Mithilfe der aufgezeichneten Signatur ist es möglich, mit einem automatisierten Instrument alle schreibgeschützten (sich nicht ändernden) RPCs, die während einer Anforderung nachgelagert erzeugt wurden, einzulesen, und alle erforderlichen Metadaten zurückzuschreiben, um diese RPCs zu einem späteren Zeitpunkt wiederherzustellen und wieder aufzurufen, und die Metadaten mit einem Schlüssel auf der Grundlage der Anforderungssignatur zwischenzuspeichern.
  • Bei der Verarbeitung einer dieser aufwendigen Anforderungen kann das automatisierte System bei einigen Ausführungsformen die Anforderung abfangen, eine Anforderungssignatur erzeugen, die zwischengespeicherten/gespeicherten nachgelagerten RPC-Metadaten abrufen und alle vorgelagert senden. RPCs, die dieser Anforderung zugewiesen sind, signieren parallel. Bei einigen Ausführungsformen kann eine solche nachgelagerte RPC-Ausführung sogar realisiert werden, bevor der normale Anwendungssteuerungsfluss aufgerufen wurde. Bei einigen derartigen Ausführungsformen kann das automatisierte System bei jeder Anforderung Stubs zwischen dem Anwendungssteuerungsfluss und dem nachgelagerten RPC-Aufrufcode einfügen. Bei einigen dieser Ausführungsformen kann das automatisierte System so konfiguriert sein, dass es den RPC abfängt, wenn der Anwendungscode einen neuen RPC erzeugt oder verursacht. Wenn der erfasste RPC mit einem der bereits ausgelösten und parallelen RPCs übereinstimmt, kann das automatisierte System dann einfach den bereits vorhandenen RPC und die Ergebnisse an den Anwendungs-RPC-Stub anhängen.
  • In 1b ist eine Ausführungsform eines Arbeitsablaufs einer memorisierungsbasierten Ausführungsform eines instrumentierten Anforderungsabfangens und das RPC-Automatisierungsverfahren dargestellt. In der dargestellten Ausführungsform kann, nachdem eine Anforderung von beispielsweise einem Webserver, einer spezialisierten Software oder Hardware oder einer Kombination davon empfangen 2001 wurde, die auf dem Webserver läuft oder mit diesem zugewiesen ist, aus der empfangenen Anfrage eine Anforderungssignatur 2010 erzeugen. Bei einigen Ausführungsformen kann die spezialisierte Software auf einem separaten Computersystem betrieben werden, mit dem der Webserver Daten austauscht. Bei einigen Ausführungsformen können der Webserver und die spezialisierte Software für die RPC-Automatisierung als Teil eines oder als ein oder mehrere virtuelle oder logische Computergeräte dargestellt werden, die auf einer oder mehreren physikalischen Datenverarbeitungsplattformen laufen. Obwohl in Bezug auf einen Webserver beschrieben, können Ausführungsformen der hier beschriebenen Techniken und Lösungen für jede Software oder Hardware gelten, die RPC-Aufrufe zu einem Back-End oder zu eigenständigen oder Client-Anwendungen oder -Systemen durchführt.
  • Die erzeugte Anforderungssignatur kann einen Memo- oder Hash-Wert basierend auf der empfangenen Anforderung und ein beliebiges Attribut der empfangenen Anforderung darstellen, wie beispielsweise Parameter davon. Bei einigen Ausführungsformen können Anforderungsattribute eine IP- oder MAC-Adresse eines anfordernden Geräts, Header oder Parameter wie beispielsweise eine Kennung eines Benutzerkontos und/oder ein Ursprungsgerät umfassen, die der Anforderung zugewiesen ist. Beispiele für ein Ursprungsgerät können ein mobiles Datenzugriffsgerät wie beispielsweise ein Tablet oder ein Smartphone oder ein Computergerät wie beispielsweise ein Laptop- oder Desktop-Computer oder ein physischer oder virtueller Server oder eine Cloud-basierte Computerressource sein. Bei einigen Ausführungsformen kann eine Anforderung ein Attribut oder einen Parameter enthalten, der eine Anwendung identifiziert, von der die Anforderung stammt. Beispielsweise kann eine Anforderung, die von einer bestimmten Webbrowser-, Spiel- oder Produktivitätsanwendung stammt, ein Attribut oder einen Parameter aufweisen, der die bestimmte Webbrowser-, Spiel- oder Produktivitätsanwendung als Ursprungsanwendung angibt.
  • Bei einigen Ausführungsformen kann eine Anforderungssignatur durch eine Hash-Funktion erzeugt werden. Bei einigen Ausführungsformen können benutzerdefinierte Anforderungs-Hash-Funktionen verwendet werden, um den Schlüsselraum auf eine kleine/vernünftige Größe zu beschränken. Z. B. kann eine Anforderung mit einem Parameter, der für die Protokollierung aber für kein Verhalten der Anforderung verwendet wird, eine benutzerdefinierte Hash-Funktion haben, die einen solchen Parameter nicht enthält. Ausführungsformen eines solchen Hash können in der Praxis basierend auf whitelistierten Parametern/Attributen einer Anforderung vollständig benutzerdefiniert sein, oder auf einer Blacklist von Parametern/Attributen basieren, um sie vom Anforderungs-Hash auszuschließen.
  • Nachdem die Anforderungssignatur 2010 erstellt wurde, kann die erstellte Signatur 2020 mit gespeicherten oder bekannten Anforderungssignaturen verglichen werden. Jede gespeicherte oder bekannte Anforderungssignatur kann einem bestimmten Satz von RPCs oder Abfragen oder einer Kombination davon zugewiesen sein. Bei einigen Ausführungsformen kann eine bekannte Anforderungssignatur als Datenbank- oder Datentabellenschlüssel verwendet werden, um einen Datensatz abzurufen, der anzeigt, welche RPCs und/oder Abfragen von dieser Anforderungssignatur ausgelöst werden sollen. Bei einigen Ausführungsformen kann eine solche Datenbank oder Datentabelle lokal gespeichert werden oder vom Gerät zugegriffen werden, das die eingehende Anforderung empfängt.
  • Wenn die erzeugte Anforderungssignatur mit 2040 einer bekannten oder gespeicherten Anforderungssignatur übereinstimmt, können die RPCs oder Abfragen, die dieser bekannten oder gespeicherten Signatur zugewiesen sind, zumindest teilweise parallel 2050 ausgeführt werden. Bei einigen Ausführungsformen können ein oder mehrere einzigartige RPCs, die mit der übereinstimmenden Anforderung verknüpft sind, gleichzeitig ausgelöst oder anderweitig ausgeführt werden, ohne zu warten oder von der Auflösung oder dem Ergebnis eines anderen RPC abhängig zu sein.
  • Bei einigen Ausführungsformen hätte ein Speicherungsprozess alle anwendbaren RPCs gespeichert, die in einem vorherigen Anforderungsfluss gemacht wurden, einschließlich bei einigen Ausführungsformen auch diejenigen, die logisch erst dann ausgelöst werden, nachdem eine frühere (serielle) Anforderung erfolgt ist. Bei einigen derartigen Ausführungsformen können alle RPCs, die in einer Anforderung enthalten sind, in einigen Ausführungsformen parallel gestartet werden, um Ressourcen zu optimieren und Anforderungen über derartige gespeicherte RPC-Sitzungen zu isolieren. Es kann mehrere Modi für die zeitliche Planung dieser RPCs geben. Bei einer Ausführungsform können alle derartigen RPCs auf asynchronen Verbindungen parallel laufen, ohne Threads zu blockieren. Bei einer anderen Ausführungsform können alle derartigen RPCs in einem Threadpool ausgeführt werden. Bei einigen derartigen Ausführungsformen können die ausgehenden RPCs für eine Anforderung über die eingehenden Anforderungen durch Ratenbeschränkung oder -kontingentierung isoliert werden. Zum Beispiel kann in einer Threadpool-Ausführungsform der Größe 100 jede eingehende Anforderung RPCs nur jeweils in 20 Threads planen, wobei andere für verfügbare Threads blockiert werden.
  • Wenn die erzeugte Anforderungssignatur nicht mit 2040 einer bekannten oder gespeicherten Anforderungssignatur übereinstimmt, kann diese erzeugte Anforderungssignatur 2030 für eine spätere Verwendung oder einen späteren Abruf aufgezeichnet oder anderweitig gespeichert werden. Bei einigen Ausführungsformen können nur diejenigen Signaturen zur Speicherung oder Aufzeichnung ausgewählt werden, die Anforderungen zugewiesen sind, die einen bestimmten Komplexitätsschwellenwert überschreiten. Bei einigen Ausführungsformen kann die Bestimmung, ob die ausgehenden gespeicherten RPC-Signaturen persistiert (zwischengespeichert) werden sollen, am Ende (nach Abschluss) einer instrumentierten Anforderung erfolgen. Bei einigen derartigen Ausführungsformen ermöglicht dies das Sammeln oder Erstellen von Informationen über die Anzahl der RPCs, ihrer Dauer, Größe sowie von anderen Metadaten. Bei einigen derartigen Ausführungsformen kann ein Komplexitätsschwellenwert durch Einstellen einer minimalen Anzahl ausgehender RPCs eingerichtet werden, für die die Anfrage gespeichert (zwischengespeichert) werden soll. Bei einigen Ausführungsformen kann eine minimale Schwelle von 2 ausgehenden RPCs als Komplexitätsschwelle eingestellt werden. Bei solchen Ausführungsformen können Anforderung mit zwei oder mehr ausgehenden RPCs für die Speicherung oder Aufzeichnung ausgewählt werden, um eine nachfolgende Instrumentierung oder Beschleunigung mit Ausführungsformen der hier beschriebenen Techniken zu ermöglichen. Weitere Ausführungsformen können unterschiedliche Schwellenwerte oder Schwellenbereiche verwenden, wie beispielsweise einen Schwellenbereich von 2 bis 9 ausgehenden RPCs.
  • Bei einigen Ausführungsformen kann bei einer Anforderungssignatur, die für die Aufzeichnung ausgewählt ist, auch deren Ausführung überwacht werden, um zu bestimmen, welche RPCs oder Abfragen der Anforderung und damit zusammenhängenden Abhängigkeiten zugewiesen sind. Bei einigen Ausführungsformen kann eine solche Ausführungsüberwachung als Teil oder in Verbindung mit der Verarbeitung der empfangenen Anforderung 2080 erfolgen, um ein Anforderungsergebnis zurückzugeben 2099. Bei einigen Ausführungsformen kann die Anforderung eine Anforderung für eine Webseite mit Inhalt aus einer darin enthaltenen Datenbank sein, und die zurückgesendete Anforderung kann die Webseite sein, die mit den Datenbankinformationen gefüllt ist.
  • Bei einigen Ausführungsformen kann das System nach dem Auslösen der parallelen RPCs und/oder Abfragen nach zwischengespeicherten Ergebnissen 2070 suchen, um eine Reaktion auf die empfangene Anfrage zu liefern. Sobald die Ergebnisse der einzelnen parallel ausgelösten RPCs empfangen und zwischengespeichert werden, können die zwischengespeicherten Ergebnisse 2090 als Reaktion auf die empfangene Anforderung zurückgegeben werden 2060.
  • Bei einigen Ausführungsformen erfolgt eine solche Lösung vollständig automatisch, was einen schnelleren und genaueren als von Menschen erstellten RPC-Parallelisierungscode ermöglicht. Solche automatisierten RPC-Aufzeichnungs- und Parallelisierungstechniken können Latenzverbesserungen bei der Anforderungsausführung ermöglichen und auch in gewissem Maß zu einer Isolierung gegenüber einer Datenzentren-übergreifenden RPC-Latenzzeit während teilweiser Datenzentren-Ausfällen beitragen. Darüber hinaus können einige Ausführungsformen eine Verringerung der Code-/System-Komplexität beim Verwalten komplexer Parallelitätsdatenstrukturen ermöglichen.
  • 2 zeigt eine Ausführungsform eines Blockdiagramms, das ein Ausführungsbeispiel eines Datensatzes mit einer Anforderungssignatur darstellt. In der dargestellten Ausführungsform kann ein wie in einer Datentabelle oder Datenbank enthaltener Datensatz eine Anforderungssignatur enthalten 3001. Bei einigen Ausführungsformen kann eine solche Anforderungssignatur ein Primärschlüssel oder ein ähnlicher Datensatzabruf oder Nachschlagewert sein. Die Anforderungssignatur kann ein Hash-Schlüssel sein, der als numerische oder alphanumerische Folge von Werten dargestellt ist. Bei einigen Ausführungsformen kann eine solche Signatur darin Informationen enthalten, die eine Benutzer-ID, Anwendungs-ID und/oder Anforderungsgerät-ID darstellen, die der Anforderung zugewiesen ist. Bei solchen Ausführungsformen kann die Hash-Signatur eine eindeutige Identifizierung für die Anforderung unter Verwendung eines Einweg-Hashs liefern, die Information wie beispielsweise eine Benutzer-ID oder Anforderungsgerät-D, die von der Anforderungssignatur nicht wiederhergestellt werden kann, wiedergibt.
  • Bei einigen Ausführungsformen kann eine zweite Identifizierung wie beispielsweise eine Anwendungs-ID im Datensatz gespeichert sein. Bei einigen Ausführungsformen kann die Anwendungs-ID identifizieren, ob die durch den Datensatz dargestellte Anforderung von einer ersten Browseranwendung stammt, die einem ersten Betriebssystem zugewiesen ist, oder von einer zweiten Browseranwendung stammt, die einem zweiten Betriebssystem zugewiesen ist. Bei einigen Ausführungsformen kann eine Suchtaste für den Datensatz als eine Kombination der Anforderungssignatur 3001 und einer zweiten ID wie die Anwendungs-ID 3010 dargestellt werden.
  • Bei einigen Ausführungsformen kann der Datensatz, der die Anforderung darstellt, auch Informationen über eine Zieladresse 3020 enthalten, wie beispielsweise eine Webseiten-URL oder IP-Adresse, die der Anforderung zugewiesen ist. Bei einigen Ausführungsformen können solche Informationen der Zieladresse 3020 anstatt separat im Datensatz gespeichert in der Anforderungssignatur eingebettet sein.
  • Bei einigen Ausführungsformen kann der Datensatz auch eine Auflistung oder Aufzeichnung der verschiedenen und/oder mehreren RPCs 3030, 3060, 3070 oder Abfragen enthalten, die der Anforderung zugewiesen sind. Bei einigen Ausführungsformen kann jeder RPC oder jede Abfrage der Anforderung mit Informationen über ein Ziel-Back-End 3040, 3050, 3080 verknüpft oder anderweitig enthalten sein, von denen die Daten abgefragt werden oder auf denen der RPC ausgeführt wird. In einigen Ausführungsformen kann ein Datensatz eine beliebige Anzahl von RPCs oder Abfragen enthalten.
  • 3 zeigt eine Ausführungsform eines mit der wie hier beschriebenen RPC-Automatisierungsfähigkeit ausgestatteten Webservers, mit einem Datenzugriffsgerät und einem Datenzentrum. In der gezeigten Ausführungsform kann ein Datenzugriffsgerät 4001 wie z. B. ein Smartphone, Tablet, Laptop, Desktop oder eine virtuelle Computerressource mit einem oder mehreren Prozessoren 4040 und einer gewissen Menge an flüchtigem oder nicht-flüchtigem Speicher 4030 oder Kombination davon ausgestattet oder zugewiesen sein. Das Datenzugriffsgerät 4001 kann auf einer oder mehreren Anwendungen 4010 und/oder einem Webbrowser 4020 oder einem anderen Netzwerkdatenzugriffs- und -austauschwerkzeug oder -schnittstelle ausgeführt werden oder darauf zugreifen.
  • Das Datenzugriffsgerät kann über die Anwendung(en) 4010 oder den Webbrowser 4020 eine Anforderung 4050 für Inhalte erzeugen, wie z. B. eine Anforderung für eine Webseite oder eine Anforderung für bestimmte Daten. Eine solche Anforderung kann über ein Netzwerk 4320 an ein Anforderungsverarbeitungsgerät wie beispielsweise einen Webserver 4101 gesendet werden (zum Beispiel bei einer Anforderung für eine Webseite). Bei einigen Ausführungsformen kann das Netzwerk 4320 das Internet enthalten oder anderweitig mit dem Internet verbunden sein. Bei einigen Ausführungsformen kann das Netzwerk ein privates Netzwerk, ein virtuelles privates Netzwerk, ein mobiles Datennetzwerk, ein drahtgebundenes Netzwerk, eine drahtlose Datenübertragung, eine Glasfaser-Datenübertragung oder Kombinationen davon umfassen.
  • Eine Anforderung 4050 vom Datenzugriffsgerät 4001 kann eine oder mehrere RPCs oder Abfragen an eine Datenbank enthalten oder anfordern, um die angeforderten Daten bereitzustellen oder eine Webseite zu füllen. Bei Ausführungsformen, die mit Webseitenanforderungen in Zusammenhang stehen, kann die Anforderung 4050 von einem Webserver 4101 empfangen werden. Ausführungsformen eines Webservers können eine oder mehrere physikalische oder virtuelle Computergeräte umfassen, die mit einem oder mehreren Prozessoren 4120 und einer gewissen Menge flüchtiger oder nicht-flüchtiger Speicher 4110 oder einer Kombination davon ausgestattet oder zugewiesen sind.
  • Bei einigen Ausführungsformen kann der Webserver mit Fähigkeiten für die wie hier beschriebene Anforderungsverarbeitung 4140 und RPC-Automatisierung 4130 ausgestattet sein. Ausführungsformen eines Webservers können auch einen Speicher- oder Datenspeicherbereich umfassen, in dem zwischengespeicherte Daten 4150 gespeichert werden können.
  • Bei einigen Ausführungsformen kann eine empfangene Anforderung 4050 am Webserver 4101 durch die RPC-Automatisierungsfähigkeit 4130 abgefangen werden, um zu bestimmen, ob während der Verarbeitung der Anforderung durch die Anforderungsverarbeitungsfähigkeit des Webservers 4140 (oder bei einigen Ausführungsformen vor dem Start der Anforderungsverarbeitung 4130) bestimmte Abfragen oder RPCs identifiziert und parallel ausgelöst werden, bevor die Anforderung 4050 einen Bedarf für diese Abfragen von RPCs anzeigt, die ausgeführt werden sollen. Bei einigen Ausführungsformen kann eine solche RPC-Automatisierungsfähigkeit 4130 dazu führen, dass mehrere gleichzeitige oder fast gleichzeitige Anforderungen 4160 4170 vom Webserver 4101 zu einem oder mehreren Datenzentren 4201 über eine Kommunikationsverbindung wie beispielsweise ein Netzwerk 4310 gesendet werden.
  • Bei einigen Ausführungsformen kann das Netzwerk 4310 das Internet enthalten oder auf andere Weise damit verbunden sein. Bei einigen Ausführungsformen kann das Netzwerk ein privates Netzwerk, ein virtuelles privates Netzwerk, ein mobiles Datennetzwerk, ein drahtgebundenes Netzwerk, eine drahtlose Datenübertragung, eine Glasfaser-Datenübertragung oder Kombinationen davon umfassen. Bei einigen Ausführungsformen kann der Webserver 4101 eine virtuelle Maschine innerhalb eines Datenzentrums 4201 sein.
  • Bei einigen Ausführungsformen kann ein Datenzentrum 4201 ein Gerät, eine Gruppe von Geräten oder Anlagen umfassen, die mit einem oder mehreren Prozessoren 4220 und einer gewissen Menge an flüchtigem und/oder nicht-flüchtigem Speicher 4210 ausgestattet sind. Das Datenzentrum 4210 kann eine oder mehrere Frontend-Funktionen 4230 wie etwa Abfrage- oder RPC-Schnittstellen, eine oder mehrere Anwendungen 4240, die auf dem Datenzentrum ausgeführt werden, und eine oder mehrere Datenbanken oder Datentabellen 4250 umfassen, auf denen Informationen zur Verwendung durch und für den Zugriff von dem Datenzentrum 4201 gespeichert sind.
  • Bei einigen Ausführungsformen kann das Datenzentrum 4201 die Anforderungen 4160 4170 vom Webserver 4210 über das Frontend 4230 empfangen und die empfangenen Anforderungen durch eine oder mehrere Anwendungen 4240 verarbeiten, um gewünschte Informationen aus einer oder mehreren Datenbanken oder Datentabellen 4250 zu identifizieren und abzurufen. Die abgerufenen Informationen können dann dem Webserver 4101 in Form einer oder mehrerer Reaktionen 4180 4190 bereitgestellt werden, die von dem Datenzentrum über das Netzwerk 4310 gesendet werden. Bei einigen Ausführungsformen können die Reaktionen 4180 4190 im Webserver 4101 als zwischengespeicherte Daten 4150 gespeichert werden, die eine vorhersagbare erfasste Reaktion auf eine bekannte oder erwartete Abfrage oder RPC darstellen, die der Anfrage 4050 des Datenzugriffgeräts 4001 zugewiesen ist.
  • Bei einigen Ausführungsformen können solche zwischengespeicherten Daten vor oder während der Verarbeitung der Anforderung 4050 durch den Webserver 4101 empfangen werden. Bei einigen derartigen Ausführungsformen kann die Anfrageverarbeitungsfähigkeit 4140 des Webservers so konfiguriert sein, dass die zwischengespeicherten Daten 4150 auf eine Reaktion oder ein Ergebnis auf einen RPC oder eine Abfrage in der Anforderung 4050 überprüft werden, bevor dieser RPC oder diese Abfrage zur Ausführung durch eine nachgelagerte Datenzentrale ausgelöst wird 4201. Die RPC- oder Abfrageergebnisse können dann von dem Webserver 4101 zum Datenzugriffsgerät 4001 als eine über das Netzwerk 4320 gesendete Reaktion 4060 übertragen werden.
  • Bei einigen Ausführungsformen kann eine derartige RPC-Automatisierung auch den Vorteil bieten, das Datenzugriffsgerät 4101 von Fehlern in lokalen oder entfernten Datenzentren 4201 zu isolieren, indem RPC-Anforderungen prädiktiv oder präemptiv am Webserver 4101 ausgelöst werden und Verzögerungen und Latenzen, die mit Datenzentren-Ausfällen 4201 zusammenhängen, vom Datenzugriffsgerät maskiert werden 4101. Dies ist so, da bei einem Ausfall eines Datenzentrums 4201 in Bezug auf einen RPC die Latenz, hervorgerufen durch die Abfrage eines anderen Datenzentrums oder einer anderen Datenbank, sich auf keine anderen RPCs auswirkt, da sie parallel und nicht seriell ausgeführt werden.
  • Der Vorteil, partielle Fehler in lokalen Datenzentren in einem mehrfachen/verteilten Datenzentrumsystem zu isolieren, ist signifikant. In einem beispielhaften System, das 10 serielle RPCs an ein lokales Backend ausführt (z. B. eine Datenbank mit einer Reaktionszeit von 10 ms), kann ein gesundes Datenzentrum solche Anforderungen mit 10 × 10 ms = 100 ms RPC-Wartezeit verarbeiten. Wenn aber das Backend des lokalen Datenzentrums ungesund ist, kann dies zu datenzentrenübergreifenden RPCs führen. Unter der Annahme einer datenzentrenübergreifenden Reaktionszeit von 50 ms (Lichtgeschwindigkeit zwischen Datenzentren) kann ein ungesundes Backend die Latenzzeit von 100 ms RPC-Wartezeit auf 500 ms RPC-Wartezeit erhöhen. Das automatisierte System der Anforderungserfassung und -automatisierung sorgt in diesem Fall für eine asymptotische Beschleunigung, indem sie die 10 RPCs parallel ausführt, sodass auch bei datenzentrenübergreifenden RPCs die RPC-Wartezeit nur 60 ms beträgt (10 ms parallele Verarbeitung und 50 ms Lichtgeschwindigkeit zwischen Datenzentren).
  • 4 zeigt eine Ausführungsform von wie hier beschriebenen Datenflüssen zwischen einem Datenzugriffsgerät und einem Datenzentrum. In der gezeigten Ausführungsform kann ein Datenzugriffsgerät 7001 eine Anforderung 7010 für Inhalte erzeugen, die eine RPC- oder Datenbankabfrage enthält. Eine solche Anforderung kann im Fall einer Webseitenanforderung an einen Webserver 7101 über ein Netzwerk 7600 wie oben beschrieben gesendet werden. Nach Empfang durch oder in einigen Ausführungsformen auf dem Weg zum Webserver kann die Anforderung durch eine RPC-Automatisierungsfunktion oder -fähigkeit 7190 abgefangen werden.
  • Bei einigen Ausführungsformen kann eine solche RPC-Automatisierungsfähigkeit 7190 eine Anforderungssignatur 7110 basierend auf der vom Datenzugriffsgerät empfangenen oder abgefangenen Anforderung 7001 erzeugen. Die Anforderungssignatur kann dann mit anderen Anforderungssignaturen verglichen werden, die von der RPC-Automatisierungsfähigkeit 7190 gespeichert wurden oder ihr zugänglich sind, um zu bestimmen, ob die erzeugte Anforderungssignatur mit einer bekannten oder vorherigen Anforderungssignatur übereinstimmt. Wenn eine übereinstimmende Anforderungssignatur 7120 gefunden wird, kann eine Reihe von eindeutigen RPCs parallel 7130, 7160 auf Grundlage des RPC ausgelöst werden, der der übereinstimmenden Signatur zugewiesen ist. Die ausgelösten eindeutigen RPCs können an ein oder mehrere Rechenzentren 7201 über ein Netzwerk 7700 wie hier zuvor beschrieben gesendet werden. Das Datenzentrum 7201 kann die RPC-Anforderungen 7210 vom Webserver 7101 empfangen und die RPCs entsprechend 7220 verarbeiten, bevor die angeforderten Ergebnisse 7230 an den Webserver 7101 zurückgegeben werden.
  • Am oder in Verbindung mit dem Webserver 7101 können die zurückgegebenen RPC-Ergebnisse lokal zwischengespeichert 7140 werden. Auf einer Zeitskala parallel zu den durch die RPC-Automatisierungsfähigkeit 7190 gesteuerten Aktionen kann der Webserver 7101 die empfangene Anfrage 7170 verarbeiten und versuchen, die angeforderten RPC- oder Abfrageergebnisse 7180 zu erhalten oder auf andere Weise abzurufen. Bei einigen Ausführungsformen kann der Webserver, bevor (oder anstelle) er eine RPC-Anforderung an ein Datenzentrum sendet, im lokalen Zwischenspeicher nach einem bereits lokal verfügbaren RPC- oder Abfrageergebnis suchen. Die RPC- oder Abfrageergebnisse werden dann 7150 vom Webserver 7101 an das Datenzugriffsgerät 7001 zurückgegeben oder anderweitig bereitgestellt, das die Ergebnisse 7020 empfängt und entsprechend darstellt oder verarbeitet.
  • 5 zeigt eine Ausführungsform eines Prozessflusses im Zusammenhang mit der wie hier beschriebenen Anforderungserzeugung und RPC-Automatisierung. In der gezeigten Ausführungsform können ein oder mehrere Clients 9000 in einer Cloud-Computing-Umgebung Anforderungen an ein Anforderungsverarbeitungssystem senden. Solche Clients können Anwendungen, physikalische Geräte, virtuelle Geräte, Benutzer, automatisierte Anfragen und Kombinationen davon umfassen.
  • Das Anforderungsverarbeitungssystem kann die Anforderung vom Client empfangen oder auf andere Weise erhalten und daraus einen Anforderungsfingerabdruck 9010 erzeugen. Der erzeugte Fingerabdruck kann mit einem Zwischenspeicher oder Speicher von vorherigen oder vorbestimmten oder bekannten Anforderungs-Fingerabdrücken verglichen werden, um zu bestimmen, ob eine Übereinstimmung 9020 vorliegt. Falls eine Übereinstimmung vorliegt, kann das Anforderungsverarbeitungssystem nach dem gespeicherten oder vorbestimmten oder bekannten Satz an RPCs suchen oder anderweitig darauf zugreifen, der dem übereinstimmenden Anforderungs-Fingerabdruck 9030 zugewiesen ist, und alle diese RPCs parallel starten 9040.
  • Bei einigen Ausführungsformen kann unabhängig davon, ob der Anforderungsfingerabdruck mit einem bekannten oder vorbestimmten oder vorherigen Anforderungsfingerabdruck übereinstimmt und nach Versuch des Such- und Übereinstimmungsvorgangs 9020, ein serieller oder „normaler” Anforderungsfluss gestartet werden 9050. Bei einem solchen Anforderungsfluss können die RPC-Aufrufe in der Anforderung seriell oder sequentiell ausgeführt werden 9060.
  • Bei einigen Ausführungsformen kann jeder der seriell aufgerufenen RPCs instrumentiert sein und über einen dynamisch angefügten Stub verfügen 9070. Dies ermöglicht, dass der seriell aufgerufene RPC einem oder mehreren der zuvor parallel gestarteten RPCs verbunden oder auf andere Weise zugewiesen werden kann 9040. Bei einigen Ausführungsformen kann, wenn der dynamisch angefügte Stub bereits existiert 9130, eine nachfolgende Überprüfung durchgeführt werden, um zu bestimmen, ob der mit dem Stub verknüpfte parallele RPC abgeschlossen wurde 9130. Bei einigen Ausführungsformen wurde der parallele RPC noch nicht abgeschlossen, der parallele RPC-Aufruf kann blockiert oder unterbrochen sein, und der serielle RPC-Aufruf darf ausgeführt oder abgeschlossen werden 9160. Bei einigen Ausführungsformen kann das Gegenteil auftreten, wobei der parallele RPC abgeschlossen werden darf und der seriell aufgerufene RPC blockiert oder unterbrochen wird, bis der parallele RPC, der bereits initiiert wurde, ein Ergebnis zurückgibt.
  • Bei einigen Ausführungsformen existiert der RPC-Stub 9130 möglicherweise noch nicht, da der RPC noch nicht initiiert wurde oder da er nicht im Satz der parallelen RPCs enthalten war. Bei einer solchen Ausführungsform kann der RPC gestartet und ausgeführt werden, und bei einigen Ausführungsformen kann die Ausführung des RPC für die Speicherung und spätere Wiedergabe 9150 aufgezeichnet werden.
  • Bei einigen Ausführungsformen kann der parallele RPC bereits abgeschlossen sein 9130, wobei in diesem Fall ein zwischengespeichertes Abfrageergebnis an den dynamisch angefügten Stub zurückgegeben 9140 werden kann, wodurch bewirkt wird, dass der seriell aufgerufene RPC mit zuvor erfassten, zwischengespeicherten Daten abgeschlossen oder anderweitig ausgeführt wird. Auf diese Weise kann der RPC-Anforderungsfluss abgeschlossen und ein Ergebnis an den Client zurückgegeben werden 9080.
  • Bei einigen Ausführungsformen kann, nachdem die Anforderung ein Ergebnis zurückgegeben hat, ein Speichermodul aufgerufen werden 9090, um eine Spur oder eine Aufzeichnung der Anforderung zur Verwendung für die zukünftige Automatisierung oder Instrumentierung von RPC-tragenden Anforderungen zu erzeugen. Bei einigen Ausführungsformen wird die Anforderung ausgewertet, um zu bestimmen, ob es sich um eine geänderte oder neue Anforderung handelt, oder um eine, die entweder mit einer zuvor aufgezeichneten Anforderungssignatur 9100 übereinstimmt oder einen Komplexitätsschwellenwert nicht erfüllt. Bei einigen Ausführungsformen kann eine geänderte oder neue Anforderung die Erzeugung und Speicherung von gespeicherten Metadaten 9120 verursachen, die die Anforderung und ihre zugewiesenen RPCs repräsentieren. Bei einigen Ausführungsformen kann eine Anforderung, die entweder nicht neu/geändert ist oder unter einer Komplexitätsschwelle fällt, ein solches Speichern von Metadaten nicht auslösen, wobei das System stattdessen nichts unternimmt 9110.
  • Obwohl oben in Bezug auf die Funktionalität diskutiert, können die Merkmale und Eigenschaften der Funktionsgraphenerzeugung und Aufrufpfadsuche durch Verwendung einer oder mehrerer spezialisierter, programmierbarer und/oder speziell programmierter Computergeräte oder Teile davon realisiert werden.
  • 6 zeigt in einem Blockdiagramm ein beispielhaftes Computergerät 500, das so eingerichtet ist, dass es wie hier beschriebene Aufrufgraphenerzeugungs- und Aufrufpfadsuchtechniken ausführt. In einer sehr grundlegenden Konfiguration 501 umfasst das Rechengerät 500 typischerweise einen oder mehrere Prozessoren 510 und einen Systemspeicher 520. Ein Speicherbus 530 kann für die Kommunikation zwischen dem Prozessor 510 und dem Systemspeicher 520 verwendet werden.
  • In Abhängigkeit von der gewünschten Konfiguration kann der Prozessor 510 eines beliebigen Typs sein, einschließlich, aber ohne Einschränkung darauf, eines Mikroprozessors (μP), eines Mikrocontrollers (μC), eines Digitalzeichenprozessors (DSP, digital signal processor) oder einer beliebigen Kombination davon. Der Prozessor 510 kann einen weiteren Cachepegel, wie einen Cache 511 einer Ebene 1 und einen Cache 512 einer Ebene 2, einen Prozessorkern 513 und Registers 514, umfassen. Der Prozessorkern 513 kann eine arithmetische Logikeinheit (ALU), eine Gleitkommaeinheit (FPU), einen digitalen Signalverarbeitungskern (DSP Core) oder eine beliebige Kombination davon umfassen. Eine Speichersteuerung 515 kann auch mit dem Prozessor 510 verwendet werden, oder in einigen Implementierungen kann die Speichersteuerung 515 ein interner Teil des Prozessors 510 sein.
  • In Abhängigkeit von der gewünschten Konfiguration kann der Systemspeicher 520 eines beliebigen Typs sein, einschließlich, aber ohne Einschränkung darauf, eines flüchtigen Speichers (wie beispielsweise RAM), nicht-flüchtigen Speichers (wie beispielsweise (ROM, Flash-Speicher usw.) oder einer beliebigen Kombination davon. Der Systemspeicher 520 enthält typischerweise ein Betriebssystem 521, eine oder mehrere Anwendungen 522 und Programmdaten 524. Die Anwendung 522 kann ein wie hier diskutiertes Aufrufgraph, Erzeugungs- und/oder Aufrufpfadsuchmerkmal 523 umfassen. Programmdaten 524 umfassen Ortsdaten, wie beispielsweise eine oder mehrere Abhängigkeitslisten oder Objektnamenlisten 525, die für die Durchführung der gewünschten Operationen wie oben beschrieben nützlich sind. Bei einigen Ausführungsformen kann die Anwendung 522 so eingerichtet sein, dass sie mit Programmdaten 524 auf einem Betriebssystem 521 funktioniert, sodass das Gesamtsystem eine oder mehrere spezifische Variationen von Techniken wie hier diskutiert ausführt. Dies wird konzeptionell in 6 durch jene Komponenten innerhalb der Leitung 501.
  • Das Computergerät 500 kann weitere Merkmale oder Funktionen sowie weitere Schnittstellen zur Unterstützung der Datenübertragung zwischen der Basiskonfiguration 501 und jeglichen erforderlichen Geräten und Schnittstellen haben. Beispielsweise kann eine Bus-/Schnittstellensteuerung 540 verwendet werden, um die Kommunikation zwischen der Basiskonfiguration 501 und einer oder mehreren Datenspeichergeräte 550 über einen Speicherschnittstellenbus 541 zu erleichtern. Die Datenspeichergeräte 550 können entfernbare Speichergeräte 551, nicht-entfernbare Speichergerät 552 oder eine Kombination davon sein. Beispiele für Wechselspeicher- und Nicht-Wechselspeichergeräte sind z Magnetplattengeräte, wie z. B. Floppy-Disk-Laufwerke und Festplattenlaufwerke (HDD), optische Plattenlaufwerke, wie beispielsweise Compact Disc(CD)-Laufwerke oder Digital Versatile Disk(DVD)-Laufwerke, Solid State-Laufwerke (SSD) und Bandlaufwerke, um nur ein paar zu nennen. Beispielhafte Computerspeichermedien können flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien enthalten, die in irgendeinem Verfahren oder einer Technologie zum Speichern von Informationen implementiert sind, wie zum Beispiel computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten.
  • Systemspeicher 520, entfernbare Speicher 551 und nicht entfernbare Speicher 552 sind Beispiele von Computerspeichermedien. Computerspeichermedien umfassen Folgendes, ohne jedoch darauf beschränkt zu sein: RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, DVD oder einen anderen optischen Speicher, Magnetkassette, Magnetband, Magnetdiskspeicher oder andere Magnetspeichergeräte sowie weitere Medien, die zur Speicherung der gewünschten Daten benutzt werden können und mittels des Computergeräts 500 zugänglich sind. Jedes derartige Computerspeichermedium kann ein Teil der Gerät 500 sein.
  • Das Computergerät 500 kann auch einen Schnittstellenbus 542 umfassen, um die Kommunikation von verschiedenen Schnittstellengeräten (z. B. Ausgabeschnittstellen, Peripherieschnittstellen und Kommunikationsschnittstellen) zur Basiskonfiguration 501 über die Bus-/Schnittstellensteuerung 540 zu erleichtern. Beispielhafte Ausgabegeräte 560 umfassen eine Graphikverarbeitungseinheit 561 und eine Audioverarbeitungseinheit 562, die so konfiguriert werden können, dass sie über einen oder mehrere A/V-Anschlüsse 563 mit verschiedenen externen Geräte, wie beispielsweise einem Display oder Sprechern, kommunizieren können. Die beispielhaften Peripherieschnittstellen 570 umfassen einen seriellen Schnittstellencontroller 571 oder einen Parallelschnittstellencontroller 572, der so konfiguriert werden kann, dass er mit externen Geräten wie Eingabegeräten (z. B. Tastatur, Maus, Stift, Spracheingabegerät, Kamera, Berührungseingabevorrichtung usw.) oder mit anderen Peripheriegeräten (z. B. Drucker, Scanner usw.) über einen oder zwei I/O-Ports 573 kommunizieren kann. Ein Beispiel Kommunikationsgerät 580 Schließt einen Netzwerkkontrolleur 581 mit ein, welcher eingerichtet werden kann, um die Kommunikation mit einem oder mehreren Computergeräten zu unterstützen 590 über einer Netzwerkkommunikation über einen oder mehrere Kommunikationsports 582.
  • Die Kommunikationsverbindung ist ein Beispiel für ein Kommunikationsmedium. Kommunikationsmedien können typisch sein für die Darstellung von Computer lesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten mit einem angepassten Datensignal wie einer Trägerschwingung oder anderen Transportmechanismue und schließt jede Information der gelieferten Medien mit ein. Ein „moduliertes Datensignal” kann ein Signal sein, das eine oder mehrere seiner Eigenschaften derart eingestellt oder geändert hat, dass Informationen in dem Signal codiert werden. Zum Beispiel, und nicht begrenzt, Kommunikationsmedien können kabelgebundene Medien miteinschließen wie kabelgebundene Netzwerke oder direkt verkabelte Verbindung und kabellose Medien wie Akustik, Radiofrequenzen (RF), Infrarot (IR) und andere kabellose Medien. Das Computerprogramm lesbarer Medien wie es hier benutzt wird, kann beides miteinschließen, Speichermedien und Kommunikationsmedien.
  • Das Computergerät 500 kann als Teil eines kleinformatigen tragbaren (bzw. mobilen) elektronischen Geräts, wie Mobiltelefon, Smartphone, PDA (personal data assistant), ein persönliches Medienabspielgerät, ein Tabletcomputer (Tablet), ein drahtloses Web-Watch-Gerät, ein persönliches Headset-Gerät, ein anwendungsspezifisches Gerät oder ein Hybridgerät, sein, das beliebige von den obigen Funktionen beinhaltet. Computergerät 500 kann auch als ein Computer implementiert werden einschließlich Laptop- und Standcomputer-Konfigurationen.
  • In einigen Fällen ist die Unterscheidung zwischen Hardware- und Softwareimplementierungen in Bezug auf Systemaspekte gering; die Verwendung von Hardware oder Software ist im Allgemeinen (aber nicht immer, da in bestimmten Kontexten die Wahl zwischen Hardware und Software signifikant werden kann) eine Designwahl, bei der Kompromisse in Bezug auf Kosten/Effizienz eingegangen werden müssen. Es gibt dabei verschiedene Fahrzeuge, welche die Verfahren und Systeme und/oder andere Technologien beschreiben, die durchgeführt werden können (zum Beispiel Hardware, Software und/oder Firmware) und dass das bevorzugte Fahrzeug sich in dem Zusammenhang unterscheiden wird, in dem die Verfahren und/oder Systeme und/oder andere Technologien entwickelt werden. Zum Beispiel, wenn ein implementiertes bestimmt, dass die Geschwindigkeit und Genauigkeit entscheidend sind, der Überträger kann für eine Haupthardware und/oder Firmware-Fahrzeuge optieren; wenn er flexibel ist, kann er eine Hauptsoftware implementieren oder, wiederum, alternativ, der Überträger kann für eine Kombination optieren von Hardware, Software und/oder Firmware.
  • Die vorangegangene detaillierte Beschreibung legt verschiedene Ausführungsformen der Geräte und/oder Prozesse über die Nutzung von Blockdiagrammen, Flowcharts und/oder Beispiele dar. Insoweit wie solche Blockdiagramme, Flußcharts und/oder Beispiele eine oder mehrere Funktionen und/oder Operation beinhalten, werden sie verstanden von denen in der Wissenschaft, das jede Funktion und/oder Operation mit solchen Blockdiagrammen, Flußcharts oder Beispielen implementiert werden können, indviduell und/oder kollektiv, durch ein weites Angebot von Hardware, Software, Firmware der irgendeiner virtuellen Kombination davon. In einer Ausführungsform können einige Teile des hier beschriebenen Gegenstands über anwendungsspezifische integrierte Schaltungen (ASICs), Field Programmable Gate Arrays (FPGAs), digitale Signalprozessoren (DSPs) oder andere integrierte Formate implementiert werden. Der Experte erkennt jedoch, dass einige Aspekte der hier offenbarten Ausführungsformen ganz oder teilweise in integrierten Schaltungen implementiert werden können, als ein oder mehrere Computerprogramme, die auf einem oder mehreren Computern laufen (z. B. als ein oder mehrere Programme, die auf einem oder mehreren Computersystemen laufen), als ein oder mehrere Programme, die auf einem oder mehreren Prozessoren laufen (z. B. als ein oder mehrere Programme, die auf einem oder mehreren Mikroprozessoren laufen), als Firmware oder als praktisch jede Kombination davon, und dass ein Experte für das Entwerfen der Schaltung und/oder das Schreiben des Codes für die Software und/oder Firmware im Zuge dieser Offenbarung die dazu notwendigen Fähigkeiten hat, und darüber hinaus der Experte erkennt, dass die hier in beschriebenen Mechanismen des Technikthemas in der Lage sind, als Programmprodukt in einer Vielzahl von Formen verteilt zu werden, und dass eine veranschaulichende Ausführungsform des hier beschriebenen Technikthemas unabhängig vom speziellen Typ des Signalträgermediums angewandt wird, um die Verteilung tatsächlich auszuführen. Beispiele von Signal übertragenden Medien eingeschlossen, aber nicht begrenzt, das Folgende: ein tragbarer Medientyp wie eine Floppydisk, eine Harddisk, eine Compactdisk (CD), eine Digitale Video Disk (DVD), ein digitales Band, ein Computer Memory etc; und ein Übertragungsmedium wie digitale und/oder analoge Kommunikationsmedien (beispielsweise einen Lichtwellenleiter, einen Wellenführer, eine verkabelte Kommunikationsverbindung, eine kabellose Kommunikationsverbindung etc).
  • Der Experte erkennt, dass es auf dem Fachgebiet allgemein üblich ist, Geräte und/oder Prozesse in der hier beschriebenen Weise zu beschreiben und danach Verfahren zu verwenden, um derartige beschriebene Geräte und/oder Prozesse in Datenverarbeitungssysteme zu integrieren. Das ist wenigstens eine Menge der Geräte und/oder Prozesse, die beschrieben wurden, können integriert werden in das Datensystem über eine begründeten Betrag von Experimenten. Der Experte erkennt, dass ein typisches Datenverarbeitungssystem im Allgemeinen ein oder mehrere Systemeinheitengehäuse, ein Videoanzeigegerät, einen Speicher wie einen flüchtigen und nichtflüchtigen Speicher, Prozessoren wie Mikroprozessoren und Digitalsignalprozessoren, rechnerische Einheiten wie Betriebssysteme, Treiber, graphische Benutzerschnittstellen und Anwendungsprogramme, eine oder mehrere Interaktionsvorrichtungen wie z. B. ein Berührungsfeld oder Bildschirm und/oder Steuersysteme mit Rückkopplungsschleifen und Steuermotoren (z. B. Rückkopplung zur Erfassungsposition und/oder Geschwindigkeit; Steuermotoren zum Bewegen und/oder Verstellen von Bauteilen und/oder Mengen) umfasst. Ein typisches Datenprozesssystem kann gewöhnliche kommerziell erhältliche Komponenten implementieren wie typische Datencomputerkommunikation und/oder Netzwerkcomputerkommunikationssysteme.
  • Was die Nutzung von im Wesentlichen allen Mehrzahl- und/oder Einzahlbegriffen hierin betrifft, können die Experten je nach Eignung für den Kontext und/oder die Anwendung die Mehrzahlform zur Einzahlform und umgekehrt bilden. Die verschiedenen einfachen/mehrfachen Permutationen können hier ausdrücklich aus Gründen der Klarheit dargelegt werden.
  • In der vorliegenden Offenbarung werden nur beispielhafte Ausführungsformen der hier diskutierten Systeme und Lösungen gezeigt und beschrieben. Es muss verstanden werden, dass die Systeme und Lösungen, die hier diskutiert wurden, in verschiedenen anderen Kombinationen und Umgebungen verwendet werden und Wechsel oder Modifikationen mit einer Reihe von Konzepten, die hier vorgestellt wurden, übernehmen können. Einige Variationen können in Kombinationen von Hardware, Firmware und/oder Software verkörpert sein. Einige Variationen können zumindest teilweise auf computerlesbaren Speichermedien wie Speicherchips, Festplatten, Flash-Speicher, optische Speichermedien oder als vollständige oder teilweise kompilierte Programme, die für die Übertragung an/den Download durch/Installation auf verschiedenen Hardware-Geräten und/oder Kombinationen/Sammlungen von Hardwaregeräten geeignet sind, ausgeführt sein. Solche Variationen sind nicht abhängig von der Abfahrt aus dem Geist und der Anordnung der Systeme und Lösungen, die hier diskutiert wurden und solchen Modifikationen wie sie ein in der Wissenschaft Befähigter beabsichtigt, eingeschlossen die Reihe der folgenden Forderungen.

Claims (5)

  1. System, das Folgendes umfasst: einen Prozessor; Ein Prozessor-lesbarer Speicher, in dem Instruktionen gespeichert sind, die bewirken, dass der Prozessor ein Verfahren ausführt, das folgende Schritte umfasst: Empfangen einer Inhaltsanforderung von einem Zugriffsgeräts an einem Webserver; Analysieren der empfangenen Inhaltsanforderung am dem Webserver, um zu bestimmen, ob die empfangene Inhaltsanforderung dieselbe ist wie eine zuvor durch den Webserver ausgeführte Inhaltsanforderung; als Reaktion auf das Bestimmen, ob die empfangene Inhaltsanforderung dieselbe wie eine zuvor ausgeführte Inhaltsanforderung ist, Identifizieren eines oder mehrerer Fernprozeduraufrufe, die separat parallel zur Ausführung der empfangenen Inhaltsanforderung auf Grundlage der zuvor ausgeführten Inhaltsanforderung ausgeführt werden können, und Initiieren der Ausführung der identifizierten Fernprozeduraufrufe parallel zur seriellen Ausführung der empfangenen Inhaltsanforderung; lokales Zwischenspeichern von Daten auf dem Webserver, die als Reaktion auf die parallele Ausführung der identifizierten Fernprozeduraufrufe empfangen werden; und Bereitstellen der zwischengespeicherten Daten an das Zugriffsgerät als Reaktion auf die serielle Ausführung der empfangenen Inhaltsanforderung.
  2. System nach einem der vorhergehenden Ansprüche, worin die Ausführung der identifizierten Fernprozeduraufrufe das Senden mindestens einer Datenanforderung an mindestens eine Datenbank in einem Datenzentrum zur Ausführung beinhaltet.
  3. System nach einem der vorhergehenden Ansprüche, ferner umfassend das Erzeugen einer Anforderungssignatur auf der Grundlage der empfangenen Inhaltsanforderung; Vergleichen der erzeugten Anforderungssignatur mit einer oder mehreren zuvor erzeugten Anforderungssignaturen, um Bestimmung, ob die empfangene Inhaltsanforderung dieselbe ist wie eine zuvor vom Webserver ausgeführte Inhaltsanforderung, wobei die zuvor erzeugten Anforderungssignaturen jeweils einem Satz aus einem oder mehreren zuvor ausgeführte Remoteprozeduraufrufen zugewiesen werden, und Verwendung des Satzes eines oder mehrerer zuvor ausgeführter Fernprozeduraufrufe, die der zuvor erzeugten Anforderungssignatur zugewiesen sind, um einen oder mehrere Fernprozeduraufrufe zu identifizieren, die separat parallel zur Ausführung der empfangenen Inhaltsanforderung ausgeführt werden können.
  4. System nach Anspruch 3, wobei die empfangene Inhaltsanforderung Information über eine Anwendung beinhaltet, die die Inhaltsanforderung erzeugt; und wobei die Anforderungssignatur basierend auf den Informationen über die Anwendung erzeugt wird, die die Inhaltsanforderung erzeugt.
  5. System, das Folgendes umfasst: einen Prozessor; Ein Prozessor-lesbarer Speicher, in dem Instruktionen gespeichert sind, die bewirken, dass der Prozessor ein Verfahren ausführt, das folgende Schritte umfasst: Empfangen einer Anforderung für Inhalte von einer anfragenden Entität; Erzeugen eines Anforderungs-Fingerabdrucks basierend auf der empfangenen Anforderung für Inhalt; zunächst Bestimmung, ob der erzeugte Anforderungs-Fingerabdruck mit dem gespeicherten Anforderungs-Fingerabdruck übereinstimmt, wobei dem gespeicherten Anforderungs-Fingerabdruck ein Satz an Fernprozeduraufrufen zugewiesenen ist; als Reaktion auf eine Bestimmung, dass der erzeugte Anforderungs-Fingerabdruck mit dem gespeicherten Anforderungs-Fingerabdruck übereinstimmt, Initiieren der Fernprozeduraufrufe, die parallel dem gespeicherten Anforderungs-Fingerabdruck zugewiesen sind; und lokales Zwischenspeichern von Daten, die als Reaktion auf die parallele Ausführung der Fernprozeduraufrufe empfangen werden; serielles Ausführen der empfangenen Anforderung nach dem ersten Bestimmungsschritt, dass jeder in der empfangenen Anforderung enthaltener Fernprozeduraufruf seriell ausgeführt wird, Anfügen eines Ergebnis-Stubs an den Fernprozeduraufruf, wobei der Ergebnis-Stub einen Platzhalter für ein Ergebnis eines der parallel ausgeführten Fernprozeduraufrufe darstellt; Bestimmen, ob der eine der parallel ausgeführten Fernprozeduraufrufe die Ausführung abgeschlossen hat; als Reaktion auf eine Bestimmung, dass der eine der parallel ausgeführten Fernprozeduraufrufe die Ausführung abgeschlossen hat, Zurückgeben eines Ergebnisses des einen der parallel ausgeführten Fernprozeduranrufe die Ausführung zum Ergebnis-Stub abgeschlossen hat; und als Reaktion auf eine Bestimmung, dass der eine der parallel ausgeführten Fernprozeduraufrufe die Ausführung nicht abgeschlossen hat, Unterbrechung der seriellen Ausführung des Fernprozeduraufrufs, bis der eine der parallel ausgeführten Fernprozeduraufrufe die Ausführung abgeschlossen hat, und Zurückgeben eines Ergebnisses an das Ergebnis-Stub, dass der eine der parallel ausgeführten Fernprozeduraufrufe die Ausführung abgeschlossen hat; und als Reaktion auf alle seriell ausgeführten Fernprozeduraufrufe, die ein Ergebnis haben, Zurückgeben eines Anforderungsergebnisses an die anfordernde Entität auf Grundlage der Ergebnisse der Fernprozeduraufrufe.
DE202014010885.4U 2013-10-16 2014-10-02 Beschleunigung basierend auf zwischengespeicherte Flüsse Active DE202014010885U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/055,463 2013-10-16
US14/055,463 US9292341B2 (en) 2013-10-16 2013-10-16 RPC acceleration based on previously memorized flows

Publications (1)

Publication Number Publication Date
DE202014010885U1 true DE202014010885U1 (de) 2017-01-17

Family

ID=51790852

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014010885.4U Active DE202014010885U1 (de) 2013-10-16 2014-10-02 Beschleunigung basierend auf zwischengespeicherte Flüsse

Country Status (7)

Country Link
US (1) US9292341B2 (de)
EP (1) EP3058481B1 (de)
KR (1) KR101719500B1 (de)
CN (1) CN105637510B (de)
BR (1) BR112016007606B1 (de)
DE (1) DE202014010885U1 (de)
WO (1) WO2015057400A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015210791A (ja) * 2014-04-30 2015-11-24 富士通株式会社 分散処理装置、分散処理システム、および分散処理プログラム
CN105897805B (zh) * 2015-01-04 2019-12-27 伊姆西公司 对多层架构的数据中心的资源进行跨层调度的方法和装置
DE102015116811B4 (de) 2015-10-02 2017-04-13 Dynamic E Flow Gmbh Verbindungsstück
US11169978B2 (en) 2015-10-14 2021-11-09 Dr Holdco 2, Inc. Distributed pipeline optimization for data preparation
US10642814B2 (en) * 2015-10-14 2020-05-05 Paxata, Inc. Signature-based cache optimization for data preparation
US9703848B2 (en) 2015-11-13 2017-07-11 International Business Machines Corporation Caching linked queries for optimized compliance management
CN111355983B (zh) * 2018-12-21 2022-03-18 北京字节跳动网络技术有限公司 业务数据处理方法、装置、服务器及存储介质
US11182228B2 (en) * 2020-03-31 2021-11-23 Samsung Electronics Co., Ltd. System and method for remote procedure call for key-value target over non-volatile memory express over fabrics
CN112559387B (zh) * 2020-12-23 2023-05-02 湖南国科微电子股份有限公司 一种读请求处理方法、装置、设备及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7683994A (en) * 1993-09-27 1995-04-18 Oracle Corporation Method and apparatus for parallel processing in a database system
EP0961210A1 (de) 1998-05-29 1999-12-01 Xerox Corporation Unterschriftdateibasiertes semantisches Cachen von Datenbankabfragen
US6507834B1 (en) * 1999-12-22 2003-01-14 Ncr Corporation Method and apparatus for parallel execution of SQL from stored procedures
US7769802B2 (en) * 2003-12-04 2010-08-03 Microsoft Corporation Systems and methods that employ correlated synchronous-on-asynchronous processing
US7958160B2 (en) * 2003-12-16 2011-06-07 Oracle International Corporation Executing filter subqueries using a parallel single cursor model
US8010954B2 (en) * 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7698411B2 (en) * 2007-08-22 2010-04-13 International Business Machines Corporation Selectively delivering cached content or processed content to clients based upon a result completed percentage
US9189522B2 (en) * 2007-10-17 2015-11-17 Oracle International Corporation SQL execution plan baselines
US20090106781A1 (en) * 2007-10-23 2009-04-23 Reed Benjamin C Remote call handling methods and systems
US8935336B2 (en) * 2008-06-18 2015-01-13 Cisco Technology, Inc. Optimizing program requests over a wide area network
US9417938B2 (en) * 2009-03-17 2016-08-16 Microsoft Technology Licensing, Llc Remote procedure call chains
KR101430240B1 (ko) * 2011-12-19 2014-08-19 주식회사 케이티 어플리케이션 서명 장치 및 방법

Also Published As

Publication number Publication date
BR112016007606A2 (pt) 2017-08-01
US20150106827A1 (en) 2015-04-16
CN105637510B (zh) 2017-10-13
CN105637510A (zh) 2016-06-01
EP3058481B1 (de) 2019-09-11
US9292341B2 (en) 2016-03-22
BR112016007606B1 (pt) 2022-06-28
BR112016007606A8 (pt) 2021-05-25
WO2015057400A1 (en) 2015-04-23
KR101719500B1 (ko) 2017-03-24
EP3058481A1 (de) 2016-08-24
KR20160056944A (ko) 2016-05-20

Similar Documents

Publication Publication Date Title
DE202014010885U1 (de) Beschleunigung basierend auf zwischengespeicherte Flüsse
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE102017121758A1 (de) Intelligente Assistenz für wiederholte Aktionen
US20160314211A1 (en) Systems and Methods for Verifying User Credentials for Search
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112016002120T5 (de) Entwicklungs- und Vetriebsplattform für Software
DE102014103488A1 (de) Ausgeglichenes Scheduling mit gemischten Abfrage-Lasten
DE112013002544T5 (de) Cloudbasiertes Teilen von Datenpunkten und Zusammenarbeit unter Benutzergruppen
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE102014114005A1 (de) Risikobeurteilung von Interaktionen von Anwendungen für mobile Einheiten aufgrund von Reputation
DE202013012493U1 (de) Stufen der Datenspeicherung für Webanwendungen und Browser-Erweiterungen
DE202017107393U1 (de) Vorhersagen eines Suchmaschinen-Einordnungssignalwerts
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE112013000865T5 (de) Konsolidieren von unterschiedlichen Cloud-Dienst-Daten und -Verhaltensweisen auf der Grundlage von Vertrauensbeziehungen zwischen Cloud-Diensten
DE102013222384A1 (de) Sicherheits-Screening auf Kontextgrundlage für Zugriff auf Daten
US9990403B2 (en) System and a method for reasoning and running continuous queries over data streams
DE202014011541U1 (de) System zum Herstellen einer Vertrauensverknüpfung
DE112020000927T5 (de) Verwalten sensibler daten
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE112017003884T5 (de) Benutzerschnittstelle für Protokollabfragen
DE112018004115T5 (de) Analyse von abhängigkeiten zwischen anwendungen zum verbessern einer computersystem-bedrohungserkennung
DE112015003926T5 (de) Publish/Subscribe-Messaging unter Verwendung einer Nachrichtenstruktur
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE212015000245U1 (de) Assistives Browsen unter Verwendung von Kontext

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016957000

R152 Utility model maintained after payment of third maintenance fee after eight years