Halaman ini memberikan ringkasan tentang komponen tingkat tinggi yang terlibat dalam permintaan Spanner dan bagaimana setiap komponen dapat memengaruhi latensi.
Permintaan Spanner API
Komponen tingkat tinggi yang digunakan untuk membuat permintaan Spanner API mencakup:
Library klien Spanner, yang menyediakan 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 mempertahankan sesi dan status transaksi.
Database Spanner, yang menjalankan operasi baca dan tulis ke database.
Saat Anda melakukan panggilan prosedur jarak jauh ke Spanner, library klien Spanner akan menyiapkan permintaan API. Kemudian, permintaan API akan diteruskan melalui frontend GFE dan 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 latensi permintaan Spanner API, GFE, dan klien, serta latensi kueri.
Bagian berikut menjelaskan setiap jenis latensi yang Anda lihat dalam diagram sebelumnya.
Latensi bolak-balik klien
Latensi bolak-balik klien adalah durasi waktu (dalam milidetik) antara byte pertama permintaan Spanner API yang dikirim klien ke database (melalui frontend GFE dan Spanner API), dan byte terakhir respons yang diterima klien dari database.
Metrik grpc.io/client/roundtrip_latency
memberikan waktu antara byte pertama permintaan API yang dikirim ke
byte terakhir respons yang diterima.
Untuk merekam dan memvisualisasikan latensi untuk komponen ini, lihat artikel Merekam latensi dua arah klien dengan OpenTelemetry atau dengan OpenCensus.
Latensi GFE
Latensi Google Front End (GFE) adalah durasi waktu (dalam milidetik) antara saat jaringan Google menerima panggilan prosedur jarak jauh dari klien dan saat GFE menerima byte pertama respons. Latensi ini tidak menyertakan handshake TCP/SSL apa pun.
Setiap respons dari Spanner, baik REST maupun gRPC, menyertakan 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 mengekspos latensi GFE untuk permintaan Spanner.
Untuk merekam dan memvisualisasikan latensi komponen ini, lihat Merekam latensi GFE dengan OpenTelemetry atau dengan OpenCensus.
Latensi permintaan Spanner API
Latensi permintaan Spanner API adalah durasi waktu (dalam detik) antara byte pertama permintaan yang diterima frontend Spanner API dan byte terakhir respons yang dikirim 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.
Metrik spanner.googleapis.com/api/request_latencies
merekam
dan mengekspos latensi frontend Spanner API untuk
permintaan Spanner.
Untuk merekam dan memvisualisasikan latensi komponen ini, lihat artikel Merekam 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.
Latensi kueri tersedia untuk API executeSql.
Jika parameter QueryMode
ditetapkan ke PROFILE
, maka ResultSetStats
Spanner
akan tersedia dalam respons.
Menetapkan QueryMode
ke PROFILE
akan menampilkan rencana
kueri, dan statistik eksekusi beserta hasilnya. Selain itu,
ResultSetStats
menyertakan waktu yang berlalu untuk menjalankan kueri di
database Spanner.
Untuk merekam dan memvisualisasikan latensi untuk komponen ini, lihat artikel Merekam latensi kueri dengan OpenTelemetry atau dengan OpenCensus.
Langkah selanjutnya
- Pelajari cara mengidentifikasi titik latensi di komponen Spanner.