Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable rate limits to automatically update based on the amount of available preprocessors #1215

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

kyle-sammons
Copy link
Collaborator

@kyle-sammons kyle-sammons commented Jan 24, 2025

Summary

This PR enables rate limits to automatically update based on the amount of available preprocessors. It accomplishes this by creating a new MetadataStore for preprocessors, and having each preprocessor add an ephemeral node into that store on boot. Each preprocessor then adds a listener to that store, so that when a new preprocessor comes online (i.e. adds a new ephemeral node to the store), or goes offline (i.e. an ephemeral node is removed), the rate limit gets updated simply by dividing the cluster-wide rate limit by total number of ephemeral nodes present. Just to prevent preprocessors for somehow running on outdated information (for example if they didn't properly get the ZK event when a new node comes online), the preprocessors will get the preprocessor counts and update their rate limits at configurable intervals (default is 60 seconds).

This should effectively unlock the ability to enable auto-scaling on preprocessors as a whole.

This PR also fixes a couple of hidden bugs surrounding synchronization in ZK that I ran into while building it out.

Requirements

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant