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