위키득계정 ↗
기술

Paxos

Paxos기술
분류
분산 합의 알고리즘
주요 역할
제안자, 수락자와 학습자
핵심 안전성
서로 다른 값의 중복 선택 방지
기본 장애 모형
비비잔틴 비동기 모형
Paxos는 분산된 참여자들이 제안된 값에 합의하도록 하는 알고리즘 계열이다. 기본적인 단일 값 합의에서는 서로 다른 값이 동시에 최종 선택되지 않게 하며, 이를 반복해 명령열에 합의하는 시스템을 구성할 수 있다.

역할과 서버

제안자는 번호와 값을 가진 제안을 만들고 수락자는 규칙에 따라 응답한다. 학습자는 어떤 값이 선택되었는지 알아낸다. 이는 논리적인 역할 구분이므로 실제 서버 하나가 여러 역할을 맡을 수 있다. 제안을 한 것, 일부가 수락한 것과 최종 선택된 것은 같은 단계가 아니다.

두 단계의 취지

준비 단계에서는 더 낮은 번호의 제안에 관한 약속과 기존 수락 정보를 모은다. 필요한 응답을 받은 제안자는 그 정보에 따라 사용할 값을 정해 수락을 요청한다. 이전에 선택되었을 수 있는 값을 보존하는 것이 중요하므로 매번 자기 마음대로 새 값을 골라 과반수에 보내는 절차가 아니다.

과반수와 정보 보존

고정된 수락자 집합에서 임의의 두 과반수는 겹친다. 다음 제안이 이 겹치는 참여자를 통해 이전 수락 정보를 반영하게 하는 규칙이 안전성을 뒷받침한다. 재시작하는 참여자는 필요한 약속과 수락 정보를 보존해야 한다. 과반수라는 숫자만 맞추고 이 규칙을 빠뜨리면 같은 보장을 얻을 수 없다.

진행이 멈출 수 있는 조건

경쟁하는 제안자들이 계속 더 높은 번호를 내면 합의가 지연될 수 있다. 안전성이 있다는 사실은 임의의 통신 상황에서 즉시 종료한다는 뜻이 아니다. 안정적인 제안자와 적절한 통신 조건은 진행에 중요하다. 기본 알고리즘은 메시지가 손상되거나 참여자가 악의적으로 거짓말하는 장애를 가정하지 않는다.

관련 문서

Raft / 분산 시스템 / 알고리즘 / 네트워크 / 동시성 / 프로세스 / 데이터베이스 / 상태 기계