Latenzpunkte in einer Spanner-Anfrage

Auf dieser Seite erhalten Sie einen Überblick über die übergeordneten Komponenten, die an einer Spanner-Anfrage beteiligt sind, und darüber, 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 hinaus 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 stellt sicher, dass alle Transport Layer Security-Verbindungen (TLS) 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 (AFE), das verschiedene Prüfungen der API-Anfrage durchführt (einschließlich Authentifizierung, Autorisierung und Kontingentprüfungen) und verwaltet Sitzungen und Transaktionsstatus.

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

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

Indem Sie die Anfragelatenzen zwischen verschiedenen Komponenten und der Datenbank messen und vergleichen, können Sie ermitteln, welche Komponente das Problem verursacht. Diese Latenzen umfassen Client-Umlauf-, GFE-, Spanner API-Anfrage- und Abfragelatenzen.

Diagramm der Spanner-Architektur.

In den folgenden Abschnitten wird jede Art von Latenz erläutert, die im vorherigen Diagramm zu sehen ist.

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 (über das GFE und das Spanner API-Frontend), und dem letzten Byte der Antwort, die 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.

GFE-Latenz

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

Diagramm der Spanner-Architektur für 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.

Latenz der Spanner API-Anfrage

Die Latenz von Spanner API-Anfragen ist die Zeit (in Sekunden) zwischen dem ersten Byte der Anfrage, die das Spanner-AFE 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 AFE 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.

Abfragelatenz

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

Diagramm der Spanner-Architektur für Abfragelatenz.

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

Wenn der Parameter QueryMode auf WITH_STATS oder WITH_PLAN_AND_STATS gesetzt ist, sind die ResultSetStats von Spanner in den Antworten verfügbar. ResultSetStats enthält 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.

Nächste Schritte