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

Adopt distributed version Bucket4j for huge request rate on single key #90

Closed
vladimir-bukhtoyarov opened this issue Jan 11, 2019 · 2 comments

Comments

@vladimir-bukhtoyarov
Copy link
Collaborator

vladimir-bukhtoyarov commented Jan 11, 2019

Problem:
Because Bucket4j makes a new network request to backend on each limitation check the Bucket4j it is not well suitable for cases when the request rate is huge(tens thouthands per second), because remote backend becomes become a bottleneck.

Solution:
Hold bucket state locally on each node and sync consumed tokens periodically with a configured interval. Be aware of consumption rate inside cluster.

Ideas for implementation:
The algorithms are well described in research articles for example:
Cloud Control with Distributed Rate Limiting Barath Raghavan, Kashi Vishwanath, Sriram Ramabhadran, Kenneth Yocum, and Alex C. Snoeren. Department of Computer Science and Engineering University of California, San Diego

Limitations:
Acting in this way may break consistency, so activation of this mode should be optional.

vladimir-bukhtoyarov added a commit that referenced this issue Sep 22, 2019
vladimir-bukhtoyarov added a commit that referenced this issue Sep 22, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 2, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 7, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 7, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 16, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 17, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 17, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 17, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 18, 2019
vladimir-bukhtoyarov pushed a commit that referenced this issue Oct 18, 2019
@vladimir-bukhtoyarov vladimir-bukhtoyarov changed the title Adopt distributed version Bucket4j for huge request rate Adopt distributed version Bucket4j for huge request rate on single key Oct 27, 2019
vladimir-bukhtoyarov added a commit that referenced this issue Oct 27, 2019
…e Hazelcast bucket with 100 concurrent threads
vladimir-bukhtoyarov pushed a commit that referenced this issue Nov 12, 2019
…equests per second with asynchronous buckets and Hazelcast
vladimir-bukhtoyarov pushed a commit that referenced this issue Jan 9, 2020
…equests per second with asynchronous buckets and Hazelcast
@vladimir-bukhtoyarov vladimir-bukhtoyarov moved this from In-progress to Implemented in 7.0 - Conquer the world Mar 7, 2020
vladimir-bukhtoyarov added a commit that referenced this issue Jul 28, 2020
vladimir-bukhtoyarov added a commit that referenced this issue Jul 28, 2020
vladimir-bukhtoyarov added a commit that referenced this issue Jul 29, 2020
vladimir-bukhtoyarov added a commit that referenced this issue Jul 30, 2020
vladimir-bukhtoyarov added a commit that referenced this issue Jul 30, 2020
@vladimir-bukhtoyarov
Copy link
Collaborator Author

Implementation has been done, documentation will be created in the scope of #69

vladimir-bukhtoyarov added a commit that referenced this issue Nov 2, 2020
@vladimir-bukhtoyarov vladimir-bukhtoyarov moved this from Implemented to Documented in 7.0 - Conquer the world Feb 10, 2022
@vladimir-bukhtoyarov vladimir-bukhtoyarov moved this from Documented to Implemented in 7.0 - Conquer the world Feb 10, 2022
@rupebac

This comment was marked as abuse.

@vladimir-bukhtoyarov vladimir-bukhtoyarov moved this from Implemented to Documented in 7.0 - Conquer the world Sep 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
Development

No branches or pull requests

2 participants