Informationen zu Latenzpunkten in einer Cloud Spanner-Anfrage

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

Spanner API-Anfragen

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

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

  • Das Google Front End (GFE), ein Infrastrukturdienst, der allen Google Cloud-Diensten gemeinsam ist, einschließlich Spanner. Das GFE überprüft, ob alle TLS-Verbindungen (Transport Layer Security) beendet wurden, und wendet Schutz vor Denial-of-Service-Angriffen an. Weitere Informationen zum GFE finden Sie unter Google Front-End-Dienst.

  • Das Spanner API-Front-End, das verschiedene Prüfungen der API-Anfrage (einschließlich Authentifizierungs-, Autorisierungs- und Kontingentprüfungen) durchführt und Sitzungen und Transaktionsstatus verwaltet.

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

Wenn Sie einen Remoteprozeduraufruf an Spanner senden, bereiten die Spanner-Clientbibliotheken die API-Anfrage vor. Anschließend durchläuft die API-Anfrage sowohl das GFE als auch das Spanner API-Front-End, bevor sie die Spanner-Datenbank erreicht.

Durch Messen und Vergleichen der Anfragelatenzen zwischen verschiedenen Komponenten und der Datenbank können Sie feststellen, welche Komponente das Problem verursacht. Zu diesen Latenzen gehören Client-Roundtrip-, GFE-, Spanner API-Anfrage- und Abfragelatenzen.

Diagramm der Spanner-Architektur

In den folgenden Abschnitten werden die einzelnen Latenztypen aus dem vorherigen Diagramm erläutert.

Client-Umlauflatenz

Die Umlauflatenz des Clients ist die Zeitdauer (in Millisekunden), die zwischen dem ersten Byte der Spanner API-Anfrage, die der Client über das GFE und das Spanner API-Front-End an die Datenbank sendet, und dem letzten Byte der Antwort, die der Client von der Datenbank erhält, angegeben.

Spanner-Architekturdiagramm für Client-Umlauflatenz

Spanner-Clientbibliotheken stellen Statistiken und Traces mithilfe des Instrumentierungs-Frameworks OpenCensus bereit. Dieses Framework gibt Einblicke in die internen Strukturen des Clients und hilft bei der Behebung von End-to-End-Latenzen (Round Trip).

Standardmäßig ist das Framework deaktiviert. Informationen zum Aktivieren dieses Frameworks finden Sie unter Umlaufzeitlatenz von Clients erfassen.

Der Messwert grpc.io/client/roundtrip_latency gibt die Zeit zwischen dem ersten Byte der API-Anfrage, die bis zum letzten Byte der erhaltenen Antwort liegt, an.

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

GFE-Latenz

Die GFE-Latenz (Google Front End) ist die Zeit (in Millisekunden) zwischen dem Empfang eines Remote-Prozeduraufrufs im Google-Netzwerk und dem Empfang des ersten Byte der Antwort durch das GFE. Diese Latenz umfasst keinen TCP/SSL-Handshake.

Spanner-Architekturdiagramm für die GFE-Latenz.

Jede Antwort von Spanner – ob REST oder gRPC – enthält einen Header, der die Gesamtzeit zwischen dem GFE und dem Back-End (dem Spanner-Dienst) sowohl für die Anfrage als auch für die Antwort enthält. Dies hilft dabei, die Quelle der Latenz zwischen dem Client und dem Google-Netzwerk besser zu unterscheiden.

Mit dem Messwert cloud.google.com/[language]/spanner/gfe_latency 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 erfassen und visualisieren.

Spanner API-Anfragelatenz

Die Spanner API-Anfragelatenz ist die Zeitdauer (in Sekunden) zwischen dem ersten Byte der Anfrage, das das Front-End der Spanner API empfängt, und dem letzten Byte der Antwort, die das Front-End der Spanner API sendet. Die Latenz beinhaltet die Zeit, die für die Verarbeitung von API-Anfragen im Spanner-Back-End und auf der API-Ebene benötigt wird. Diese Latenz umfasst jedoch nicht den Netzwerk- oder Reverse-Proxy-Overhead zwischen Spanner-Clients und -Servern.

Spanner-Architekturdiagramm für die Latenz von Spanner API-Anfragen.

Der Messwert spanner.googleapis.com/api/request_latencies erfasst und macht die Front-End-Latenz der Spanner API für Spanner-Anfragen verfügbar.

Informationen zum Erfassen und Visualisieren der Latenz für diese Komponente finden Sie unter Latenz von Spanner API-Anfragen erfassen und visualisieren.

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 die Abfragelatenz.

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

Wenn der Parameter QueryMode auf PROFILE gesetzt ist, ist 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 das Ausführen von Abfragen in der Spanner-Datenbank.

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

Nächste Schritte