熔断器
熔断器用于防止网络或者服务因串联的其他服务失败而失败,你可以查看该文章:Pattern: Circuit Breaker。
服务客户端通过代理请求远程服务应该用类似电子熔断器一样的方式。当一定数量的连续失败超过阈值的时候,熔断器触发,之后一段时间内所有意图请求该远程服务的请求会立即失败。超过超时时间之后熔断器会允许有限的测试请求通过。如果那些请求成功,熔断器恢复默认操作。否则,如果仍有失败超时时间会重新开始计量。
rpcx定义了一个Breaker
接口,你可以实现你自己的熔断器。
type Breaker interface {
Call(func() error, time.Duration) error
}
rpcx实现了一个简单的ConsecCircuitBreaker,这是一个有失败阈值的滑动窗口熔断器。
你可以使用Option.Breaker
设置你自己的熔断器实例。