Masalah thundering herd terus menantang developer yang bekerja dengan aplikasi bertraffik tinggi, namun diskusi komunitas terkini mengungkapkan pendekatan inovatif yang jauh melampaui metode distributed locking dan sinkronisasi in-process standar.
Masalah ini terjadi ketika beberapa request secara bersamaan mengalami cache miss untuk data yang sama, menyebabkan semua request membanjiri database sekaligus. Sementara solusi tradisional fokus pada pencegahan panggilan database duplikat melalui Redis locks atau koordinasi CompletableFuture, developer menemukan cara yang lebih kreatif untuk mengatasi tantangan ini.
Perbandingan Solusi Tradisional
| Metode | Cakupan | Overhead Jaringan | Kompleksitas | Kasus Penggunaan Terbaik |
|---|---|---|---|---|
| Distributed Lock ( Redis ) | Multi-node | Tinggi | Sedang | Diperlukan koordinasi antar server |
| In-process Sync ( CompletableFuture ) | Single node | Rendah | Rendah | Instance aplikasi tunggal |
| Background Cache Refresh | Multi-node | Sedang | Rendah | Pola akses data yang dapat diprediksi |
BitTorrent untuk Distribusi File Enterprise
Salah satu pendekatan paling menarik berasal dari lingkungan automated testing. Seorang developer yang mengelola lebih dari 100 komputer di lab testing menghadapi bottleneck download file masif ketika beberapa mesin secara bersamaan meminta file software berukuran multi-gigabyte. Solusinya melibatkan implementasi peer-to-peer BitTorrent tanpa tracker, menggunakan HTTP seeding dari hanya tiga server.
Beberapa komputer pertama yang mendapat pekerjaan akan menarik sebagian besar/semua konten file dari server kami, dan kemudian komputer lainnya akan mendapatkan potongan file sebagian besar dari rekan-rekan mereka.
Pendekatan ini mengubah thundering herd menjadi solusinya sendiri, dengan downloader awal menjadi distributor konten untuk request selanjutnya. Implementasi serupa telah digunakan untuk sistem distribusi Linux di lingkungan perbankan, di mana 8000 mesin di ratusan cabang menggunakan update berbasis torrent untuk mendistribusikan perubahan sistem secara efisien.
Pendekatan Alternatif
- Distribusi BitTorrent: Digunakan untuk distribusi file besar di laboratorium pengujian (100+ mesin)
- Caching Switch Jaringan: Implementasi OrbitCache dalam switch Tofino
- CDN Collapse Forwarding: Deduplikasi permintaan di tingkat edge
- Exponential Backoff: Waktu percobaan ulang acak untuk mencegah permintaan tersinkronisasi
- Read Replicas: Solusi tingkat database untuk beban kerja yang berat baca
![]() |
|---|
| Gajah-gajah yang berjalan dalam formasi melambangkan upaya terkoordinasi yang diperlukan untuk mengatasi masalah thundering herd melalui metode inovatif seperti distribusi peer-to-peer |
Implementasi Cache Level Network
Peneliti akademis mendorong batas lebih jauh dengan mengimplementasikan cache langsung di programmable network switch. Proyek seperti OrbitCache menggunakan Tofino switch untuk menangani cache miss di level network, memarkirkan request berikutnya untuk key yang sama di memori switch hingga backend merespons. Ini menghilangkan overhead performa dari sinkronisasi thread yang dihadapi cache berbasis CPU tradisional.
Mempertanyakan Tingkat Keparahan Masalah
Tidak semua developer setuju bahwa solusi kompleks selalu diperlukan. Beberapa berargumen bahwa cache database modern sering menangani request bersamaan dengan cukup efisien sehingga overhead network dari distributed lock mungkin lebih besar daripada manfaatnya. Saturasi connection pool tetap menjadi kekhawatiran yang valid, namun read replica sederhana terkadang dapat memberikan alternatif yang kurang rawan error dibanding implementasi caching kustom.
Alternatif Sederhana Mendapat Perhatian
Komunitas juga menyoroti pendekatan yang lebih sederhana yang bekerja dengan baik di banyak skenario. CDN caching dengan fitur collapse forwarding dapat mencegah masalah di edge. Background cache refresh job yang mengisi data secara proaktif menghilangkan skenario cache miss sepenuhnya. Exponential backoff dengan random jitter mengatasi sinkronisasi timing yang sering menyebabkan stampede ini.
Diskusi mengungkapkan bahwa meskipun masalah thundering herd nyata, pilihan solusi sangat bergantung pada use case spesifik, pola traffic, dan kendala infrastruktur. Dari distribusi peer-to-peer hingga caching level network, developer terus menemukan cara kreatif untuk mengubah tantangan koordinasi menjadi solusi terdistribusi.

