All Projects → SteeltoeOSS → Circuitbreaker

SteeltoeOSS / Circuitbreaker

Licence: other
.NET Circuit Breaker Pattern Frameworks

Projects that are alternatives of or similar to Circuitbreaker

Service Pattern Go
Simple clean Go REST API architecture with dependency injection and mocking example, following SOLID principles.
Stars: ✭ 449 (+268.03%)
Mutual labels:  circuit-breaker
Breaker
Circuit breaker for HTTP requests in Elixir
Stars: ✭ 30 (-75.41%)
Mutual labels:  circuit-breaker
Failurewall
Destroys failures.
Stars: ✭ 64 (-47.54%)
Mutual labels:  circuit-breaker
Samples
Steeltoe samples and reference application collection
Stars: ✭ 586 (+380.33%)
Mutual labels:  circuit-breaker
Luffy
Luffy is a simple resilience and transient-fault handling library
Stars: ✭ 19 (-84.43%)
Mutual labels:  circuit-breaker
Cockatiel
A resilience and transient-fault-handling library that allows developers to express policies such as Backoff, Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback. Inspired by .NET Polly.
Stars: ✭ 993 (+713.93%)
Mutual labels:  circuit-breaker
Spring Cloud Alibaba
Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
Stars: ✭ 20,934 (+17059.02%)
Mutual labels:  circuit-breaker
Gobreaker
Circuit Breaker implemented in Go
Stars: ✭ 1,867 (+1430.33%)
Mutual labels:  circuit-breaker
Sample Camel Spring Boot
three samples in different branches that illustrates usage of apache camel as microservice framework providing integration with consul, hystrix, ribbon and other tools
Stars: ✭ 24 (-80.33%)
Mutual labels:  circuit-breaker
Rezilience
ZIO-native utilities for making resilient distributed systems
Stars: ✭ 60 (-50.82%)
Mutual labels:  circuit-breaker
Steeltoe
Steeltoe .NET Core Components: CircuitBreaker, Configuration, Connectors, Discovery, Logging, Management, and Security
Stars: ✭ 612 (+401.64%)
Mutual labels:  circuit-breaker
Guard
NOT MAINTAINED! A generic high performance circuit breaker & proxy server written in Go
Stars: ✭ 745 (+510.66%)
Mutual labels:  circuit-breaker
Recloser
A concurrent circuit breaker implemented with ring buffers
Stars: ✭ 51 (-58.2%)
Mutual labels:  circuit-breaker
Opossum
Node.js circuit breaker - fails fast ⚡️
Stars: ✭ 473 (+287.7%)
Mutual labels:  circuit-breaker
Polly
Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+.
Stars: ✭ 9,944 (+8050.82%)
Mutual labels:  circuit-breaker
Ganesha
🐘 A Circuit Breaker pattern implementation for PHP applications.
Stars: ✭ 384 (+214.75%)
Mutual labels:  circuit-breaker
Semian
🐒 Resiliency toolkit for Ruby for failing fast
Stars: ✭ 976 (+700%)
Mutual labels:  circuit-breaker
Failsafe Rs
A circuit breaker implementation for rust
Stars: ✭ 118 (-3.28%)
Mutual labels:  circuit-breaker
Circuit B
A non intrusive circuit breaker for node.js
Stars: ✭ 88 (-27.87%)
Mutual labels:  circuit-breaker
Circuit Breaker Monad
Circuit Breaker pattern as a monad
Stars: ✭ 52 (-57.38%)
Mutual labels:  circuit-breaker

.NET Circuit Breaker Frameworks

NOTICE: This repository has been relocated as a sub-directory under the Steeltoe repository. All issues and future development will be done under that repository.

Cloud-native architectures are typically composed of multiple layers of distributed services. End-user requests may comprise multiple calls to these services, and if a lower-level service fails, the failure can cascade up to the end user and spread to other dependent services. Heavy traffic to a failing service can also make it difficult to repair. Using Circuit Breaker patterns, you can prevent failures from cascading and provide fallback behavior until a failing service is restored to normal operation.

