pub struct ReadWriteRouter { /* private fields */ }Expand description
Read-write splitting router
Master handles write requests, slave cluster handles read requests.
Distributes read requests across multiple slaves according to LoadBalanceStrategy.
Implementations§
Source§impl ReadWriteRouter
impl ReadWriteRouter
pub fn new(master: &str, slaves: Vec<&str>) -> Self
Sourcepub fn slave(&self) -> &str
pub fn slave(&self) -> &str
Select a slave according to the current strategy
If slaves is empty, falls back to master. If health check is enabled, skips Unhealthy/Drained slaves.
Sourcepub fn set_strategy(&mut self, strategy: LoadBalanceStrategy)
pub fn set_strategy(&mut self, strategy: LoadBalanceStrategy)
Set the load balancing strategy
Sourcepub fn strategy(&self) -> LoadBalanceStrategy
pub fn strategy(&self) -> LoadBalanceStrategy
Get the current strategy
Sourcepub fn health_checker(&self) -> &HealthChecker
pub fn health_checker(&self) -> &HealthChecker
Health checker reference
Sourcepub fn latency_stats(&self) -> &LatencyStats
pub fn latency_stats(&self) -> &LatencyStats
Latency statistics reference
Sourcepub fn record_latency(&self, slave: &str, latency: Duration)
pub fn record_latency(&self, slave: &str, latency: Duration)
Record the latency of a slave request
Sourcepub fn measure<F, T>(&self, slave: &str, f: F) -> Twhere
F: FnOnce() -> T,
pub fn measure<F, T>(&self, slave: &str, f: F) -> Twhere
F: FnOnce() -> T,
Measure and record the duration of a slave call
Sourcepub fn set_read_rationing(&self, percent: u8)
pub fn set_read_rationing(&self, percent: u8)
Configure the read-write ratio
Sourcepub fn read_rationing_percent(&self) -> u8
pub fn read_rationing_percent(&self) -> u8
Get the current read-write ratio
Sourcepub fn acquire(&self, slave: &str) -> Result<(), String>
pub fn acquire(&self, slave: &str) -> Result<(), String>
Acquire a connection on a given slave (increment connection count, used for LeastConnections)
Sourcepub fn release(&self, slave: &str) -> Result<(), String>
pub fn release(&self, slave: &str) -> Result<(), String>
Release a connection on a given slave (decrement connection count)
Sourcepub fn connection_count(&self, slave: &str) -> Option<usize>
pub fn connection_count(&self, slave: &str) -> Option<usize>
Query the current connection count of a slave (for testing and monitoring)