breaker

package
v0.19.4 Latest Latest
Warning

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

Go to latest
Published: Nov 1, 2026 License: Apache-2.0 Imports: 8 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrOpen 熔断器打开错误
	ErrOpen = errors.New("circuit breaker is open")

	// ErrRateLimitExceeded 限流错误
	ErrRateLimitExceeded = errors.New("rate limit exceeded")
)

Functions

This section is empty.

Types

type Circuit

type Circuit struct {
	// contains filtered or unexported fields
}

Circuit 熔断器

func New

func New(name string, config Config) *Circuit

New 创建熔断器

func (*Circuit) AllowRequest

func (c *Circuit) AllowRequest() bool

AllowRequest 是否允许请求

func (*Circuit) Execute

func (c *Circuit) Execute(fn func() error) error

Execute 执行带熔断保护的操作

func (*Circuit) GetState

func (c *Circuit) GetState() State

GetState 获取当前状态

func (*Circuit) GetStats

func (c *Circuit) GetStats() map[string]interface{}

GetStats 获取统计信息

func (*Circuit) RecordFailure

func (c *Circuit) RecordFailure()

RecordFailure 记录失败

func (*Circuit) RecordSuccess

func (c *Circuit) RecordSuccess()

RecordSuccess 记录成功

func (*Circuit) Stats

func (c *Circuit) Stats() CircuitStats

Stats 统计信息

type CircuitStats

type CircuitStats struct {
	Name     string
	State    string
	Failures int32
}

CircuitStats 熔断器统计

type Config

type Config struct {
	MaxFailures       int32
	ResetTimeout      time.Duration
	HalfOpenSuccesses int32
	OnStateChange     func(from, to State)
}

Config 熔断器配置

type GlobalMetrics

type GlobalMetrics struct {
	TotalExecutions int64   `json:"total_executions"`
	TotalSuccess    int64   `json:"total_success"`
	TotalFailure    int64   `json:"total_failure"`
	ActiveCount     int64   `json:"active_count"`
	SuccessRate     float64 `json:"success_rate"`
}

GlobalMetrics 全局指标

type Limiter

type Limiter struct {
	// contains filtered or unexported fields
}

Limiter 限流器(令牌桶算法)

func NewLimiter

func NewLimiter(rate, capacity int32) *Limiter

NewLimiter 创建限流器

func (*Limiter) Allow

func (l *Limiter) Allow() bool

Allow 是否允许单个请求

func (*Limiter) AllowN

func (l *Limiter) AllowN(n int32) bool

AllowN 是否允许N个请求

func (*Limiter) GetAvailableTokens

func (l *Limiter) GetAvailableTokens() int32

GetAvailableTokens 获取可用令牌数

func (*Limiter) Stats

func (l *Limiter) Stats() LimiterStats

Stats 获取统计信息

func (*Limiter) Wait

func (l *Limiter) Wait(ctx context.Context) error

Wait 等待直到可以执行

type LimiterStats

type LimiterStats struct {
	Rate            int32
	Capacity        int32
	AvailableTokens int32
}

LimiterStats 限流器统计

type Metrics

type Metrics struct {
	Name              string  `json:"name"`
	ExecutionCount    int64   `json:"execution_count"`
	SuccessCount      int64   `json:"success_count"`
	FailureCount      int64   `json:"failure_count"`
	RunningCount      int64   `json:"running_count"`
	AvgExecutionTime  float64 `json:"avg_execution_time_ms"`
	MaxExecutionTime  int64   `json:"max_execution_time_ms"`
	MinExecutionTime  int64   `json:"min_execution_time_ms"`
	LastExecutionTime int64   `json:"last_execution_time"`
	SuccessRate       float64 `json:"success_rate"`
}

Metrics 通用指标

type MetricsCollector

type MetricsCollector struct {
	// contains filtered or unexported fields
}

MetricsCollector 通用指标收集器

func NewMetricsCollector

func NewMetricsCollector() *MetricsCollector

NewMetricsCollector 创建指标收集器

func (*MetricsCollector) GetActiveCount

func (mc *MetricsCollector) GetActiveCount() int64

GetActiveCount 获取全局活跃数

func (*MetricsCollector) GetAllMetrics

func (mc *MetricsCollector) GetAllMetrics() map[string]*Metrics

