Paxos
1. Paxos
- 팩소스(Paxos)는 신뢰할 수 없는 프로세서들의 네트워크에서 합의 문제를 해결하기 위한 알고리즘입니다.
- 팩소스 알고리즘의 핵심은 분산 시스템에서 여러 문제가 발생하더라도 하나의 값을 도출할 수 있도록 합의하는 것입니다.
- 여기서 하나의 값은 시스템 내 모든 노드가 동의해야 하는 특정 데이터나 결정을 의미합니다.
- 팩소스 알고리즘은 여러 단계의 통신을 거쳐 각 노드가 하나의 값으로 일치할 수 있도록 합의하는 프로토콜을 사용하여 궁극적으로 분산 시스템이 안전적으로 동작할 수 있도록 합니다.
2. 구성요소
Paxos 프로토콜은 프로세서의 행동을 5가지 역할(클라이언트, 제안자, 수락자, 학습자, 리더)에 따라 정의합니다.
역할의 결합
일반적인 구현에서 단일 프로세서는 하나 이상의 역할을 동시에 수행할 수 있습니다. 이는 프로토콜의 정확성에 영향을 미치지 않으며, 일반적으로 메시지 지연이나 횟수를 최적화하기 위해 역할을 결합합니다.
예를 들어, 하나의 서버가 제안자와 수락자 역할을 동시에 수행할 수 있습니다.
2.1 Client (클라이언트)
- 클라이언트는 분산 시스템에 요청을 게시하고 응답을 기다리는 역할을 합니다.
- 분산 시스템 외부에서 요청을 시작하는 주체
- 요청이 처리될 때까지 대기
- 최종적으로 학습자로부터 응답을 받음
- 예시:
- 분산 파일 서버에서 파일 쓰기 요청
- 분산 데이터베이스에서 트랜잭션 요청
- 분산 락 시스템에서 락 획득 요청
2.2 Proposer (제안자)
- 제안자는 클라이언트를 대변하여 합의 프로세스를 주도하는 역할을 합니다.
- 클라이언트 대변: 클라이언트의 요청을 받아 수락자에게 전달
- 제안 생성: 합의해야 할 값을 제안하고 시스템 내 다른 노드에 전파
- 설득 시도: 수락자들이 제안을 수용하도록 설득
- 중재자 역할: 충돌이 발생할 경우 프로토콜을 진전시키기 위해 중재
제안자의 중요성
제안자는 단순히 제안만 하는 것이 아니라, 여러 제안자 간 충돌이 발생했을 때 이를 조정하고 프로토콜이 계속 진행되도록 하는 핵심 역할을 수행합니다.