-
-
Notifications
You must be signed in to change notification settings - Fork 27k
Rate Limiting Pattern #2973 #3291
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
base: master
Are you sure you want to change the base?
Conversation
…ling for AdaptiveRateLimiter.java
…Token Bucket Rate Limiter
PR SummaryThis PR implements the Rate Limiting Design Pattern in Java using three different strategies: Token Bucket, Fixed Window, and Adaptive Rate Limiter. It simulates concurrent client requests to multiple services (S3, DynamoDB, Lambda) and applies appropriate rate-limiting logic to manage request throughput, prevent system overload, and simulate elastic behavior under pressure. The implementation includes comprehensive unit tests and diagrams. Changes
autogenerated by presubmit.ai |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (3)
- 331beb9: Updated README.md. All test case passed. Updated with Google Java Guidelines
- ed01b7b: Added Class Diagram and Flow Diagrams for Adaptive, Fixed Window and Token Bucket Rate Limiter
- dd0fc2b: need to fix one test case shouldGraduallyIncreaseLimitWhenHealthy failing for AdaptiveRateLimiter.java
Files Processed (25)
- pom.xml (2 hunks)
- rate-limiting-pattern/README.md (1 hunk)
- rate-limiting-pattern/etc/AdaptiveRateLimiter.png (0 hunks)
- rate-limiting-pattern/etc/FixedWindowRateLimiter.png (0 hunks)
- rate-limiting-pattern/etc/TokenBucketRateLimiter.png (0 hunks)
- rate-limiting-pattern/etc/UMLClassDiagram.png (0 hunks)
- rate-limiting-pattern/pom.xml (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/AdaptiveRateLimiter.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/FindCustomerRequest.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiter.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/RateLimitException.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/RateLimitOperation.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/RateLimiter.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/ServiceUnavailableException.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/ThrottlingException.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/AdaptiveRateLimiterTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/ConcurrencyTests.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/ExceptionTests.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FindCustomerRequestTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiterTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/RateLimitOperationTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/RateLimiterTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiterTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- 1f3ad40: Updated parent pom Rate Limiting pattern #2973
Files Processed (24)
- rate-limiting-pattern/README.md (1 hunk)
- rate-limiting-pattern/etc/AdaptiveRateLimiter.png (0 hunks)
- rate-limiting-pattern/etc/FixedWindowRateLimiter.png (0 hunks)
- rate-limiting-pattern/etc/TokenBucketRateLimiter.png (0 hunks)
- rate-limiting-pattern/etc/UMLClassDiagram.png (0 hunks)
- rate-limiting-pattern/pom.xml (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/AdaptiveRateLimiter.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/FindCustomerRequest.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiter.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/RateLimitException.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/RateLimitOperation.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/RateLimiter.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/ServiceUnavailableException.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/ThrottlingException.java (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/AdaptiveRateLimiterTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/ConcurrencyTests.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/ExceptionTests.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FindCustomerRequestTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiterTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/RateLimitOperationTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/RateLimiterTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiterTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- 3526c05: Updated parent pom Rate Limiting pattern #2973
Files Processed (1)
- pom.xml (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- 26cb1b2: fixed shouldResetCounterAfterWindow() test Rate Limiting pattern #2973
Files Processed (1)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiterTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (1)
-
rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiterTest.java [24-28]
enhancement: "Improve test timing reliability."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- 8afefee: formatting fixed Rate Limiting pattern #2973
Files Processed (1)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiterTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (1)
-
rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FixedWindowRateLimiterTest.java [26-29]
enhancement: "Improve window reset check in
shouldResetCounterAfterWindow
test."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (6)
- 54d7396: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
- 4e886f8: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
- 0889442: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
- 5120195: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
- 3a9de27: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
- fe253e4: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
Files Processed (5)
- rate-limiting-pattern/pom.xml (1 hunk)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/AppTest.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/AppTestUtils.java (1 hunk)
- rate-limiting-pattern/src/test/java/com/iluwatar/rate/limiting/pattern/FindCustomerRequestTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- b6002a5: added test coverage for app.java and fixed random to be thread safe Rate Limiting pattern #2973
Files Processed (1)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- dfe6753: fixed random to be thread safe Rate Limiting pattern #2973
Files Processed (1)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ LGTM!
Review Summary
Commits Considered (1)
- 28e8b4a: fixed random to be thread safe Rate Limiting pattern #2973
Files Processed (1)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
|
Pull Request Template
What does this PR do?
This PR implements the Rate Limiting Design Pattern in Java using three different strategies:
It simulates concurrent client requests to multiple services (S3, DynamoDB, Lambda) and applies appropriate rate-limiting logic to manage request throughput, prevent system overload, and simulate elastic behavior under pressure.