pub struct LoadBalancer { /* private fields */ }Expand description
Load balancer for distributing requests across endpoints
Implementations§
Source§impl LoadBalancer
impl LoadBalancer
Sourcepub fn new(strategy: BalancingStrategy) -> Self
pub fn new(strategy: BalancingStrategy) -> Self
Create a new load balancer with the given strategy
Sourcepub fn add_endpoint(&self, endpoint: Endpoint)
pub fn add_endpoint(&self, endpoint: Endpoint)
Add an endpoint to the load balancer
Sourcepub fn remove_endpoint(&self, endpoint_id: &str) -> bool
pub fn remove_endpoint(&self, endpoint_id: &str) -> bool
Remove an endpoint from the load balancer
Sourcepub fn healthy_endpoints(&self) -> Vec<Arc<Endpoint>>
pub fn healthy_endpoints(&self) -> Vec<Arc<Endpoint>>
Get healthy endpoints
Sourcepub fn healthy_count(&self) -> usize
pub fn healthy_count(&self) -> usize
Get count of healthy endpoints
Sourcepub fn mark_unhealthy(&self, endpoint_index: usize)
pub fn mark_unhealthy(&self, endpoint_index: usize)
Mark an endpoint as unhealthy by index
Sourcepub fn mark_healthy(&self, endpoint_index: usize)
pub fn mark_healthy(&self, endpoint_index: usize)
Mark an endpoint as healthy by index
Sourcepub fn acquire(&self, endpoint_index: usize)
pub fn acquire(&self, endpoint_index: usize)
Acquire a connection to an endpoint (increments active count)
Sourcepub fn release(&self, endpoint_index: usize)
pub fn release(&self, endpoint_index: usize)
Release a connection to an endpoint (decrements active count)
Sourcepub fn select_endpoint(&self) -> NetResult<Arc<Endpoint>>
pub fn select_endpoint(&self) -> NetResult<Arc<Endpoint>>
Select an endpoint using the configured strategy
Sourcepub fn select_for_key(&self, key: &[u8]) -> NetResult<Arc<Endpoint>>
pub fn select_for_key(&self, key: &[u8]) -> NetResult<Arc<Endpoint>>
Select an endpoint for a specific key (consistent hashing)
Maps the given key deterministically to an endpoint. Adding or removing endpoints only remaps approximately 1/N of keys.
Sourcepub fn select_with_affinity(&self, session_id: &str) -> NetResult<Arc<Endpoint>>
pub fn select_with_affinity(&self, session_id: &str) -> NetResult<Arc<Endpoint>>
Select endpoint with affinity (sticky session)
Sourcepub fn clear_affinity(&self, session_id: &str)
pub fn clear_affinity(&self, session_id: &str)
Clear session affinity
Sourcepub fn stats(&self) -> BalancerStats
pub fn stats(&self) -> BalancerStats
Get load balancing statistics
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for LoadBalancer
impl !RefUnwindSafe for LoadBalancer
impl !UnwindSafe for LoadBalancer
impl Send for LoadBalancer
impl Sync for LoadBalancer
impl Unpin for LoadBalancer
impl UnsafeUnpin for LoadBalancer
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
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>
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>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.