RAFT는 분산 시스템에서 공통된 문제인 합의(consensus)를 이루기 위한 알고리즘이며, Paxos 알고리즘의 대안으로 간소화된 과정과 이해하기 쉬운 구조로 설계되었습니다. 분산 시스템에서는 여러 노드로 구성된 클러스터 내에서 데이터 무결성을 유지시키기 위해 합의가 필요합니다. RAFT 알고리즘은 이러한 합의 도달 과정을 쉽고 안정적으로 처리합니다.
클러스터의 역할: 노드는 세 가지 역할 중 하나를 가질 수 있습니다: 팔로워(Follower), 캔디데이트(Candidate), 리더(Leader).
리더 선출: 리더 없이 동작할 수 없기 때문에 클러스터에는 반드시 리더가 있어야 합니다.
로그 복제: 리더는 모든 노드에 로그 항목(작업의 목록)을 복제하여 데이터를 동기화합니다. 리더는 AppendEntries라는 메시지를 사용하여 팔로워에게 로그를 전달하며, 팔로워는 응답 메시지로 로그에 데이터를 추가합니다. 리더는 분산 환경에서 데이터의 일관성을 유지하는 데 중요한 역할을 합니다.
Safety: 클러스터 안의 합의 과정과 리더 팔로워 데이터 동기화, 클라이언트 요청 처리 등 안전성을 보장하기 위해 RAFT는 특정 Safety 속성들을 유지해야 합니다.
RAFT 알고리즘은 분산 시스템에서 안정적이고, 경제적이며, 안전한 합의를 이루기 위한 알고리즘으로 동작합니다. 분산 시스템 내에서 오류 발생 시 클러스터 내의 다른 노드에서 일관성을 유지할 수 있는 구조를 제공해, 서비스 가용성을 유지하도록 도와줍니다. 이 알고리즘은 분산 시스템 속에서 합의 도달 및 데이터 동기화를 처리하기 위한 중요한 기술입니다.