pub struct ConsistentHashRouter { /* private fields */ }Expand description
Routes stream partitions to nodes using consistent hashing.
Uses a hash ring with configurable virtual nodes per physical node to achieve even load distribution and minimal partition movement on topology changes.
Implementations§
Source§impl ConsistentHashRouter
impl ConsistentHashRouter
Sourcepub fn new(virtual_nodes_per_node: usize) -> Self
pub fn new(virtual_nodes_per_node: usize) -> Self
Creates a new router with the specified number of virtual nodes per physical node.
Sourcepub fn add_node(&mut self, node: StreamNode)
pub fn add_node(&mut self, node: StreamNode)
Adds a node to the hash ring.
Sourcepub fn remove_node(&mut self, node_id: &str) -> DistributedResult<()>
pub fn remove_node(&mut self, node_id: &str) -> DistributedResult<()>
Removes a node from the hash ring.
Sourcepub fn route(&self, partition_key: &str) -> DistributedResult<&StreamNode>
pub fn route(&self, partition_key: &str) -> DistributedResult<&StreamNode>
Routes a partition key to the responsible node.
Sourcepub fn nodes(&self) -> impl Iterator<Item = &StreamNode>
pub fn nodes(&self) -> impl Iterator<Item = &StreamNode>
Returns an iterator over all known physical nodes.
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Returns the number of physical nodes.
Auto Trait Implementations§
impl Freeze for ConsistentHashRouter
impl RefUnwindSafe for ConsistentHashRouter
impl Send for ConsistentHashRouter
impl Sync for ConsistentHashRouter
impl Unpin for ConsistentHashRouter
impl UnsafeUnpin for ConsistentHashRouter
impl UnwindSafe for ConsistentHashRouter
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> 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.