Latenzpunkte in einer Spanner-Anfrage

Auf dieser Seite finden Sie einen Überblick über die übergeordneten Komponenten, die an einer Spanner-Anfrage beteiligt sind, und wie sich die einzelnen Komponenten auf die Latenz auswirken können.

Spanner API-Anfragen

Zu den übergeordneten Komponenten, die zum Erstellen einer Spanner API-Anfrage verwendet werden, gehören:

  • Spanner-Clientbibliotheken, die eine Abstraktionsebene über gRPC bieten und Details zur Serverkommunikation wie Sitzungsverwaltung, Transaktionen und Wiederholungsversuche verarbeiten.

  • Das Google Front End (GFE) ist ein Infrastrukturdienst, der für alle Google Cloud -Dienste, einschließlich Spanner, gemeinsam ist. Das GFE prüft, ob alle TLS-Verbindungen (Transport Layer Security) beendet werden, und schützt vor Denial-of-Service-Angriffen. Weitere Informationen zum GFE finden Sie unter Google Front End Service.

  • Das Spanner API-Frontend, das verschiedene Prüfungen der API-Anfrage durchführt (einschließlich Authentifizierung, Autorisierung und Kontingentprüfungen) und verwaltet Sitzungen und Transaktionsstatus.

  • Die Spanner-Datenbank, die Lese- und Schreibvorgänge in der Datenbank ausführt.

Wenn Sie einen Remote-Prozeduraufruf an Spanner senden, wird die API-Anfrage von den Spanner-Clientbibliotheken vorbereitet. Die API-Anfrage durchläuft dann sowohl das GFE als auch das Spanner API-Frontend, bevor sie die Spanner-Datenbank erreicht.

Indem Sie die Anfragelatenzen zwischen verschiedenen Komponenten und der Datenbank messen und vergleichen, können Sie feststellen, welche Komponente das Problem verursacht. Dazu gehören die Client-Umlauflatenz, die GFE-Latenz, die Spanner API-Anfragelatenz und die Abfragelatenz.

Architekturdiagramm für Spanner

In den folgenden Abschnitten werden die einzelnen Latenztypen erläutert, die im vorherigen Diagramm zu sehen sind.

Client-Umlauflatenz

Die Client-Umlauflatenz ist die Zeit (in Millisekunden) zwischen dem ersten Byte der Spanner API-Anfrage, die der Client an die Datenbank sendet (sowohl über das GFE als auch über das Spanner API-Frontend), und dem letzten Byte der Antwort, das der Client von der Datenbank empfängt.

Spanner-Architekturdiagramm für die Umlauflatenz des Clients

Der Messwert grpc.io/client/roundtrip_latency gibt die Zeit zwischen dem ersten Byte der API-Anfrage an, die an das letzte Byte der empfangenen Antwort gesendet wird.

Informationen zum Erfassen und Visualisieren der Latenz für diese Komponente finden Sie unter Umlauflatenz des Clients mit OpenTelemetry erfassen oder mit OpenCensus erfassen.

GFE-Latenz

Die Latenz des Google Front End (GFE) ist die Zeitspanne (in Millisekunden), die vergeht, bis das Google-Netzwerk einen Remoteprozeduraufruf vom Client empfängt und das GFE das erste Byte der Antwort empfängt. Diese Latenz beinhaltet keinen TCP/SSL-Handshake.

Spanner-Architekturdiagramm für die GFE-Latenz

Jede Antwort von Spanner, unabhängig davon, ob es sich um REST oder gRPC handelt, enthält einen Header, der die Gesamtzeit zwischen dem GFE und dem Backend (dem Spanner-Dienst) für die Anfrage und die Antwort enthält. So können Sie die Quelle der Latenz zwischen dem Client und dem Google-Netzwerk besser unterscheiden.

Mit dem Messwert spanner/gfe_latency wird die GFE-Latenz für Spanner-Anfragen erfasst und angezeigt.

Informationen zum Erfassen und Visualisieren der Latenz für diese Komponente finden Sie unter GFE-Latenz mit OpenTelemetry erfassen oder mit OpenCensus erfassen.

Latenz der Spanner API-Anfrage

Die Spanner API-Anfragelatenz ist die Zeit (in Sekunden) zwischen dem ersten Byte der Anfrage, die das Spanner API-Frontend empfängt, und dem letzten Byte der Antwort, die das Spanner API-Frontend sendet. Die Latenz umfasst die Zeit, die für die Verarbeitung von API-Anfragen sowohl im Spanner-Backend als auch in der API-Ebene benötigt wird. Diese Latenz umfasst jedoch keinen Netzwerk- oder Reverse-Proxy-Overhead zwischen Spanner-Clients und -Servern.

Spanner-Architekturdiagramm für die Latenz der Spanner API-Anfrage

Mit dem Messwert spanner.googleapis.com/api/request_latencies wird die Latenz des Spanner API-Front-Ends für Spanner-Anfragen erfasst und angezeigt.

Informationen zum Erfassen und Visualisieren der Latenz für diese Komponente finden Sie unter Spanner API-Anfragelatenz mit OpenTelemetry erfassen oder mit OpenCensus erfassen.

Abfragelatenz

Die Abfragelatenz ist die Zeit in Millisekunden, die zum Ausführen von SQL-Abfragen in der Spanner-Datenbank benötigt wird.

Spanner-Architekturdiagramm für Abfragelatenz

Die Abfragelatenz ist für die executeSql API verfügbar.

Wenn der Parameter QueryMode auf PROFILE gesetzt ist, sind die ResultSetStats von Spanner in den Antworten verfügbar.

Wenn Sie QueryMode auf PROFILE setzen, werden sowohl der Abfrageplan als auch die Ausführungsstatistiken zusammen mit den Ergebnissen zurückgegeben. Außerdem enthält ResultSetStats die verstrichene Zeit für die Ausführung von Abfragen in der Spanner-Datenbank.

Informationen zum Erfassen und Visualisieren der Latenz für diese Komponente finden Sie unter Abfragelatenz mit OpenTelemetry erfassen oder mit OpenCensus erfassen.

Nächste Schritte