Skip to main content

CircuitBreaker

Trait CircuitBreaker 

Source
pub trait CircuitBreaker: Send + Sync {
    // Required methods
    fn state(&self) -> CircuitState;
    fn record_success(&mut self);
    fn record_failure(&mut self);
    fn can_execute(&mut self) -> bool;
    fn reset(&mut self) -> bool;
}
Expand description

断路器抽象 trait

P1-4:核心层定义的断路器接口,消除对 sz-orm-health 的反向依赖。

实现方需保证:

  • can_execute()Open 状态下根据 reset_timeout 自动迁移到 HalfOpen
  • record_success() 将状态重置为 Closed 并清空失败计数
  • record_failure() 累计失败次数,达阈值时迁移到 Open

Required Methods§

Source

fn state(&self) -> CircuitState

获取当前断路器状态

Source

fn record_success(&mut self)

记录一次成功请求

通常将状态重置为 Closed 并清空连续失败计数。

Source

fn record_failure(&mut self)

记录一次失败请求

累计连续失败次数,达到阈值时将状态迁移到 Open

Source

fn can_execute(&mut self) -> bool

判断当前是否允许请求通过

Open 状态下,若 reset_timeout 已到达,应迁移到 HalfOpen 并返回 true

Source

fn reset(&mut self) -> bool

手动重置断路器到 Closed 状态

record_success 的区别:reset 是运维主动强制重置, 无视当前状态(含 Open),常用于故障排除后手动恢复。

返回是否实际发生了状态变更。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§