Documentation
¶
Overview ¶
Package circuitbreaker provides a Blueprint modifier for the client side of service calls.
The plugin wraps clients with a circuitbreaker that blocks any new requests from being sent out over a connection if the failure rate exceeds a provided number in a fixed duration. The block is removed after the completion of the fixed duration interval.
Index ¶
- func AddCircuitBreaker(spec wiring.WiringSpec, serviceName string, min_reqs int64, ...)
- type CircuitBreakerClient
- func (node *CircuitBreakerClient) AddInstantiation(builder golang.NamespaceBuilder) error
- func (node *CircuitBreakerClient) AddInterfaces(builder golang.ModuleBuilder) error
- func (node *CircuitBreakerClient) GenerateFuncs(builder golang.ModuleBuilder) error
- func (node *CircuitBreakerClient) GetInterface(ctx ir.BuildContext) (service.ServiceInterface, error)
- func (node *CircuitBreakerClient) ImplementsGolangNode()
- func (node *CircuitBreakerClient) Name() string
- func (node *CircuitBreakerClient) String() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddCircuitBreaker ¶
func AddCircuitBreaker(spec wiring.WiringSpec, serviceName string, min_reqs int64, failure_rate float64, interval string)
Adds circuit breaker functionality to all clients of the specified service. Uses a blueprint.WiringSpec. Circuit breaker trips when `failure_rate` percentage of requests fail. Minimum number of requests for the circuit to break is specified using `min_reqs`. The circuit breaker counters are reset after `interval` duration. Usage:
AddCircuitBreaker(spec, "serviceA", 1000, 0.1, "1s")
Types ¶
type CircuitBreakerClient ¶
type CircuitBreakerClient struct { golang.Service golang.GeneratesFuncs golang.Instantiable InstanceName string Wrapped golang.Service Min_Reqs int64 FailureRate float64 Interval string // contains filtered or unexported fields }
Blueprint IR node representing a CircuitBreaker
func (*CircuitBreakerClient) AddInstantiation ¶
func (node *CircuitBreakerClient) AddInstantiation(builder golang.NamespaceBuilder) error
func (*CircuitBreakerClient) AddInterfaces ¶
func (node *CircuitBreakerClient) AddInterfaces(builder golang.ModuleBuilder) error
func (*CircuitBreakerClient) GenerateFuncs ¶
func (node *CircuitBreakerClient) GenerateFuncs(builder golang.ModuleBuilder) error
func (*CircuitBreakerClient) GetInterface ¶
func (node *CircuitBreakerClient) GetInterface(ctx ir.BuildContext) (service.ServiceInterface, error)
func (*CircuitBreakerClient) ImplementsGolangNode ¶
func (node *CircuitBreakerClient) ImplementsGolangNode()
func (*CircuitBreakerClient) Name ¶
func (node *CircuitBreakerClient) Name() string
func (*CircuitBreakerClient) String ¶
func (node *CircuitBreakerClient) String() string