GetAllMetrics 获取所有指标

func (*MetricsCollector) GetAvgExecutionTime

func (mc *MetricsCollector) GetAvgExecutionTime(name string) float64

GetAvgExecutionTime 获取指定名称的平均执行时间

func (*MetricsCollector) GetExecutionCount

func (mc *MetricsCollector) GetExecutionCount(name string) int64

GetExecutionCount 获取指定名称的执行次数

func (*MetricsCollector) GetFailureCount

func (mc *MetricsCollector) GetFailureCount(name string) int64

GetFailureCount 获取指定名称的失败次数

func (*MetricsCollector) GetGlobalMetrics

func (mc *MetricsCollector) GetGlobalMetrics() *GlobalMetrics

GetGlobalMetrics 获取全局统计

func (*MetricsCollector) GetLastExecutionTime

func (mc *MetricsCollector) GetLastExecutionTime(name string) int64

GetLastExecutionTime 获取指定名称的最后执行时间

func (*MetricsCollector) GetMaxExecutionTime

func (mc *MetricsCollector) GetMaxExecutionTime(name string) int64

GetMaxExecutionTime 获取指定名称的最大执行时间

func (*MetricsCollector) GetMetrics

func (mc *MetricsCollector) GetMetrics(name string) *Metrics

GetMetrics 获取单个指标

func (*MetricsCollector) GetMinExecutionTime

func (mc *MetricsCollector) GetMinExecutionTime(name string) int64

GetMinExecutionTime 获取指定名称的最小执行时间

func (*MetricsCollector) GetRunningCount

func (mc *MetricsCollector) GetRunningCount(name string) int64

GetRunningCount 获取指定名称的当前运行数

func (*MetricsCollector) GetSnapshot

func (mc *MetricsCollector) GetSnapshot() *MetricsSnapshot

GetSnapshot 获取指标快照

func (*MetricsCollector) GetSuccessCount

func (mc *MetricsCollector) GetSuccessCount(name string) int64

GetSuccessCount 获取指定名称的成功次数

func (*MetricsCollector) GetTotalExecutions

func (mc *MetricsCollector) GetTotalExecutions() int64

GetTotalExecutions 获取全局执行次数

func (*MetricsCollector) GetTotalFailure

func (mc *MetricsCollector) GetTotalFailure() int64

GetTotalFailure 获取全局失败次数

func (*MetricsCollector) GetTotalSuccess

func (mc *MetricsCollector) GetTotalSuccess() int64

GetTotalSuccess 获取全局成功次数

func (*MetricsCollector) RecordFailure

func (mc *MetricsCollector) RecordFailure(name string, duration time.Duration)

RecordFailure 记录执行失败

func (*MetricsCollector) RecordRateLimited

func (mc *MetricsCollector) RecordRateLimited(name string)

RecordRateLimited 记录被限流

func (*MetricsCollector) RecordStart

func (mc *MetricsCollector) RecordStart(name string)

RecordStart 记录开始执行

func (*MetricsCollector) RecordSuccess

func (mc *MetricsCollector) RecordSuccess(name string, duration time.Duration)

RecordSuccess 记录执行成功

func (*MetricsCollector) Reset

func (mc *MetricsCollector) Reset()

Reset 重置指标

type MetricsSnapshot

type MetricsSnapshot struct {
	GlobalMetrics *GlobalMetrics      `json:"global_metrics"`
	Metrics       map[string]*Metrics `json:"metrics"`
	Timestamp     int64               `json:"timestamp"`
}

MetricsSnapshot 指标快照,用于导出

type PrometheusExporter

type PrometheusExporter struct {
	// contains filtered or unexported fields
}

PrometheusExporter Prometheus格式导出器

func NewPrometheusExporter

func NewPrometheusExporter(collector *MetricsCollector, namespace, service string) *PrometheusExporter

NewPrometheusExporter 创建Prometheus导出器

func (*PrometheusExporter) Export

func (pe *PrometheusExporter) Export() string

Export 导出Prometheus格式指标

type State

type State int32

State 熔断器状态

const (
	StateClosed   State = iota // 关闭(正常)
	StateOpen                  // 开启(熔断)
	StateHalfOpen              // 半开(尝试恢复)
)

func (State) String

func (s State) String() string

String 返回状态字符串

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL