
Two-Phase Commit2PC
2PC(Two-Phase Commit)는 분산 시스템에서 원자적 트랜잭션을 보장하는 프로토콜이다. 코디네이터(Coordinator)가 모든 참여자(Participant)의 준비 상태를 확인한 후 최종 커밋/롤백을 결정한다.
프로토콜 단계
로그 기반 내구성
각 참여자는 Phase 1에서 준비 상태를 디스크에 기록한다. 장애 후 재시작 시 코디네이터에게 결과를 요청해 완료할 수 있다.
2PC의 실패 시나리오
3PC (Three-Phase Commit)
2PC의 블로킹 문제를 해결하기 위한 확장. 타임아웃과 추가 단계로 비블로킹을 달성하지만 더 복잡하다.
실제 사용
- •XA 트랜잭션: JDBC, JTA에서 지원
- •데이터베이스 링크: Oracle, PostgreSQL dblink
- •대부분의 현대 마이크로서비스는 SAGA 패턴을 대신 사용