Retry & Timeout Patterns
TRANSIENT, failures, (jaise, EK, MOMENTARY, network, glitch) RETRY, se, RESOLVE, ho, sakte, HAIN — LEKIN, RETRY, LOGIC, "exponential, backoff" (HAR, retry, ke, BEECH, WAIT, TIME, BADHANA) ke, saath, hona, CHAHIYE, taaki, EK, STRUGGLING, service, PAR, MORE, LOAD, na, PADE.
TIMEOUTS, ZAROORI, HAIN, taaki, EK, SLOW, downstream, service, POORE, system, ko, INDEFINITELY, "HANG" na, kar, de — AGGRESSIVE, TIMEOUTS, (jaise, 2, seconds) SLOW, services, se, RESOURCES, ko, FASTER, FREE, karте, HAIN.
async function callWithRetry(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await Promise.race([fn(), timeout(2000)]);
} catch (err) {
await sleep(Math.pow(2, i) * 1000); // exponential backoff: 1s, 2s, 4s
}
}
throw new Error("Max retries exceeded");
}- Retry pattern, transient, failures, ke, liye — exponential, backoff, ke, saath
- Timeouts, HANGING, requests, se, bachate, hain
- Sirf, transient, errors, (503, timeouts) ko, retry, karo — 400s, ko, nahi
"Jitter" (RANDOM, VARIATION) exponential, backoff, mein, ADD, karна, IMPORTANT, hai — bina, jitter, ke, MULTIPLE, clients, SAME, TIME, PAR, retry, kar, sakte, hain (jaise, saare, EK, saath, 1s, 2s, 4s, PAR, retry), EK, "THUNDERING, HERD" create, karte, hue.
const delay = Math.pow(2, i) * 1000 + Math.random() * 1000; // jitter, addedAgar, EK, request, MULTIPLE, services, se, GUZARTA, hai, HAR, service, ka, OWN, timeout, ho, sakta hai — LEKIN, EK, "TIMEOUT, BUDGET" (TOTAL, allowed, time, POORI, chain, ke, liye) PLAN, karna, ZAROORI, hai, taaki, individual, timeouts, ka, SUM, EK, REASONABLE, TOTAL, se, ZYAADA, na, ho.