pub struct CompositeRouter { /* private fields */ }Expand description
复合分片路由器
两级分片:先按 group_id 路由到 ShardGroup,再在组内按二级 key 做一致性哈希。
§适用场景
- 跨地域分片:先按地区(cn/us/eu),再按用户 ID 哈希
- 大租户独享:先按 tenant_id 分组,组内再按业务 key 哈希
Implementations§
Source§impl CompositeRouter
impl CompositeRouter
Sourcepub fn with_vnodes(self, vnodes: usize) -> Self
pub fn with_vnodes(self, vnodes: usize) -> Self
设置虚拟节点数(默认 100)
注意:必须在 add_group / with_default_group 之前调用,
否则会清除已构建的环缓存(强制下次 route 时重建)。
Sourcepub fn add_group(self, group: ShardGroup) -> Self
pub fn add_group(self, group: ShardGroup) -> Self
添加分片组
Sourcepub fn with_default_group(self, group: ShardGroup) -> Self
pub fn with_default_group(self, group: ShardGroup) -> Self
设置默认分片组
Sourcepub fn route(
&self,
group_id: &str,
secondary_key: &str,
) -> Result<String, EnhancedShardingError>
pub fn route( &self, group_id: &str, secondary_key: &str, ) -> Result<String, EnhancedShardingError>
路由:先按 group_id 选组,再按 secondary_key 在组内做一致性哈希
§Errors
当 group_id 无匹配且无默认组时返回 EnhancedShardingError::NoGroupMatch。
Sourcepub fn group_count(&self) -> usize
pub fn group_count(&self) -> usize
返回组数量
Sourcepub fn has_default(&self) -> bool
pub fn has_default(&self) -> bool
是否有默认组
Trait Implementations§
Source§impl Debug for CompositeRouter
impl Debug for CompositeRouter
Auto Trait Implementations§
impl Freeze for CompositeRouter
impl RefUnwindSafe for CompositeRouter
impl Send for CompositeRouter
impl Sync for CompositeRouter
impl Unpin for CompositeRouter
impl UnsafeUnpin for CompositeRouter
impl UnwindSafe for CompositeRouter
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