개인적으로 Raft 알고리즘에 대해 알아볼 일이 생겼다

Raft알고리즘은 Paxos 알고리즘의 기존의 잘못된 점을 고쳐 발전시킨 알고리즘이라고 한다. 그렇다면 과연 Paxos Raft 알고리즘이 속해 있는 합의 알고리즘이 무엇인지 알아보겠다.

합의 알고리즘은 분산 시스템의 결함 허용 방식의 하나이다.
이는 결함이 있는 분산 시스템이 합의된 하나의 제안을 공유할 있도록 설계되어 있다.

 

분산 컴퓨팅 시스템과 다수 Agent 시스템의 기본적인 문제점은 잘못된 프로세스가 존재하에 시스템의 안정성을 달성하는 것이다. 이것은 자주 프로세스들을 몇몇 데이터(컴퓨터 계산중 필요한) 수락하기 위해 필요하다.

예를 들어 합의 어플리케이션은 데이터베이스에 트랜잭션 커밋 여부, 인증된 리더(State machine replication Atomic broadcasts) 수락하기 위해 포함한다..


현실에서 어플리케이션들은 include clock synchronization, PageRank, opinion formation, power smart grids, state estimation, control of UAVs, load balancing등이 포함되어진다.

 

 

합의 문제는 다수의 프로세스를 하나의 데이터 값으로 묶는 약속이 필요하다.

몇몇 프로세스들은 실패 또는 믿을수 없는 다른 방향으로 수도 있고 그래서 합의 프로토콜들은 반드시 fault tolerant or resilient(탄력적이어야하고, 실패 결함이 있어야 한다).

프로세스들은 반드시 어디가에서 4개의 그들의 후보값을 넣고 다른 하나와 의사소통하고 하나의 합의 값으로 수락한다.

합의 문제는 멀티 클러스터 시스템을 제어하기위한 기본적인 문제이다. 

어쨌든 하나 또는 다수 실패 프로세스들은 만약 합의가 도달하지 못하거나 잘못 도달하도록  비뚤어지게 한다.

 

약속들은 합의문제를 해결이 되도록 그려진다. 제한된 숫자의 Faulty 프로세스들과 거래하도록 디자인 되어진다.

이러한 약속들은 반드시 개의 요구사항이 만족 되어야 한다.

예를 들어 하찮은 프로토콜은 모든 프로세스의 출력 바이너리 값을 가지게 될것이다.

1.    이것은 유용하지 않고 요구사항이 출력은 이와 같이 수정되어지면 어떠한 입력과도 반드시 의존하게된다.

이것은 출력값의 합의 프로토콜은 반드시 몇몇 프로세스의 입력값이다. 다른 요구사항은 프로세스는 결정 할지도 모른다.

 오류  발생하지 않는 경우 올바른 프로세스실행 불린다. 실패를 중단합의 프로토콜  내성  다음과 같은 속성을 만족해야한다
종료
모든 올바른 프로세스가 어떤 값을 결정한다.
효력
모든 프로세스가동일한  v  제안 하는 경우 , 모든 과정은 정확한 V  결정한다.
청렴
모든 올바른 과정은 대부분 하나의 값으로 결정 하고, 어떤  v  결정하면 , 다음에 v 일부 프로세스에 의해 제안 되어 있어야합니다.
협정
모든 정확한 프로세스  동일한 값에 동의해야한다 .
 

이러한 프로세스의 동의하는 과정을 합의라 한다.

Posted by MIDDLE
,