pub enum RiLoadBalancerStrategy {
RoundRobin,
WeightedRoundRobin,
LeastConnections,
Random,
IpHash,
LeastResponseTime,
ConsistentHash,
}Expand description
Load balancing strategies supported by Ri.
These strategies determine how the load balancer selects which backend server to route incoming requests to.
Variants§
RoundRobin
Round Robin: Sequentially selects the next available server in rotation.
Simple and fair distribution, ideal for servers with similar capabilities.
WeightedRoundRobin
Weighted Round Robin: Selects servers based on assigned weights.
Allows more powerful servers to handle a larger share of traffic.
LeastConnections
Least Connections: Selects the server with the fewest active connections.
Ideal for handling varying request durations, ensuring balanced load.
Random
Random: Randomly selects an available server.
Simple implementation with good distribution characteristics.
IpHash
IP Hash: Uses client IP address to consistently route to the same server.
Maintains session persistence by mapping clients to specific servers.
LeastResponseTime
Least Response Time: Selects the server with the lowest average response time.
Ideal for optimizing user experience by directing traffic to the fastest servers.
ConsistentHash
Consistent Hash: Uses a consistent hashing algorithm for server selection.
Provides stable mapping between requests and servers, minimizing disruption when servers are added or removed.
Trait Implementations§
Source§impl Clone for RiLoadBalancerStrategy
impl Clone for RiLoadBalancerStrategy
Source§fn clone(&self) -> RiLoadBalancerStrategy
fn clone(&self) -> RiLoadBalancerStrategy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RiLoadBalancerStrategy
impl Debug for RiLoadBalancerStrategy
Source§impl<'de> Deserialize<'de> for RiLoadBalancerStrategy
impl<'de> Deserialize<'de> for RiLoadBalancerStrategy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'py> IntoPyObject<'py> for RiLoadBalancerStrategy
impl<'py> IntoPyObject<'py> for RiLoadBalancerStrategy
Source§type Target = RiLoadBalancerStrategy
type Target = RiLoadBalancerStrategy
Source§type Output = Bound<'py, <RiLoadBalancerStrategy as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <RiLoadBalancerStrategy as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for RiLoadBalancerStrategy
impl PyClass for RiLoadBalancerStrategy
Source§impl PyClassImpl for RiLoadBalancerStrategy
impl PyClassImpl for RiLoadBalancerStrategy
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = c"Load balancing strategies supported by Ri.\n\nThese strategies determine how the load balancer selects which backend server\nto route incoming requests to.\x00"
const RAW_DOC: &'static CStr = c"Load balancing strategies supported by Ri.\n\nThese strategies determine how the load balancer selects which backend server\nto route incoming requests to.\x00"
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<RiLoadBalancerStrategy>
type ThreadChecker = SendablePyClass<RiLoadBalancerStrategy>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyTypeInfo for RiLoadBalancerStrategy
impl PyTypeInfo for RiLoadBalancerStrategy
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.Source§impl Serialize for RiLoadBalancerStrategy
impl Serialize for RiLoadBalancerStrategy
impl ExtractPyClassWithClone for RiLoadBalancerStrategy
Auto Trait Implementations§
impl Freeze for RiLoadBalancerStrategy
impl RefUnwindSafe for RiLoadBalancerStrategy
impl Send for RiLoadBalancerStrategy
impl Sync for RiLoadBalancerStrategy
impl Unpin for RiLoadBalancerStrategy
impl UnsafeUnpin for RiLoadBalancerStrategy
impl UnwindSafe for RiLoadBalancerStrategy
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. 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> 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::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more