Memahami latensi dalam sistem blockchain terdistribusi
Saat bekerja dengan layanan streaming blockchain, pengukuran latensi menjadi rumit karena sistem terdistribusi tidak memiliki jam universal. Tidak seperti sistem tradisional yang memungkinkan Anda mengukur waktu perjalanan bolak-balik ke satu server, jaringan blockchain melibatkan banyak validator yang masing-masing menerima dan memproses transaksi yang sama pada waktu berbeda. Tantangan mendasar: Blockchain seperti Solana tidak memiliki konsep waktu absolut. Setiap node validator di seluruh dunia akan menerima transaksi yang sama pada waktu berbeda, dan konfirmasi bergantung pada persentase klaster yang mencapai konsensus. Hal ini membuat pengukuran latensi deterministik mustahil dilakukan dalam pengertian tradisional.Tingkat komitmen dan prioritas latensi
Solana menyediakan tiga nilai komitmen. Dalam Alpenglow,confirmed dan finalized menggambarkan status permanen yang sama:
- Processed: Eksekusi diamati oleh validator yang terhubung; latensi terendah, tetapi dapat dibatalkan
- Confirmed: Alias kompatibilitas untuk
finalized; dijadwalkan untuk dihapus dalam rilis mendatang - Finalized: Komitmen buku besar permanen, biasanya sekitar 150 md setelah pengusulan blok
Tiga pendekatan untuk mengukur latensi
1. Membandingkan aliran gRPC paralel
Metode paling andal—Membandingkan dua aliran independen ke sumber data yang sama untuk mengukur aliran mana yang menerima peristiwa identik terlebih dahulu. Keunggulan:- Menghilangkan masalah sinkronisasi jam
- Menyediakan perbandingan performa relatif
- Paling akurat untuk membandingkan layanan
2. Perbandingan stempel waktu lokal dengan created_at
Keandalan sedang—Mengukur selisih antara waktu sistem Anda menerima pesan dan stempel waktu yang disematkan dalam pesan oleh layanan LaserStream. Keterbatasan:- Hanya merepresentasikan waktu saat LaserStream membuat pesan secara internal
- Penundaan upstream menuju LaserStream tidak akan tercatat
- Kurang akurat dibandingkan Metode 1 untuk latensi ujung ke ujung yang sebenarnya
3. Analisis stempel waktu blok (tidak direkomendasikan)
Tidak direkomendasikan—Membandingkan waktu penerimaan lokal dengan stempel waktu blok Solana. Keterbatasan signifikan:- Stempel waktu blok hanya memiliki granularitas tingkat detik
- Solana menghasilkan blok setiap 200 md
- Hanya memberikan sedikit informasi yang berguna
Persyaratan penyiapan
Kolokasi regional
Untuk mendapatkan pengukuran latensi yang bermakna, terapkan infrastruktur pengujian Anda di pusat data atau wilayah yang sama dengan endpoint LaserStream Anda. Wilayah LaserStream yang tersedia:- ewr: New York, AS (Pantai Timur) -
https://laserstream-mainnet-ewr.helius-rpc.com - pitt: Pittsburgh, AS (Tengah) -
https://laserstream-mainnet-pitt.helius-rpc.com - slc: Salt Lake City, AS (Pantai Barat) -
https://laserstream-mainnet-slc.helius-rpc.com - ams: Amsterdam, Eropa -
https://laserstream-mainnet-ams.helius-rpc.com - fra: Frankfurt, Eropa -
https://laserstream-mainnet-fra.helius-rpc.com - tyo: Tokyo, Asia -
https://laserstream-mainnet-tyo.helius-rpc.com - sgp: Singapura, Asia -
https://laserstream-mainnet-sgp.helius-rpc.com
https://laserstream-devnet-ewr.helius-rpc.com
Lihat dokumentasi gRPC LaserStream untuk petunjuk penyiapan lengkap dan panduan pemilihan endpoint.
Penyiapan lingkungan Rust
Semua skrip pengukuran menggunakan Rust dengan Cargo. Penyiapan dasar:.env dengan kredensial Anda:
Metode 1: Perbandingan aliran paralel
Skrip ini membuat dua koneksi independen ke endpoint gRPC yang berbeda dan mengukur koneksi mana yang menerima pesanBlockMeta yang sama terlebih dahulu. Pendekatan ini menghilangkan masalah sinkronisasi jam dengan menggunakan pengukuran waktu relatif.
- Delta positif: Layanan pertama (YS) lebih lambat daripada layanan kedua (LS)—LaserStream lebih cepat
- Delta negatif: Layanan pertama (YS) lebih cepat daripada layanan kedua (LS)—LaserStream lebih lambat
- Rata-rata/Median: Perbedaan performa rata-rata
- P95: Perbedaan latensi persentil ke-95
Metode 2: Analisis stempel waktu pembuatan
Pendekatan ini membandingkan stempel waktucreated_at yang disematkan dalam pesan dengan waktu sistem lokal Anda saat pesan diterima.
Praktik terbaik untuk pengujian latensi
Prinsip utama
- Kolokasi: Terapkan pengujian di wilayah yang sama dengan endpoint LaserStream Anda untuk meminimalkan latensi jaringan
- Beberapa metode: Gunakan perbandingan aliran paralel (Metode 1) sebagai metrik utama Anda dan lengkapi dengan analisis stempel waktu
- Pemantauan jangka panjang: Jalankan pengujian dalam waktu lama untuk menangkap berbagai kondisi jaringan dan kepadatan blockchain
- Analisis statistik: Fokus pada persentil (P95, P99), bukan hanya rata-rata, untuk memahami latensi ekor
Menafsirkan hasil
- Tetapkan tolok ukur awal: Jalankan pengujian setidaknya selama 1 jam untuk menetapkan performa dasar dalam kondisi normal
- Identifikasi pola: Cari pola dalam lonjakan latensi—apakah lonjakan tersebut berkorelasi dengan aktivitas blockchain yang tinggi atau kepadatan jaringan?
- Bandingkan persentil: Latensi P95 sering kali lebih penting daripada latensi rata-rata bagi pengalaman pengguna
- Pantau konsistensi: Performa yang konsisten sering kali lebih berharga daripada latensi minimum absolut