BARU: Helius mengakuisisi Light Protocol
meningkatkan throughput klien grpc javascript Solana hingga 40 kali lipat dengan SDK LaserStream
Blog/Pengembangan

Streaming Solana Berperforma Tinggi dengan SDK LaserStream 

Engineer IntegrasiHet Dagli di XHet Dagli di LinkedIn
Bacaan 4 menit
Daftar Isi

    LaserStream adalah layanan streaming gRPC generasi baru yang dioptimalkan untuk pengiriman data Solana dengan latensi serendah mungkin. Layanan ini sepenuhnya kompatibel dengan antarmuka gRPC Yellowstone dan dapat langsung digunakan sebagai pengganti hanya dengan mengubah endpoint dan x-token, tanpa modifikasi kode.

    Tim terkemuka seperti DFlow menggunakan LaserStream untuk mendukung aliran order dan pemantauan eksekusi secara real-time dengan kecepatan dan keandalan yang tak tertandingi.

    Kompatibilitas ini memungkinkan developer memigrasikan implementasi Yellowstone yang ada dengan lancar. Namun, klien Yellowstone standar tidak memiliki pengoptimalan performa dan fitur keandalan bawaan.

    SDK LaserStream mengatasi kekurangan tersebut dengan menyediakan rekoneksi otomatis, pemutaran ulang berbasis slot, dan arsitektur ber-throughput tinggi yang dirancang untuk beban kerja berat—menghadirkan keandalan sekaligus streaming berlatensi sangat rendah tanpa kompromi.

    Streaming Andal melalui Rekoneksi dan Pemutaran Ulang

    Ketiga SDK LaserStream—JavaScript/TypeScript, Rust, dan Go—menangani tantangan penting dalam streaming berbandwidth tinggi: menjaga kontinuitas data saat terjadi gangguan jaringan.

    Setiap SDK menerapkan rekoneksi otomatis dengan pelacakan slot. Saat koneksi terputus, klien secara internal melacak slot terakhir yang diproses.

    Setelah terhubung kembali, klien melanjutkan dari titik tersebut dan meminta pemutaran ulang historis hingga 48 jam.

    Arsitektur ini mencegah kehilangan data selama pemutusan sementara di sisi server tanpa memerlukan logika percobaan ulang di tingkat aplikasi.

    Pelacak slot menyimpan nomor slot yang telah diproses di memori. Saat replay: true (default), SDK menjamin tidak ada celah dalam stream data Anda. Beberapa deployment, khususnya node khusus, tidak mendukung pemutaran ulang historis. Untuk endpoint ini, atur replay: false guna menonaktifkan pelacakan slot internal dan melanjutkan dari slot saat ini setelah terhubung kembali.

    Bottleneck Performa JavaScript dalam Stream gRPC

    Stream gRPC Node.js menghadapi bottleneck praktis yang menjadi kritis pada beban bervolume tinggi. Masalahnya bukan sekadar teori; ini berkaitan dengan apa yang terjadi saat callback Anda memproses setiap pesan.

    Event loop JavaScript yang bersifat single-threaded membuat setiap operasi dalam handler data Anda (misalnya, mengurai JSON, memvalidasi data, menjalankan logika bisnis, mencatat peristiwa, dan sebagainya) memblokir pesan berikutnya.

    Saat pesan tiba lebih cepat daripada kemampuan handler memprosesnya, stream akan tertinggal, backpressure meningkat, callback menumpuk dalam antrean, dan aplikasi Anda memproses data yang semakin usang.

    Klien gRPC berbasis JS murni menambah overhead berikut: 

    • Deserialisasi protobuf di JavaScript
    • Tekanan garbage collection akibat alokasi objek
    • Berulang kali melintasi batas JavaScript/native untuk I/O jaringan

    Untuk aplikasi yang memproses ribuan pembaruan account atau notifikasi transaction per detik, seperti infrastruktur MEV, analitik real-time, atau pelacakan order book, penundaan ini mengikis setiap keunggulan kompetitif. Sistem Anda bereaksi terhadap peristiwa yang sudah terjadi beberapa detik sebelumnya.

    Menggunakan Inti Rust dengan Binding NAPI Zero-Copy untuk Mengoptimalkan Performa SDK JavaScript

    SDK JavaScript LaserStream mengatasi bottleneck ini dengan memindahkan seluruh operasi berat keluar dari JavaScript.

    Seluruh mesin streaming, pengelolaan koneksi gRPC, serialisasi protobuf, dan pelacakan slot berjalan di Rust. Hanya logika aplikasi Anda yang berjalan di JavaScript.

    Arsitektur ini mengatasi masalah utama: 

    1. I/O jaringan dan deserialisasi protobuf tidak pernah menyentuh event loop JavaScript.
    2. Lapisan Rust menangani seluruh pemrosesan pesan di thread terpisah.
    3. Lapisan Rust mengirimkan byte protobuf yang telah diserialisasi ke callback JavaScript melalui binding NAPI (Node-API).

    Berikut diagram cara kerja SDK JavaScript LaserStream:

    Binding NAPI menyediakan transfer data zero-copy untuk pembaruan streaming. Saat LaserStream mengirim pesan protobuf, lapisan Rust melakukan deserialisasi, melacak slot jika diperlukan, lalu meneruskan byte mentah langsung ke JavaScript sebagai Uint8Array, tanpa serialisasi tambahan dan tanpa salinan perantara.

    Perbedaan performanya sangat besar: 1.3 GB/s dibandingkan 30 MB/s, 40 kali lebih cepat daripada klien JavaScript Yellowstone standar. 

    Ini bukan peningkatan bertahap. Inilah perbedaan antara memproses stream block lengkap secara real-time dan tertinggal beberapa menit.

    Inti Rust menangani:

    • Siklus hidup koneksi gRPC dan kontrol aliran
    • Rekoneksi otomatis dengan exponential backoff
    • Pelacakan slot dan logika pemutaran ulang
    • Encoding/decoding protobuf
    • Pengiriman callback yang thread-safe melalui antrean berbatas (mencegah pembengkakan memori saat callback melambat)

    JavaScript menangani logika aplikasi, pemfilteran, aturan bisnis, dan persistensi data tanpa berurusan dengan bottleneck I/O jaringan atau serialisasi.

    Dukungan Kompresi

    LaserStream mendukung beberapa algoritma kompresi pada lapisan transportasi gRPC. Kompresi Zstd mengurangi bandwidth sebesar 70–80% dibandingkan stream tanpa kompresi. Hal ini sangat penting untuk subscription bervolume tinggi karena biaya egress meningkat secara linear seiring transfer data.

    Konfigurasi kompresi sangat sederhana:

    Kode
    const config = {
      apiKey: 'your-key',
      endpoint: 'your-endpoint',
      channelOptions: {
        'grpc.default_compression_algorithm': CompressionAlgorithms.zstd,
        'grpc.max_receive_message_length': 1_000_000_000,
      }
    };

    Zstd menawarkan rasio kompresi yang lebih baik daripada gzip dengan overhead CPU yang sebanding, sehingga menjadi pilihan yang direkomendasikan.

    Kesimpulan

    SDK LaserStream mengatasi tantangan mendasar dalam streaming data berperforma tinggi. SDK ini mempertahankan kompatibilitas Yellowstone sekaligus menambahkan fitur keandalan, rekoneksi otomatis, dan pemutaran ulang berbasis slot yang tidak tersedia pada klien standar. 

    Untuk aplikasi JS, arsitektur berbasis Rust menghilangkan bottleneck event loop yang membuat implementasi JS murni tidak praktis dalam skala besar.

    Peningkatan throughput 40 kali lipat bukanlah pengoptimalan bertahap. Ini merupakan perbedaan arsitektural antara memproses stream block lengkap secara real-time dan tertinggal beberapa menit saat menghadapi beban ekstrem.

    Untuk aplikasi produksi yang tidak dapat mengorbankan latensi dan keandalan—seperti infrastruktur MEV, analitik real-time, dan sistem trading otomatis—SDK LaserStream menyediakan fondasi yang Anda perlukan.

    Referensi Tambahan

    Berlangganan Helius

    Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan

    Gambar diperbesar