pub enum DMSCLoadBalancerStrategy {
RoundRobin,
WeightedRoundRobin,
LeastConnections,
Random,
IpHash,
LeastResponseTime,
ConsistentHash,
}Expand description
Load balancing strategies supported by DMSC.
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 DMSCLoadBalancerStrategy
impl Clone for DMSCLoadBalancerStrategy
Source§fn clone(&self) -> DMSCLoadBalancerStrategy
fn clone(&self) -> DMSCLoadBalancerStrategy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DMSCLoadBalancerStrategy
impl Debug for DMSCLoadBalancerStrategy
Source§impl<'de> Deserialize<'de> for DMSCLoadBalancerStrategy
impl<'de> Deserialize<'de> for DMSCLoadBalancerStrategy
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 DMSCLoadBalancerStrategy
impl<'py> IntoPyObject<'py> for DMSCLoadBalancerStrategy
Source§type Target = DMSCLoadBalancerStrategy
type Target = DMSCLoadBalancerStrategy
Source§type Output = Bound<'py, <DMSCLoadBalancerStrategy as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DMSCLoadBalancerStrategy 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 DMSCLoadBalancerStrategy
impl PyClass for DMSCLoadBalancerStrategy
Source§impl PyClassImpl for DMSCLoadBalancerStrategy
impl PyClassImpl for DMSCLoadBalancerStrategy
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 DMSC.\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 DMSC.\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<DMSCLoadBalancerStrategy>
type ThreadChecker = SendablePyClass<DMSCLoadBalancerStrategy>
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 DMSCLoadBalancerStrategy
impl PyTypeInfo for DMSCLoadBalancerStrategy
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 DMSCLoadBalancerStrategy
impl Serialize for DMSCLoadBalancerStrategy
impl ExtractPyClassWithClone for DMSCLoadBalancerStrategy
Auto Trait Implementations§
impl Freeze for DMSCLoadBalancerStrategy
impl RefUnwindSafe for DMSCLoadBalancerStrategy
impl Send for DMSCLoadBalancerStrategy
impl Sync for DMSCLoadBalancerStrategy
impl Unpin for DMSCLoadBalancerStrategy
impl UnwindSafe for DMSCLoadBalancerStrategy
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