Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is retry with exponential backoff in microservices?
It is a strategy where a service retries a failed request multiple times, waiting longer between each try, usually doubling the wait time after each failure to reduce overload.
Click to reveal answer
beginner
Why use exponential backoff instead of fixed retry intervals?
Exponential backoff reduces the chance of repeated collisions and overload by increasing wait times, giving the system time to recover before retrying again.
Click to reveal answer
intermediate
What is a common formula for calculating wait time in exponential backoff?
Wait time = base_delay * (2 ^ retry_count), where base_delay is the initial wait time and retry_count is the number of attempts made.
Click to reveal answer
intermediate
What is jitter and why is it used with exponential backoff?
Jitter adds randomness to the wait time to prevent many clients from retrying at the same time, which helps avoid spikes in traffic and improves system stability.
Click to reveal answer
beginner
Name two scenarios where retry with exponential backoff is useful.
1. When a microservice call fails due to temporary network issues. 2. When a downstream service is overloaded and returns errors temporarily.
Click to reveal answer
What does exponential backoff do after each retry attempt?
AKeeps the wait time the same
BDoubles the wait time before the next retry
CHalves the wait time before the next retry
DStops retrying immediately
✗ Incorrect
Exponential backoff doubles the wait time after each retry to reduce load and collisions.
Why is jitter added to exponential backoff?
ATo add randomness and avoid retry storms
BTo make retries happen faster
CTo reduce the number of retries
DTo guarantee retries succeed
✗ Incorrect
Jitter adds randomness to retry delays to prevent many clients from retrying simultaneously.
Which of the following is NOT a benefit of exponential backoff?
AReduces system overload
BImproves success rate of retries
CEnsures immediate retry after failure
DHelps services recover before next retry
✗ Incorrect
Exponential backoff does not retry immediately; it increases wait time between retries.
What is a typical base delay in exponential backoff?
AMilliseconds to seconds
BMinutes to hours
CDays
DNo delay
✗ Incorrect
Base delay is usually a small time like milliseconds or seconds to start the retry wait.
In microservices, when should you avoid retrying with exponential backoff?
AWhen timeout occurs
BWhen network is temporarily down
CWhen service is overloaded
DWhen failure is permanent, like invalid input
✗ Incorrect
Retrying permanent failures wastes resources; exponential backoff is for temporary issues.
Explain how retry with exponential backoff works and why it is important in microservices.
Think about how waiting longer between retries helps the system recover.
You got /4 concepts.
Describe the role of jitter in retry with exponential backoff and how it improves system behavior.
Consider what happens if many clients retry at the exact same time.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of using retry with exponential backoff in microservices?
easy
A. To stop retrying after the first failure
B. To immediately retry requests without delay
C. To wait longer between retries after each failure to reduce load
D. To increase the number of retries indefinitely
Solution
Step 1: Understand retry behavior
Retry with exponential backoff increases wait time after each failure to avoid overwhelming the system.
Step 2: Identify the purpose
This approach helps reduce load and gives the system time to recover from temporary issues.
Final Answer:
To wait longer between retries after each failure to reduce load -> Option C
Quick Check:
Exponential backoff = wait longer after failure [OK]
Hint: Exponential backoff means increasing wait times after failures [OK]
Common Mistakes:
Thinking retries happen immediately without delay
Assuming retries stop after one failure
Believing retries increase without limit
2. Which of the following is the correct formula for calculating the wait time in exponential backoff after the nth retry?
easy
A. wait_time = base_delay * 2^n
B. wait_time = base_delay + n
C. wait_time = base_delay / n
D. wait_time = base_delay * n
Solution
Step 1: Recall exponential backoff formula
Exponential backoff doubles the wait time after each retry, so wait time grows exponentially.
Step 2: Match formula to options
The formula is wait_time = base_delay * 2^n, where n is the retry count.
Final Answer:
wait_time = base_delay * 2^n -> Option A
Quick Check:
Exponential means power of 2 [OK]
Hint: Exponential backoff doubles wait time each retry (power of 2) [OK]
Common Mistakes:
Using linear multiplication instead of exponential
Dividing base delay by retry count
Adding retry count instead of multiplying
3. Consider this pseudocode for retry with exponential backoff:
max_retries = 3
base_delay = 100
for attempt in range(max_retries):
success = call_service()
if success:
print('Success')
break
else:
wait_time = base_delay * 2 ** attempt
print(f'Retry after {wait_time} ms')
What will be the printed output if all retries fail?
medium
A. Retry after 100 ms
Retry after 200 ms
Retry after 400 ms
B. Retry after 100 ms
Retry after 300 ms
Retry after 600 ms
C. Retry after 100 ms
Retry after 100 ms
Retry after 100 ms
D. Retry after 200 ms
Retry after 400 ms
Retry after 800 ms
Solution
Step 1: Calculate wait times per attempt
For attempt 0: 100 * 2^0 = 100 ms For attempt 1: 100 * 2^1 = 200 ms For attempt 2: 100 * 2^2 = 400 ms
Step 2: Match calculated times to output
The printed output matches Retry after 100 ms
Retry after 200 ms
Retry after 400 ms exactly with increasing wait times.
Final Answer:
Retry after 100 ms
Retry after 200 ms
Retry after 400 ms -> Option A
Quick Check:
Wait times double each retry: 100, 200, 400 [OK]
Hint: Calculate 2^attempt and multiply by base delay [OK]
Common Mistakes:
Adding instead of multiplying for wait time
Using constant wait time for all retries
Starting exponent from 1 instead of 0
4. In this retry logic snippet, what is the main error?
max_retries = 3
base_delay = 100
for attempt in range(max_retries):
success = call_service()
if success:
print('Success')
break
else:
wait_time = base_delay * 2 ** (attempt + 1)
sleep(wait_time / 1000)
medium
A. The loop should run max_retries + 1 times
B. The base_delay should be divided by 2
C. The sleep time should not be divided by 1000
D. The exponent should be just attempt, not attempt + 1
Solution
Step 1: Analyze exponent usage in wait time
The formula uses 2^(attempt + 1), which starts doubling from 2^1 on first attempt, skipping 2^0.
Step 2: Identify correct exponent start
Exponential backoff usually starts with 2^0 for the first retry to avoid unnecessarily long initial wait.
Final Answer:
The exponent should be just attempt, not attempt + 1 -> Option D
Quick Check:
Exponent starts at 0 for first retry [OK]
Hint: Exponent starts at 0 for first retry, not 1 [OK]
Common Mistakes:
Starting exponent at 1 causing longer initial wait
Incorrect sleep time units
Wrong loop count for retries
5. You design a microservice that calls an external API. To handle failures, you implement retry with exponential backoff and jitter. Which approach best reduces the risk of retry storms when many instances fail simultaneously?
hard
A. Use a fixed delay between retries without jitter
B. Add random jitter to the exponential backoff delay before each retry
C. Retry immediately without any delay
D. Increase max retries to a very high number
Solution
Step 1: Understand retry storms
When many instances retry at the same time, they can overload the system, causing a retry storm.
Step 2: Use jitter to spread retries
Adding random jitter to the exponential backoff delay spreads retry attempts over time, reducing simultaneous retries.
Final Answer:
Add random jitter to the exponential backoff delay before each retry -> Option B