본문 바로가기

Articles/Raft

The Raft Consensus Algorithm(1) - 공식 사이트 번역

# Raft 란 무엇인가?

(뗏목)

Raft는 이해하기 쉬운 것을 목표로 만든 합의(consensus) 알고리즘이다. Raft는 Paxos(https://en.wikipedia.org/wiki/Paxos_(computer_science)) 와 같은 성능과 내결함성(Fault-tolerance)을 가진다. Paxos 와의 차이점은, Raft는 과제를 작고 독립적인 문제들로 나눠 실제 시스템에 필요한 기능을 만든다는 것이다. 우리는 더 많은 개발자들이 Raft를 이용하여 현재의 합의 기반(Consensus-based) 시스템보다 훨씬 좋은 것들을 개발하였으면 한다.

 

 

# 잠시만 , 합의(Consensus) 가 뭔데?

 

합의(Consensus)는 내결함성이 필요한 분산 시스템에서의 중요한 과제이다. 합의는 여러 서버들이 어떠한 값에 대해 동의하는 것과 관련이 있다. 어떠한 값에 대한 결론에 도달하면, 그것이 곧 결과가 된다. 현재 나와있는 합의 알고리즘은 과반수 이상의 서버가 살아있어야 작동한다, 예를 들어 총 5개의 서버가 있으면, 2개 이상의 서버가 죽으면 다음 값 변화를 만들지 않는다 ( 물론 부정확한 값을 내놓지는 않는다.)

 

합의는 대체적으로 내결함성 시스템을 만드는데 사용하는 '복제된 상태 기계'( https://en.wikipedia.org/wiki/State_machine_replication )에서 발생한다. 각각의 서버는 상태 기계(State Machine, 오토마타 이론의 그 state machine 맞다.)와 기록을 가지고 있다. 상태 기계는 해시 테이블 같이 우리가 내결함성을 가지게 만들고 싶은 기능이다. (합의를 통해) 서버의 과반 이하가 죽더라도, 사용자는 하나의 신뢰성 있는 상태 기계에 접근하는 것처럼 보인다. 각각의 상태 기계는 로그에서 명령을 입력받는다.  해시 테이블 예제에서, 로그는 (set x to 3) 같은 명령어다. 합의 알고리즘은 각각의 서버가 로그의 명령어들에 동의하는데 쓰인다. 합의 알고리즘은 어떤 상태 기계가 n번째 명령을 set x to 3을 적용했을 때, 다른 상태 기계는 (set x to 3) 이 아닌 다른 n번째 명령어를 실행하지 않도록 해야 한다. 결과적으로, 각각의 상태 기계는 다 같은 순서로 명령어를 수행하며 그러므로 같은 결과를 만들고 같은 상태를 가지게 된다.

 

# Raft 시각화

 

원본 사이트에서 보자.

 

 

 

 

 

원본 : https://raft.github.io/

 

Raft Consensus Algorithm

What is Raft? Raft is a consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance. The difference is that it's decomposed into relatively independent subproblems, and it cleanly addresses all

raft.github.io

참고 1 : http://thesecretlivesofdata.com/raft/

 

Raft

 

thesecretlivesofdata.com

    참고 1 : MIT License