pub struct LoadBalancer {
pub service: Arc<ServiceConfig>,
pub states: Arc<Mutex<HashMap<String, LbState>>>,
}Expand description
简单的负载选择器,当前仅按权重随机,未来可扩展为按 usage / 失败次数等切换。
Fields§
§service: Arc<ServiceConfig>§states: Arc<Mutex<HashMap<String, LbState>>>Implementations§
Source§impl LoadBalancer
impl LoadBalancer
pub fn new( service: Arc<ServiceConfig>, states: Arc<Mutex<HashMap<String, LbState>>>, ) -> LoadBalancer
pub fn select_upstream_avoiding( &self, avoid: &HashSet<usize>, ) -> Option<SelectedUpstream>
pub fn select_upstream_avoiding_strict( &self, avoid: &HashSet<usize>, ) -> Option<SelectedUpstream>
pub fn penalize_with_backoff( &self, index: usize, cooldown_secs: u64, reason: &str, backoff: CooldownBackoff, )
pub fn record_result_with_backoff( &self, index: usize, success: bool, failure_threshold_cooldown_secs: u64, backoff: CooldownBackoff, )
Trait Implementations§
Source§impl Clone for LoadBalancer
impl Clone for LoadBalancer
Source§fn clone(&self) -> LoadBalancer
fn clone(&self) -> LoadBalancer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for LoadBalancer
impl RefUnwindSafe for LoadBalancer
impl Send for LoadBalancer
impl Sync for LoadBalancer
impl Unpin for LoadBalancer
impl UnwindSafe for LoadBalancer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more