• This repository has been archived on 17/May/2019
  • Stars
    star
    122
  • Rank 282,873 (Top 6 %)
  • Language
    C#
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

.NET Circuit Breaker Pattern Frameworks

.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.

More Repositories

1

Steeltoe

Steeltoe .NET Core Components: CircuitBreaker, Configuration, Connectors, Discovery, Logging, Management, and Security
C#
886
star
2

Samples

Steeltoe samples and reference application collection
C#
634
star
3

Discovery

.NET Clients for Service Discovery and Registration
C#
180
star
4

Configuration

.NET Configuration providers for Spring Cloud Config Server & CloudFoundry
C#
101
star
5

Home

This is the old home for the Steeltoe project. Please refer to the SteeltoeOSS/steeltoe repository moving forward.
49
star
6

Initializr

Steeltoe Initializr - .NET Microservices Templates
C#
34
star
7

Management

Management Endpoints used to allow insight into your applications
C#
31
star
8

Connectors

Connectors simplify connecting to standalone and CloudFoundry services
C#
28
star
9

Security

ASP.NET Security Providers for CloudFoundry
C#
27
star
10

Tutorials

20
star
11

Common

Interfaces and components used across other Steeltoe packages
C#
17
star
12

Logging

Logging Extensions
C#
16
star
13

Dockerfiles

Dockerfile
16
star
14

Tooling

Steeltoe developer tool collection
C#
12
star
15

configserver

Spring Cloud Config Server for Configuration Samples
Java
11
star
16

Documentation

The documentation, api browser, and getting started guides used for the Steeltoe's website.
JavaScript
8
star
17

steeltoe-site

Content for steeltoe.io
CSS
8
star
18

MainSite

This repository is used for building the steeltoe.io website, along with the Getting Started guides. The docs portion is in the Documentation repository.
HTML
8
star
19

InitializrWeb

Reference implementation of a Steeltoe Initializr UI project generator
Java
5
star
20

musicStore-config

MusicStore Application Config Server Repo
4
star
21

InitializrService

Reference implementation of a Steeltoe Initializr Server project generator
C#
4
star
22

Schema

Steeltoe appsettings.config schema generator for modern IDEs (Visual Studio 2019, Visual Studio Code, and Rider)
C#
3
star
23

config-repo

Configuration files for Samples
2
star
24

.github

Global repository config for all repos
2
star
25

steeltoe-site-ci

Concourse pipeline for steeltoe-site
2
star
26

steeltoe-ci

Continuous Integration resources for Steeltoe
PowerShell
2
star
27

eShopOnContainers-config

Configuration repo for eShopOnContainers
1
star
28

NetCoreToolTemplates

C#
1
star
29

workshop-config-repo

Workshop Config Server Repo
1
star
30

steeltoe-site-tools

Docker image for steeltoe-site Concourse pipeline
1
star