DC Aware Round robin
This is a more sophisticated version of Round robin policy.
It takes all nodes in the local datacenter and uses them one after another.
If no nodes from the local datacenter are available it will fall back to other nodes.
For example if there are two datacenters:
us_east
with nodes:A
,B
,C
us_west
with nodes:D
,E
,F
this policy when set to us_east
will only use A
, B
, C
, A
, B
, ...
Example
To use this policy in Session
:
#![allow(unused)] fn main() { extern crate scylla; use scylla::Session; use std::error::Error; async fn check_only_compiles() -> Result<(), Box<dyn Error>> { use scylla::{Session, SessionBuilder}; use scylla::transport::load_balancing::DcAwareRoundRobinPolicy; use std::sync::Arc; let local_dc_name: String = "us_east".to_string(); let session: Session = SessionBuilder::new() .known_node("127.0.0.1:9042") .load_balancing(Arc::new(DcAwareRoundRobinPolicy::new(local_dc_name))) .build() .await?; Ok(()) } }