Resilience4j | Bulkhead vs. Rate Limiter

Bulkhead & Rate Limiter modules provided by Resilience4j sometimes might sound similar but their functioning is lot different than each other. Lets look at the differences between Bulkhead & Rate Limiter.

Comparison

Bulkhead Rate Limiter
Limit number of concurrent calls at a time. Limit number total calls in given period of time
Ex: Allow 5 concurrent calls at a time Ex: Allow 5 calls every 2 second.
In above example, first 5 calls will start processing in parallel while any further calls will keep waiting. As soon as one of those 5 in-process calls is finished, next waiting calls will be immediately eligible to be executed. In above example, 2 second window starts & first 5 calls will start processing (may be parallel or not parallel). Those 5 calls might finish before 2 seconds, but next waiting calls will NOT be immediately eligible to be executed. After 2 seconds window is over, next 2 seconds window will start & then only next waiting calls will be eligible to be executed.
Code Example & runtime behavior Code Example & runtime behavior

Leave a Reply

Your email address will not be published. Required fields are marked *