When applied to a service, a circuit breaker framework watches for failing calls to the service. If failures reach a certain threshold, it “opens” the circuit and automatically redirects calls to the specified fallback mechanism. This gives the failing service time to recover.

There are several popular Circuit Breaker framework options for .NET . Netflix built and then open-sourced their own Circuit Breaker framework, Hystrix - Neflix's latency and fault-tolerence library. Another heavily used option in the .NET space is Polly.

This repository contains various packages for implementing the Circuit breaker pattern in .NET and ASP.NET applications. The Steeltoe.CircuitBreaker.Hystrix.Core package is a port of the core Netflix Hystrix Circuit Breaker framework to .NET. The Steeltoe.CircuitBreaker.Hystrix package adds some additional helper methods to make it easy to incorporate Hystrix into your ASP.NET application. Typically you will reference this package, instead of the Core package in your .csproj file.

Additionally, two additional packages are included each of which help you use the Hystrix Dashboard to monitor your applications circuits and gather Hystrix metrics in real time. The Steeltoe.CircuitBreaker.Hystrix.MetricsEvents package enables using the open source Netflix Hystrix Dashboard when monitoring your ASP.NET application. You simply include this package in your application and then point the Netflix Dashboard at the app in order to begin seeing Hystrix Metrics.

The other dashboard releated package is the Steeltoe.CircuitBreaker.Hystrix.MetricsStream package. It enables using the Spring Cloud Services Hystrix Dashboard on Cloud Foundry for monitoring your application. In order to use it, you include this package into your application and then bind the Spring Cloud Services Hystrix Dashboard to your app to begin streaming metrics to the dashboard.

Windows Master: AppVeyor Master

Windows Dev: AppVeyor Dev

Linux/OS X Master: Travis Master

Linux/OSX Dev: Travis Dev

.NET Runtime & Framework Support

The packages are intended to support both .NET 4.6+ and .NET Core (CoreCLR/CoreFX) runtimes. They are built and unit tested on Windows, Linux and OSX.

While the primary usage of the providers is intended to be with ASP.NET Core applications, they should also work fine with UWP, Console and ASP.NET 4.x apps.

Currently all of the code and samples have been tested on .NET Core 2.0, .NET 4.6.x, and on ASP.NET Core 2.0.0.

Usage

For more information on how to use these components see the online Steeltoe documentation.

Nuget Feeds

All new development is done on the dev branch. More stable versions of the packages can be found on the master branch. The latest prebuilt packages from each branch can be found on one of two MyGet feeds. Released version can be found on nuget.org.

Building Pre-requisites

To build and run the unit tests:

  1. .NET Core SDK 2.0.3 or greater
  2. .NET Core Runtime 2.0.3

Building Packages & Running Tests - Windows

To build the packages on windows:

  1. git clone ...
  2. cd clone directory
  3. cd src/project (e.g. cd src/Steeltoe.CircuitBreaker.HystrixBase)
  4. dotnet restore
  5. dotnet pack --configuration Release or Debug

The resulting artifacts can be found in the bin folder under the corresponding project. (e.g. src/Steeltoe.CircuitBreaker.HystrixBase/bin

To run the unit tests:

  1. git clone ...
  2. cd clone directory
  3. cd test/test project (e.g. cd test/Steeltoe.CircuitBreaker.HystrixBase.Test)
  4. dotnet restore
  5. dotnet xunit -verbose

Building Packages & Running Tests - Linux/OSX

To build the packages on Linux/OSX:

  1. git clone ...
  2. cd clone directory
  3. cd src/project (e.g.. cd src/Steeltoe.CircuitBreaker.HystrixBase)
  4. dotnet restore
  5. dotnet pack --configuration Release or Debug

The resulting artifacts can be found in the bin folder under the corresponding project. (e.g. src/Steeltoe.CircuitBreaker.HystrixBase/bin

To run the unit tests:

  1. git clone ...
  2. cd clone directory
  3. cd test/test project (e.g. cd test/Steeltoe.CircuitBreaker.HystrixBase.Test)
  4. dotnet restore
  5. dotnet xunit -verbose -framework netcoreapp2.0

Sample Applications

See the Samples repo for examples of how to use these packages.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].