Latenzpunkte in einer Spanner-Anfrage

Diese Seite gibt einen Überblick über die übergeordneten Komponenten Spanner-Anfrage 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, verwendet wird. 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 API-Anfrage (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. Zu diesen Latenzen gehören Client-Roundtrip, GFE, Spanner API Anforderungs- und Abfragelatenzen.

Diagramm der Spanner-Architektur

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 und visualisieren oder mit OpenCensus.

GFE-Latenz

Die Latenz von Google Front End (GFE) ist die Dauer (in Millisekunden) zwischen wenn das Google-Netzwerk einen Remote-Prozedur-Aufruf vom Client empfängt und wenn das GFE das erste Byte der Antwort empfängt. Diese Latenzzeit TCP/SSL-Handshakes enthalten.

Spanner-Architekturdiagramm für die GFE-Latenz

Jede Antwort von Spanner, ob es sich um REST oder gRPC handelt, umfasst Einen Header, der die Gesamtzeit zwischen dem GFE und dem Back-End enthält (die Spanner-Dienst) für die Anfrage und die Antwort. Dieses hilft, die Quelle der Latenz zwischen dem Client und dem Google-Werbenetzwerk.

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

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

Latenz von Spanner API-Anfragen

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 von Spanner API-Anfragen

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 und visualisieren oder mit OpenCensus.

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 API executeSql verfügbar.

Wenn die QueryMode auf PROFILE gesetzt ist, dann ist die ResultSetStats sind in den Antworten enthalten.

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

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

Nächste Schritte