BT9G LABS / DHT Deep Dive #15

Merancang DHT Crawler Berperforma Tinggi: Arsitektur, Queue, dan Backpressure

Desain DHT crawler yang memisahkan packet plane dan work plane, memakai bounded queue, sharding, observability, serta backpressure untuk throughput stabil.

BT9G Labs / DHT Deep Dive #15. Performa crawler yang baik berasal dari pemisahan tanggung jawab dan kontrol beban, bukan hanya menambah goroutine atau socket.

Merancang DHT Crawler Berperforma Tinggi: Arsitektur, Queue, dan Backpressure

Ringkasan cepat

  • Topik: Merancang DHT Crawler Berperforma Tinggi: Arsitektur, Queue, dan Backpressure
  • Kata kunci utama: high performance DHT crawler, backpressure, queue, UDP, crawler architecture
  • Untuk pembaca: engineer backend, peneliti protokol, search engineer, dan pengembang implementasi BitTorrent
  • Tujuan: Menjelaskan protokol dan desain sistem dengan cukup presisi agar dapat diterapkan pada pipeline discovery, metadata, indexing, dan search di dunia nyata.

Gambaran sistem

Pisahkan packet plane dari work plane

Packet plane harus menangani receive/send UDP, parsing KRPC, validasi, transaction matching, dan routing updates dengan latency rendah. Work plane menangani dedup, durable storage, metadata scheduling, enrichment, serta indexing yang jauh lebih berat.

Menggabungkan keduanya membuat satu query database lambat dapat menghambat pembacaan UDP dan meningkatkan packet loss. Gunakan queue atau channel yang jelas di antara tahap-tahap tersebut.

Semua komponen harus bounded

Jumlah inflight query, ukuran queue, retry buffer, open connection, goroutine, dan cache harus memiliki batas. Tanpa batas, sistem tampak cepat sampai downstream melambat lalu memori dan file descriptor melonjak.

Backpressure bukan tanda kegagalan; ia mekanisme untuk menjaga sistem tetap stabil. Ketika queue penuh, scheduler dapat menurunkan concurrency, menunda pekerjaan low-priority, atau melakukan sampling pada event yang mudah diduplikasi.

Shard berdasarkan tanggung jawab

Scale-out tidak harus berarti setiap instance menjalankan semua fungsi. Collector UDP, hash ledger, metadata fetcher, validator, dan index writer memiliki pola resource berbeda. Memisahkannya memungkinkan kapasitas ditambah tepat pada bottleneck.

Hash-based partitioning dapat menjaga satu InfoHash diproses konsisten oleh shard tertentu, sementara queue broker atau database lease mencegah pekerjaan ganda.

Optimasi setelah mengukur

Pantau packet rate, parse error, routing lookup latency, queue depth, dedup hit rate, Peer connect success, metadata success, verification failure, CPU, memory, dan socket errors. Throughput akhir ditentukan oleh tahap terlemah.

Benchmark lokal yang hanya menghitung paket per detik sering menyesatkan jika success metadata di Internet tetap rendah. Optimalkan terhadap outcome yang berguna, bukan hanya aktivitas internal.

Sketsa implementasi

[UDP sockets]
     |
     v
[KRPC + routing] ---> metrics
     |
     v
[bounded hash-event queue]
     |
     v
[dedup / scheduler] ---> [retry store]
     |
     v
[metadata workers] ---> [validation] ---> [DB / Search]

Catatan engineering BT9G Labs

Untuk sistem indeks seperti BT9G, metrik yang paling berguna bukan sekadar jumlah paket atau jumlah InfoHash yang terlihat. Pisahkan identitas konten, observasi jaringan, status akuisisi, metadata terverifikasi, serta dokumen pencarian menjadi lapisan data yang berbeda. Simpan sumber dan waktu observasi untuk data yang datang dari DHT atau Peer. Dengan begitu, bottleneck dapat dilacak dari tahap discovery, koneksi, handshake, negosiasi extension, pengambilan metadata, validasi, penyimpanan, hingga indexing.

Kesalahan umum

  • Menambah concurrency tanpa batas.
  • Melakukan operasi database berat pada loop UDP.
  • Menjalankan semua tanggung jawab dalam satu proses besar tanpa observability.
  • Mengoptimalkan packet rate tanpa mengukur metadata success throughput.

Artikel BT9G Labs terkait

Referensi


Artikel berikutnya: Apa yang Dibutuhkan untuk Mengambil 1.000+ Metadata Torrent per Menit →

Artikel ini menjelaskan protokol BitTorrent publik dan pola engineering. Observasi terhadap sebuah Swarm tidak berarti kontennya tersedia, valid, atau diizinkan untuk didistribusikan.