[Enhancement] Configurable dispatch rate limiter backoff to reduce the 1-second latency penalty when limits are reached #24036
Labels
type/enhancement
The enhancements for the existing features or docs. e.g. reduce memory usage of the delayed messages
Search before asking
Motivation
The current dispatch rate limiter implementation introduces a fixed 1-second additional latency when the rate limit is reached. This delay is hardcoded as
MESSAGE_RATE_BACKOFF_MS = 1000
in thePersistentTopic
class:pulsar/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
Line 240 in e547bea
Solution
Simply making
MESSAGE_RATE_BACKOFF_MS
configurable would be insufficient for several reasons:Token Replenishment Frequency: Tokens are currently added to the rate limiter once per second. If the backoff time were reduced (e.g., to 100ms) without changing the token addition frequency, dispatchers would check for available tokens too frequently, wasting CPU resources.
Implementation Differences:
ratePeriod
).addTokensResolutionNanos
), enabling better scaling to millions of rate limiter instances without any overhead of scheduled jobs.The backoff mechanism is triggered in the
AbstractBaseDispatcher
class:pulsar/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractBaseDispatcher.java
Lines 417 to 428 in e547bea
Possible solution:
MESSAGE_RATE_BACKOFF_MS
configurable in dispatch rate limiter configurations.Fairness (as defined in fair queuing and fairness measure) Considerations:
The current fixed 1-second backoff, which matches the 1-second token replenishment interval, may inadvertently provide some level of fairness in resource allocation. Changing this ratio could impact the fairness properties of the system.
Fairness is currently unaddressed in Pulsar's dispatch rate limiting. Addressing fairness is crucial to improving Pulsar's rate limiting and capacity management capabilities as described in the Pulsar 4.0 blog post.
To make Pulsar competitive with Confluent's Kora, which according to the Kora paper includes features like "backpressure and auto-tuning" and "dynamic quota management," we need to enhance Pulsar's approach to fairness in resource allocation, including in dispatch rate limiting.
Alternatives
No response
Anything else?
No response
Are you willing to submit a PR?
The text was updated successfully, but these errors were encountered: