|
1 |
| -## backOffAlgorthm Library |
| 1 | +## backOffAlgorithm Library |
2 | 2 |
|
3 |
| -This repository contains the backoffAlgorithm library, a utility library to calculate interval period for network operation retries (like failed network connection with server) using exponential back-off with jitter algorithm. The backoffAlgorithm library is distributed under the [MIT Open Source License](LICENSE). |
| 3 | +This repository contains the backoffAlgorithm library, a utility library to calculate backoff period for network operation retries (like failed network connection with server) using an exponential backoff with jitter algorithm. The backoffAlgorithm library is distributed under the [MIT Open Source License](LICENSE). |
4 | 4 |
|
5 |
| -This library supports the "Full Jitter" algorithm for exponential back-off with jitter. |
| 5 | +This library uses the "Full Jitter" strategy for the exponential backoff with jitter algorithm. |
6 | 6 | More information about the algorithm can be seen in the [Exponential Backoff and Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/) AWS blog.
|
7 | 7 |
|
| 8 | +Exponential backoff with jitter is typically used when retrying a failed |
| 9 | +connection or network operation with the server. An exponential backoff with jitter helps to |
| 10 | +mitigate the server request failure caused from network congestion or high request load on |
| 11 | +the server by spreading out retry requests across multiple devices. |
| 12 | +Besides, in an environment with poor connectivity, a client can get disconnected at any time. |
| 13 | +A backoff strategy helps the client to conserve battery by not repeatedly attempting reconnections when they are |
| 14 | +unlikely to succeed. |
| 15 | + |
8 | 16 | ## Reference example
|
9 | 17 |
|
10 | 18 | The example below shows how to use the backoffAlgorithm library to retry a DNS resolution query for `amazon.com`.
|
@@ -119,9 +127,8 @@ git submodule update --checkout --init --recursive --test/unit-test/Unity
|
119 | 127 | ### Platform Prerequisites
|
120 | 128 |
|
121 | 129 | - For running unit tests
|
122 |
| - - C90 compiler like gcc |
| 130 | + - C89 or later compiler like gcc |
123 | 131 | - CMake 3.13.0 or later
|
124 |
| - - Ruby 2.0.0 or later is additionally required for the Unity test framework (that we use). |
125 | 132 | - For running the coverage target, gcov is additionally required.
|
126 | 133 |
|
127 | 134 | ### Steps to build Unit Tests
|
|
0 commit comments