Titik latensi dalam permintaan Spanner

Halaman ini memberikan ringkasan komponen tingkat tinggi yang terlibat dalam permintaan Spanner dan cara setiap komponen dapat memengaruhi latensi.

Permintaan Spanner API

Komponen tingkat tinggi yang digunakan untuk membuat permintaan Spanner API mencakup:

  • Library klien Spanner, yang memberikan lapisan abstraksi di atas gRPC, dan menangani detail komunikasi server, seperti pengelolaan sesi, transaksi, dan percobaan ulang.

  • Google Front End (GFE), yang merupakan layanan infrastruktur yang digunakan oleh semua layanan Google Cloud, termasuk Spanner. GFE memverifikasi bahwa semua koneksi Transport Layer Security (TLS) dihentikan dan menerapkan perlindungan terhadap serangan Denial of Service. Untuk mempelajari GFE lebih lanjut, lihat Layanan Google Front End.

  • Frontend Spanner API, yang melakukan berbagai pemeriksaan pada permintaan API (termasuk autentikasi, otorisasi, dan pemeriksaan kuota), serta mengelola sesi dan status transaksi.

  • Database Spanner, yang mengeksekusi pembacaan dan penulisan ke database.

Saat Anda melakukan panggilan prosedur jarak jauh ke Spanner, library klien Spanner akan menyiapkan permintaan API. Kemudian, permintaan API akan melewati GFE dan frontend Spanner API sebelum mencapai database Spanner.

Dengan mengukur dan membandingkan latensi permintaan antara berbagai komponen dan database, Anda dapat menentukan komponen mana yang menyebabkan masalah. Latensi ini mencakup perjalanan pulang pergi klien, GFE, permintaan Spanner API, dan latensi kueri.

Diagram arsitektur Spanner.

Bagian berikut menjelaskan setiap jenis latensi yang Anda lihat di diagram sebelumnya.

Latensi bolak-balik klien

Latensi bolak-balik klien adalah durasi waktu (dalam milidetik) antara byte pertama dari permintaan Spanner API yang dikirim klien ke database (melalui front-end GFE dan Spanner API), dan byte respons terakhir yang diterima klien dari database.

Diagram arsitektur Spanner untuk latensi bolak-balik klien.

Metrik grpc.io/client/roundtrip_latency menunjukkan waktu antara byte pertama permintaan API yang dikirim ke byte terakhir respons yang diterima.

Guna mencatat dan memvisualisasikan latensi untuk komponen ini, lihat Merekam dan memvisualisasikan latensi bolak-balik klien dengan OpenTelemetry atau dengan OpenCensus.

Latensi GFE

Latensi Google Front End (GFE) adalah durasi waktu (dalam milidetik) antara saat jaringan Google menerima remoteproc call dari klien dan saat GFE menerima byte pertama respons. Latensi ini tidak termasuk handshake TCP/SSL apa pun.

Diagram arsitektur Spanner untuk latensi GFE.

Setiap respons dari Spanner, baik REST atau gRPC, mencakup header yang berisi total waktu antara GFE dan backend (layanan Spanner) untuk permintaan dan respons. Hal ini membantu membedakan sumber latensi antara klien dan jaringan Google dengan lebih baik.

Metrik spanner/gfe_latency menangkap dan menampilkan latensi GFE untuk permintaan Spanner.

Guna mencatat dan memvisualisasikan latensi untuk komponen ini, lihat Merekam dan memvisualisasikan latensi GFE dengan OpenTelemetry atau dengan OpenCensus.

Latensi permintaan Spanner API

Latensi permintaan Spanner API adalah durasi (dalam detik) antara byte permintaan pertama yang diterima frontend Spanner API dan byte respons terakhir yang dikirim oleh frontend Spanner API. Latensi mencakup waktu yang diperlukan untuk memproses permintaan API di backend Spanner dan lapisan API. Namun, latensi ini tidak mencakup overhead jaringan atau reverse-proxy antara klien dan server Spanner.

Diagram arsitektur Spanner untuk latensi permintaan Spanner API.

Metrik spanner.googleapis.com/api/request_latencies menangkap dan menampilkan latensi frontend Spanner API untuk permintaan Spanner.

Guna mencatat dan memvisualisasikan latensi untuk komponen ini, lihat Merekam dan memvisualisasikan latensi permintaan Spanner API dengan OpenTelemetry atau dengan OpenCensus.

Latensi kueri

Latensi kueri adalah durasi waktu (dalam milidetik) yang diperlukan untuk menjalankan kueri SQL di database Spanner.

Diagram arsitektur Spanner untuk latensi kueri.

Latensi kueri tersedia untuk executeSql API.

Jika parameter QueryMode ditetapkan ke PROFILE, ResultSetStats Spanner akan tersedia dalam respons.

Menyetel QueryMode ke PROFILE akan menampilkan rencana kueri, statistik eksekusi beserta hasilnya. Selain itu, ResultSetStats menyertakan waktu yang telah berlalu untuk menjalankan kueri di database Spanner.

Guna mencatat dan memvisualisasikan latensi untuk komponen ini, lihat Merekam dan memvisualisasikan latensi kueri dengan OpenTelemetry atau dengan OpenCensus.

Langkah selanjutnya