Latenzpunkte in einer Cloud Spanner-Anfrage

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Diese Seite bietet einen Überblick über die übergeordneten Komponenten einer Cloud Spanner-Anfrage und darüber, wie sich die einzelnen Komponenten auf die Latenz auswirken können.

Spanner API-Anfragen

Zu den allgemeinen Komponenten, die für eine Spanner API-Anfrage verwendet werden, gehören:

  • Spanner-Clientbibliotheken bieten eine Abstraktionsebene über gRPC hinaus und verarbeiten Serverkommunikationsdetails wie Sitzungsverwaltung, Transaktionen und Wiederholungsversuche.

  • Das Google Front End (GFE), 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) unterbrochen wurden und schützt vor Denial-of-Service-Angriffen. 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) ausfü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 ermitteln, welche Komponente das Problem verursacht. Zu diesen Latenzen gehören Client-Roundtrips, GFEs, Spanner API-Anfragen und Abfragelatenzen.

Diagramm: Spanner-Architektur

In den folgenden Abschnitten werden die im vorherigen Diagramm aufgeführten Latenztypen erläutert.

Client-Umlauflatenz

Die Client-Roundtrip-Latenz ist die Zeitdauer (in Millisekunden) 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 das letzte Byte der Antwort, die der Client von der Datenbank empfängt.

Grafik: Spanner-Architekturdiagramm für die Umlauflatenz von Clients

Spanner-Clientbibliotheken liefern Statistiken und Traces mit dem Instrumentierungs-Framework OpenCensus. Dieses Framework bietet Einblicke in die internen Strukturen des Clients und hilft bei der Fehlerbehebung von End-to-End-Latenzen (Roundtrips).

Standardmäßig ist das Framework deaktiviert. Informationen zum Aktivieren dieses Frameworks finden Sie unter Client-Roundtrip-Latenz erfassen.

Der Messwert grpc.io/client/roundtrip_latency gibt die Zeit zwischen dem ersten Byte der API-Anfrage und dem letzten Byte der empfangenen Antwort an.

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

GFE-Latenz

Die Latenz des Google Front End (GFE) ist die Zeit in Millisekunden, die zwischen dem Empfang des Remoteprozeduraufrufs durch das Google-Netzwerk und dem Empfang des ersten Bytes der Antwort durch das Google-Netzwerk liegt. Diese Latenz enthält keinen TCP/SSL-Handshake.

Diagramm: Spanner-Architektur für 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) für die Anfrage und die Antwort enthält. Dadurch kann die Quelle der Latenz zwischen dem Client und dem Google-Netzwerk besser unterschieden werden.

Der Messwert cloud.google.com/[language]/spanner/gfe_latency erfasst und stellt GFE-Latenz für Spanner-Anfragen bereit.

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

Latenz der Spanner API-Anfrage

Die Latenz der Spanner API-Anfrage ist die Zeit in Sekunden zwischen dem ersten Byte der Anfrage, die das Spanner API-Front-End empfängt, und dem letzten Antwortbyte, das vom Spanner API-Front-End gesendet wird. 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 keinen Netzwerk- oder Reverse-Proxy-Overhead zwischen Spanner-Clients und -Servern.

Diagramm der Spanner-Architektur für die Latenz von Spanner API-Anfragen

Der Messwert spanner.googleapis.com/api/request_latencies erfasst und stellt die Spanner API-Front-End-Latenz für Spanner-Anfragen bereit.

Informationen zum Erfassen und Visualisieren der Latenz für diese Komponente finden Sie unter Spannung der Spanner API-Anfrage 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.

Diagramm: Spanner-Architektur für Abfragelatenz

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

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

Wenn Sie QueryMode auf PROFILE festlegen, werden sowohl der Abfrageplan als auch die Ausführungsstatistiken zusammen mit den Ergebnissen zurückgegeben. Außerdem enthält ResultSetStats die verstrichene Zeit zum 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