Backoff eksponensial adalah penanganan error standar
untuk aplikasi jaringan, di mana klien secara berkala mencoba kembali
permintaan yang gagal dengan meningkatnya
penundaan di antara permintaan. Sebaiknya klien menggunakan
backoff eksponensial untuk semua permintaan ke Memorystore untuk Valkey yang
Error kode respons 5xx
dan 429
HTTP.
Memahami cara kerja backoff eksponensial adalah penting jika Anda membangun aplikasi klien yang menggunakan REST API Memorystore for Valkey secara langsung.
Jika Anda menggunakan Konsol Google Cloud, konsol akan mengirimkan permintaan ke Memorystore for Valkey atas nama Anda dan menangani setiap permintaan {i>backoff<i}.
Contoh algoritma
Algoritma backoff eksponensial mencoba kembali permintaan dengan meningkatkan secara eksponensial waktu tunggu di antara percobaan ulang hingga waktu backoff maksimum. Contohnya adalah:
Buat permintaan ke Memorystore for Valkey.
Jika permintaan gagal, tunggu 1 +
random_number_milliseconds
detik dan coba lagi terhadap permintaan.Jika permintaan gagal, tunggu 2 +
random_number_milliseconds
detik dan coba lagi terhadap permintaan.Jika permintaan gagal, tunggu 4 +
random_number_milliseconds
detik dan coba lagi terhadap permintaan.Dan seterusnya, hingga
maximum_backoff
kali.Tetap menunggu dan mencoba ulang hingga jumlah maksimum percobaan ulang, tetapi jangan menambah periode tunggu antarpercobaan ulang.
dengan:
Waktu tunggunya adalah min(((2^
n
)+random_number_milliseconds
),maximum_backoff
), dengann
bertambah 1 untuk setiap iterasi (permintaan).random_number_milliseconds
adalah jumlah acak milidetik yang kurang dari atau sama dengan 1.000. Hal ini membantu menghindari kasus di mana banyak klien yang disinkronkan dengan beberapa situasi dan semua percobaan ulang sekaligus, mengirimkan permintaan secara ombak. Nilairandom_number_milliseconds
harus dihitung ulang setelah setiap permintaan percobaan ulang.maximum_backoff
biasanya 32 atau 64 detik. Nilai yang sesuai bergantung pada kasus penggunaannya.
Anda dapat terus mencoba lagi setelah mencapai waktu maximum_backoff
.
Percobaan ulang setelah titik ini tidak perlu terus meningkatkan waktu backoff. Sebagai
misalnya, jika klien menggunakan waktu maximum_backoff
64 detik, maka setelah
mencapai nilai ini, klien dapat mencoba lagi setiap 64 detik. Pada titik tertentu,
klien harus dicegah agar tidak
melakukan percobaan tanpa henti.
Backoff maksimum dan jumlah percobaan ulang maksimum yang digunakan klien tergantung pada kasus penggunaan dan kondisi jaringan. Misalnya, ponsel aplikasi tertentu mungkin perlu mencoba lagi lebih banyak kali dan untuk interval yang lebih lama jika dibandingkan dengan klien desktop dari aplikasi yang sama.
Jika permintaan percobaan ulang gagal setelah melebihi jumlah maksimum percobaan ulang, laporkan atau mencatat error menggunakan salah satu metode yang tercantum di bagian Mendapatkan dukungan.