pub trait ClusterManager: Send {
// Required methods
fn add_sub(&self, address: String);
fn set_cluster_node_info(&mut self, node: ClusterNodeInfo);
fn get_node_id(&self) -> String;
fn get_nodes(&self) -> Vec<String>;
fn get_ha_infos(&self) -> Arc<Mutex<Vec<ClusterNodeInfo>>>;
fn get_subs(&self) -> Arc<RwLock<MultiMap<String, ClusterNodeInfo>>>;
fn join(&mut self);
fn leave(&self);
fn next(&self, len: usize) -> usize;
}