SingleFlight Di Golang
Last updated
Last updated
Halo teman2 semua. kali ini saya akan membahas mengenai singleflight. karena saya beberapa hari ini research dan banyak baca artikel akhirnya ketemu feature di golang dengan nama single flight. singleflight sendiri adalah sebuah metode sharing information yang di akses secara terus menerus dan merupakan data yang sama. jadi intinya alih alih kita melakukan request yang banyak ke sebuah function maka kita bisa memotong itu dengan sharing data/informationya saja. jadi satu kali akses saja dan ini akan membuat proses data kita semakin cepat.
Contoh kode saya ambil dari
saya modifikasi sedikit karena github ngeblock ip saya karena terlalu banyak request ke apinya.
Di atas ada dua function yang pertama
Pemanggilan request tanpa singleflight dan hasilnya seperti ini
lihat hasilnya setiap kali request kita memanggil terus function google status dan process timenya di atas 1 second.
Kita lihat ketika menggunakan singleflight
lihat perbedaanya dia hanya sekali manggil google status dan melakukan sharing data dan lihat response timenya 50 persenya ada yang di bawah 1 second
implementasi perlu diperhatikan dengan baik
sebaiknya tidak digunakan untuk proses insert, update, delete karena rawan terjadi racecondition
sebaiknya di pakai untuk proses load yang massive dalam waktu bersamaan
sebaiknya gunakan untuk data yang tidak terlalu realtime tapi pengaksesanya sangat sering
sebaiknya di gunakan untuk data yang perubahanya tidak terlalu sering
itulah guys sedikit tentang singleflight di golang semoga bermanfaat.