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, 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 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-End-to-End-, 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.

End-to-End-Latenz

Die End-to-End-Latenz 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 End-to-End-Latenz.

Der Messwert spanner.googleapis.com/client/operation_latencies gibt die Zeit zwischen dem ersten Byte der API-Anfrage an, die an das letzte Byte der empfangenen Antwort gesendet wird. Dazu gehören auch Wiederholungsversuche, die von der Clientbibliothek ausgeführt werden.

Weitere Informationen finden Sie unter Clientseitige Messwerte ansehen und verwalten.

GFE-Latenz

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

Diagramm der Spanner-Architektur für GFE-Latenz.

Jede Antwort von Spanner (REST oder gRPC) 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 GFE besser unterscheiden.

Mit dem Messwert spanner.googleapis.com/client/gfe_latencies wird die GFE-Latenz für Spanner-Anfragen erfasst und angezeigt.

Weitere Informationen finden Sie unter Clientseitige Messwerte ansehen und verwalten.

Latenz der Spanner API-Anfrage

Die Latenz von Spanner API-Anfragen ist die Zeit (in Sekunden) zwischen dem Empfang des ersten Byte einer Anfrage durch das Spanner AFE und dem Senden des letzten Byte einer Antwort durch das Spanner API-Frontend. 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 Cloud 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. Weitere Informationen finden Sie unter Spanner-Messwerte.

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 Abfragelatenz finden Sie unter Abfragelatenz mit OpenTelemetry erfassen.

Nächste Schritte