Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
1 changed file
with
63 additions
and
0 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
@@ -0,0 +1,63 @@ | ||
# Apache Safeguard | ||
Apache Safeguard is a library around Fault Tolerance, giving your application resilience in a highly distributed microservices framework. It is designed for use with CDI applications. | ||
|
||
## What is Fault Tolerance? | ||
|
||
In today's microservices runtimes, Fault Tolerance allows an application to handle the situations where another service it is consuming is unavialable. | ||
|
||
## Types of Fault Tolerance | ||
|
||
Fault Tolerance is a broad subject, has multiple areas of support typically found in a framework. | ||
|
||
### Fallback | ||
|
||
When a given invocation fails, you can declare a Fallback for that method. | ||
|
||
### Timeout | ||
|
||
Allows method invocations to be bounded to a specific duration. Once that boundary hits, an exception is thrown or a fallback is invoked. | ||
|
||
### Retry | ||
|
||
Allows a method to be invoked a number of times, as well as for a given duration. | ||
|
||
### Circuit Breaker | ||
|
||
Allows invocations to a given method as long as it is returning successfully. Based on thresholds defined, when a method begins failing invocations will be blocked. After a duration has passed invocations will begin to attempt again. | ||
|
||
### Bulkhead | ||
|
||
A bulkhead throttles concurrent access to a method. The throttling can either by based on a semaphore or a thread pool. Semaphores are invoked on the caller's thread and are not bound by any limit to pending requests. Thread pools are used to invoke the component asynchronously and have a finite amount of waiting invocations. | ||
|
||
## Getting Started | ||
|
||
Apache Safeguard is currently in development. You can use our snapshots from the Apache Snapshots repository. These builds are in no way endorsed. | ||
|
||
```xml | ||
<repositories> | ||
<repository> | ||
<id>apache-snapshot-repository</id> | ||
<url>http://repository.apache.org/snapshots/</url> | ||
<releases> | ||
<enabled>false</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>true</enabled> | ||
</snapshots> | ||
</repository> | ||
</repositories> | ||
<dependencies> | ||
<dependency> | ||
<artifactId>safeguard-api</artifactId> | ||
<groupId>org.apache.geronimo.safeguard</groupId> | ||
<version>1.0-SNAPSHOT</version> | ||
</dependency> | ||
<dependency> | ||
<artifactId>safeguard-impl</artifactId> | ||
<groupId>org.apache.geronimo.safeguard</groupId> | ||
<version>1.0-SNAPSHOT</version> | ||
</dependency> | ||
</dependencies> | ||
``` | ||
|
||
Apache Safeguard implements the [MicroProfile Fault Tolerance v1.0 specification](https://github.com/eclipse/microprofile-fault-tolerance/releases/tag/1.0) |