t Paxos를 보완한 형태로, 투표와 랜덤 타임아웃을 통한 리더 선출로 절차를 단순화 하는 것이 특징
이해하기 어려운 기존의 알고리즘과 달리 쉽게 이해하고 구현하기 위해 설계
Raft의 node는 Follower, Candidate, Leader라는 3가지 state
모든 노드는 처음에 Follower state를 가지고 시작
Follower가 Leader의 응답을 받지 못하면 Candidate 상태로 전환될 수
Candidate는 다른 노드들에게 투표를 요청하고 노드들은 투표 결과를 응답으로 전달
노드 중 가장 많은 표를 얻은 노드는 Leader가 될 수
이러한 프로세스를 Leader Election
Leader ElectionAppend EntriesLog ReplicationLeader가 선정되고 난 이후, 시스템의 모든 변화는 Leader를 통해 이루
클라이언트는 Leader에게 데이터를 전달하고, Leader는 데이터의 복제하여 Follower에게 전달합니다. 이 과정은 앞서 언급했던 Append Entries 메세지
활한 Leader Election을 위해 클러스터 노드의 개수는 홀수로 구성하는 것이 좋습다
Raft consensus algorithm
Consensus란 분산 시스템에서 노드 간의 상태를 공유하는 알고리즘을 말합니다. 가장 유명한 알고리즘으로 Paxos가 있고, Zookeeper에서 사용하는 Zab이 있습니다. Raft는 이해하기 어려운 기존의 알고리즘과 달리 쉽게 이해하고 구현하기 위해 설계되었습니다. (PS. 이 글은 블록체인에서의 Consensus 알고리즘을 말하는 것이 아닙니다) What is consensus problem...
https://swalloow.github.io/raft-consensus/


Seonglae Cho