Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #232 from MaxBartkov/fix_grammar_asciidoc
Fix grammar asciidoc
- Loading branch information
Showing
42 changed files
with
320 additions
and
324 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,29 @@ | ||
== About Bucket4j | ||
=== What is Bucket4j | ||
Bucket4j is Java rate-limiting library is mainly based on token-bucket algorithm, which are by de-facto standard for rate limiting in the IT industry. | ||
Bucket4j is a Java rate-limiting library that is mainly based on the token-bucket algorithm, which is by the de-facto standard for rate-limiting in the IT industry. | ||
|
||
.Bucket4j is more than direct implementation of token-bucket | ||
.Bucket4j is more than a direct implementation of token-bucket | ||
IMPORTANT: Its math model provides several useful extensions that are not mentioned in the classic token-bucket interpretations, such as multiple limits per bucket or overdraft. These math extensions will be detailed described later. | ||
|
||
You can read more about token bucket by following links: | ||
You can read more about the token bucket by following links: | ||
|
||
* https://en.wikipedia.org/wiki/Token_bucket[Token bucket] - wikipedia page describes the token-bucket algorithm in classical form. | ||
* https://vbukhtoyarov-java.blogspot.com/2021/11/non-formal-overview-of-token-bucket.html[Non-formal overview of token-bucket algorithm] - the brief overview of token-bucket algorithm. | ||
* https://en.wikipedia.org/wiki/Token_bucket[Token bucket] - Wikipedia page describes the token-bucket algorithm in classical form. | ||
* https://vbukhtoyarov-java.blogspot.com/2021/11/non-formal-overview-of-token-bucket.html[Non-formal overview of token-bucket algorithm] - the brief overview of the token-bucket algorithm. | ||
|
||
=== Bucket4j basic features | ||
* *Absolutely non-compromise precision* - Bucket4j does not operate with floats or doubles, all calculation are performed in the integer arithmetic, this feature protects end users from calculation errors involved by rounding. | ||
* *Absolutely non-compromise precision* - Bucket4j does not operate with floats or doubles, all calculations are performed in integer arithmetic, this feature protects end-users from calculation errors involved by rounding. | ||
* *Effective implementation in terms of concurrency*: | ||
- Bucket4j is good scalable for multi-threading case it by defaults uses lock-free implementation. | ||
- In same time, library provides different concurrency strategies that can be chosen when default lock-free strategy is not desired. | ||
- Bucket4j is good scalable for multi-threading cases it by default uses lock-free implementation. | ||
- At the same time, the library provides different concurrency strategies that can be chosen when a default lock-free strategy is not desired. | ||
* *Effective API in terms of garbage collector footprint*: Bucket4j API tries to use primitive types as much as it is possible in order to avoid boxing and other types of floating garbage. | ||
* *Pluggable listener API* that allows to implement monitoring and logging. | ||
* *Rich diagnostic API* that allows to investigate internal state. | ||
* *Rich configuration management* - configuration of the bucket can be changed on fly | ||
* *Pluggable listener API* that allows implementing monitoring and logging. | ||
* *Rich diagnostic API* that allows investigating internal state. | ||
* *Rich configuration management* - configuration of the bucket can be changed on the fly | ||
|
||
=== Bucket4j distributed features | ||
In additional to basic features described above, `Bucket4j` provides ability to implement rate-limiting in cluster of JVMs: | ||
In addition to the basic features described above, `Bucket4j` provides the ability to implement rate-limiting in a cluster of JVMs: | ||
|
||
* Bucket4j out of the box supports any GRID solution which compatible with JCache API (JSR 107) specification. | ||
* Bucket4j provides the framework that allows to quickly build integration with your own persistent technology like RDMS or a key-value storage. | ||
* For clustered usage scenarios Bucket4j supports asynchronous API that extremely matters when going to distribute world, because asynchronous API allows avoiding blocking your application threads each time when you need to execute Network request. | ||
* Bucket4j provides the framework that allows you to quickly build integration with your own persistent technology like RDMS or key-value storage. | ||
* For clustered usage scenarios Bucket4j supports asynchronous API that extremely matters when going to distribute world because asynchronous API allows avoiding blocking your application threads each time when you need to execute Network request. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.