forked from lavina/lavina
1
0
Fork 0
This commit is contained in:
Nikita Vilunov 2024-02-01 11:12:42 +01:00
parent 0e59ab1351
commit 1969901436
1 changed files with 15 additions and 6 deletions

View File

@ -29,6 +29,17 @@ use crate::terminator::Terminator;
- определение модели данных - определение модели данных
- определение протокола общения между нодами - определение протокола общения между нодами
- модель верификации поведения нод - модель верификации поведения нод
Лидер кластера
- выбирается из нод, которые уже в кластере
- не больше одного
- занимается аллокацией шардов на ноды
Лидер шарда
- выбирается лидером кластера из реплик шарда
- принимает команды на изменение сущностей в шарде
- посылает изменения репликам
*/ */
#[derive(Deserialize, Debug, Clone)] #[derive(Deserialize, Debug, Clone)]
@ -74,12 +85,10 @@ impl ClusterRegistry {
let listener = TcpListener::bind(config.listen_on).await?; let listener = TcpListener::bind(config.listen_on).await?;
let listener_task = start_connection_listener(listener, inner.clone()).await; let listener_task = start_connection_listener(listener, inner.clone()).await;
let mut client = EtcdClient::connect(&[config.etcd_address], None).await?; let mut client = EtcdClient::connect(&[config.etcd_address], None).await?;
dbg!(client.maintenance_client().status().await?); let campaign_response = client.election_client().campaign(b"kek", b"my name", 0).await?;
dbg!(client.leader(b"kek").await); dbg!(campaign_response);
dbg!(client.kv_client().get(b"kek", None).await?); let leader = client.leader("kek").await?;
let a = dbg!(client.election_client().campaign(b"kek", b"my name", 0).await?); dbg!(leader);
dbg!(client.leader(b"kek").await?);
dbg!(client.election_client().resign(Some(ResignOptions::new().with_leader(a.leader().unwrap().clone()))).await);
Ok(ClusterRegistry { Ok(ClusterRegistry {