Rozproszony konsensus

Paxos

Mówi się, że rozumie go tylko kilka osób na świecie.

Raft

Replication and Fault Tolerant - nastawiony na czytelność i pragmatyzm.

Dekompozycja Raft

  1. wybór lidera (leader election) - wybór jednego lidera i późniejsze reelekcje

  2. replikacja logu (log replication) - lider aktualizuje log i replikuje go na pozostałe instancje

  3. bezpieczeństwo (safety) - raz zapisany indeks nie może być zmieniony na innej instancji

Role w RAFT

każdy z serwerów w klastrze RAFT może mieć w danym momencie jedną z trzech ról:

  1. lider (leader)

  2. stronnik (follower)

  3. kandydat (candidate)

Kadencje (terms)

  • czas działania jest podzielony na kadencje

  • każda kadencja może mieć tylko jednego lidera

  • niektóre kadencje nie mają liderów (nieudane wybory)

  • każda instancja utrzymuje aktualną kadencję

    • wymieniana w każdej komendzie

    • dostajemy nowszą kadencję - wracamy do statusu follower

    • dostajemy starszą kadencję - zwracamy błąd

Zdalnie wywoływane procedury (RPC)

Podstawowym budulcem RAFT są wywoływane przez lidera zdalne procedury.

Mamy poszczególne klastry z czasem odpowiedzi. Jeśli czas odpowiedzi jest niski, to klaster prosi o głos na samego siebie. Jeśli klastry nie zdążyły odpowiedzieć, a dostały prośbę o głos, głosują na lidera.

Replikacja logu

Wady RAFT

  • wymaga działania większości node'ów

  • cały ruch przechodzi przez jednego lidera

  • brak wsparcia dla problemu bizantyjskich generałów

Last updated