circuitbreaker

package
v0.0.0-...-f54e1bb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 13, 2024 License: BSD-3-Clause Imports: 12 Imported by: 0

README

circuitbreaker

import "github.com/blueprint-uservices/blueprint/plugins/circuitbreaker"

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

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")

type CircuitBreakerClient

Blueprint IR node representing a CircuitBreaker

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
}

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

Generated by gomarkdoc

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

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 (*CircuitBreakerClient) ImplementsGolangNode

func (node *CircuitBreakerClient) ImplementsGolangNode()

func (*CircuitBreakerClient) Name

func (node *CircuitBreakerClient) Name() string

func (*CircuitBreakerClient) String

func (node *CircuitBreakerClient) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