Documentation
¶
Overview ¶
Package circuitbreaker 提供熔断器原语:当下游错误率超过阈值时自动"断开"保护调用方, 经过冷却期后进入半开探测,探测成功则恢复、失败则继续断开。
三态:Closed(正常) → Open(熔断,快速失败) → HalfOpen(探测) → Closed / Open。 错误率用固定窗口(ring bucket)统计;Open 期间 Do 立即返回 ErrCircuitOpen。
与 beauty 弹性三件套互补:
- backoff:退避计算(延迟多久)
- hedge:对冲请求(备份并发)
- ratelimit:限速率(每秒多少)
- circuitbreaker:熔断(错误率过高时切断)
纯标准库、并发安全。
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrCircuitOpen = errors.New("circuitbreaker: circuit open")
ErrCircuitOpen 表示熔断器处于 Open 状态,请求被快速失败。
Functions ¶
This section is empty.
Types ¶
type Breaker ¶
type Breaker struct {
// contains filtered or unexported fields
}
Breaker 是一个熔断器实例。并发安全。
type Option ¶
type Option func(*config)
Option 配置 Breaker。
func WithCooldown ¶
WithCooldown 设置 Open 状态冷却期(默认 5s),到期后进入 HalfOpen。
func WithHalfOpenMax ¶
WithHalfOpenMax 设置半开期最多放过的探测请求数(默认 3)。全部成功则关闭;任一失败重新 Open。
func WithMinRequests ¶
WithMinRequests 设置触发熔断的最少请求数(默认 10),窗口内不够则不判定。
func WithOnStateChange ¶
WithOnStateChange 注册状态变化回调(用于日志/埋点)。
Click to show internal directories.
Click to hide internal directories.