pub struct LeastLoaded {
pub metric: LoadMetric,
}Expand description
The least loaded candidate, load measured per unit of weight.
A candidate’s load (address_count under a count metric, the
representative’s peak-EWMA connection time under
LoadMetric::ConnectionTime) is divided by its backend_weight: a
backend of weight 200 carrying 10 connections is as loaded as one of
weight 100 carrying 5. The weight is clamped to at least 1, as for
every weighted policy but Random, so a 0 or negative weight counts as
1, the smallest share, and never excludes a backend.
The first minimum in view order wins a tie. With equal weights (the
default: an unset weight reads as DEFAULT_WEIGHT) the comparison is the
one on raw loads, so the selection is the one made before the weight was
read.
Fields§
§metric: LoadMetricTrait Implementations§
Source§impl Debug for LeastLoaded
impl Debug for LeastLoaded
Source§impl LoadBalancingAlgorithm for LeastLoaded
impl LoadBalancingAlgorithm for LeastLoaded
Source§fn next_available_backend(
&mut self,
_key: Option<u64>,
backends: Candidates<'_>,
) -> Option<Rc<RefCell<Backend>>>
fn next_available_backend( &mut self, _key: Option<u64>, backends: Candidates<'_>, ) -> Option<Rc<RefCell<Backend>>>
Select the next backend among
candidates. Read moreSource§fn rebuild(&mut self, _backends: &[Rc<RefCell<Backend>>])
fn rebuild(&mut self, _backends: &[Rc<RefCell<Backend>>])
Called by the control plane when the live backend set for a cluster
changes, so table-based policies (Maglev) can recompute their lookup
table off the datapath. The default is a no-op;
Maglev rebuilds
its table, and RoundRobin (with the round-robin fallback of
Rendezvous and Maglev) resets its running weights.Auto Trait Implementations§
impl Freeze for LeastLoaded
impl RefUnwindSafe for LeastLoaded
impl Send for LeastLoaded
impl Sync for LeastLoaded
impl Unpin for LeastLoaded
impl UnsafeUnpin for LeastLoaded
impl UnwindSafe for LeastLoaded
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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