Skip to content

xbreaker

omeyang edited this page Sep 17, 2026 · 1 revision

pkg/resilience/xbreaker

稳定性:Stable · 覆盖率:99.4% · 源码:pkg/resilience/xbreaker

熔断器。基于 sony/gobreaker,提供状态机封装与可观测性钩子。

用途

  • 防止级联故障:下游异常时快速失败,避免堆积
  • 给下游恢复时间

快速上手

import "github.com/omeyang/xkit/pkg/resilience/xbreaker"

cb := xbreaker.New("downstream-service",
    xbreaker.WithMaxRequests(3),
    xbreaker.WithInterval(30*time.Second),
    xbreaker.WithTimeout(10*time.Second),
    xbreaker.WithReadyToTrip(func(counts gobreaker.Counts) bool {
        return counts.ConsecutiveFailures > 5
    }),
)

result, err := cb.Execute(ctx, func() (any, error) {
    return callDownstream(ctx)
})

关键类型与函数

名称 说明
Breaker 熔断器实例
New(name, opts...) *Breaker 构造
Execute(ctx, fn) (result, error) 包裹调用
WithMaxRequests / WithInterval / WithTimeout / WithReadyToTrip 选项

设计要点

  • sony/gobreaker:成熟库,不自造轮子
  • 三态机:Closed / Open / Half-Open

相关

Clone this wiki locally