ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Raft Consensus Algorithm
    BlockChain 2018. 11. 12. 18:00
    Consensus Algorithm이란
        분산 데이터에서 데이터를 동기화 시키기 위한 알고리즘

    Raft는 Consensus Algorithm중 하나로써 다음과 같은 상태를 가진다
    1. Follower State
    2. Candidate State
    3. Leader State

    1 처음 모든 노드는 follower State상태가 된다.



    Follow State 상태



    각 노드에 Election Timeout시간이 랜덤에 부여되고 이시간을 먼저 소진 한 노드가 Candidate State 상태가 되어 자기자신에게 투표후 다른 노드에게 투표해 달라는 신호를 요청한다.
    만약 일정 시간동안 응답이 안오면 다시 Election Timout시간을 보낸다.

    Candidate 노드가 투표를 요청하면 Follow노드들은 투표를 진행 하고, 투표 결과가 정족수에 부합하면 그 노드는 Leader State가된다.




    Leader 노드는 Client가 요청 한 데이터를 전달 받아 다른 노드에 전파 한후 모든 노드가 전달 받았다는 신호를 받으면 DB에 데이터를 저장하고, 저장했다는 신호를 Follow Node들에게 전달하고 이 신호를 전달받은 노드이 DB에 쓴다
    이때 heartBeat Timeout이 존재하는데 이시간이 만료 될 때까지 동기화가 진행 되지 않으면 리더를 다시 선출하는 작업을 하고, 동기화 되지 않은 데이터는 거절 된다.
    즉 클라이언트가 데이터 변경을 요청한 상태는 Uncommited 상태이며 DB에 쓰는 상태가 Commited상태가 된다

    예외상황

    만약 동시에 Candidate State가 일어나고 투표수가 같다면 Election timeout을 다시 실행 한다.









    만약에 네트워크가 분리 되고 다시 병합 된다면 정족수가 많은 노드의 데이터를 신뢰한다.



    'BlockChain' 카테고리의 다른 글

    pBFT  (0) 2018.11.13
    Geth Trie insert  (0) 2018.11.09

    댓글

Designed by Tistory.