실전 분산 락: 보장, 실패 시나리오 및 더 나은 대안 (3/4)
분산 시스템은 단순한 분산 잠금 외에도 다양한 조정 패턴을 사용합니다. 초기에는 분산 잠금이 리소스에 대한 독점적 접근을 보장했지만, 노드 장애를 처리하기 위한 리스(lease)와 오래된 작업을 방지하기 위한 펜싱 토큰(fencing token)으로 개선될 수 있습니다. 리더 선출은 작업의 독점적 소유에서 단일 노드가 클러스터의 나머지 부분을 조정하는 것으로 목표가 변경될 때 도입됩니다. 수명이 짧은 잠금과 달리 리더십은 수명이 긴 역할이므로 리더 선출은 작업 스케줄링 또는 클러스터 관리와 같은 작업에 적합합니다. 그러나 리더도 실패할 수 있으므로 가용성 부족을 감지하고 새 리더를 선출하는 메커니즘이 필요하며, 이는 여전히 리스 및 타임아웃과 같은 개념에 의존합니다. 리더 선출만으로는 노드 간의 합의를 보장하지 못하며, 이는 합의 메커니즘의 역할입니다. 합의는 여러 노드가 동일한 상태에 동의하도록 보장하며, 이는 구성 또는 클러스터 멤버십의 일관성을 유지하는 데 중요합니다. ZooKeeper 또는 etcd와 같은 최신 조정 플랫폼은 리스, 펜싱, 리더 선출 및 합의를 단일 인프라로 결합합니다. 각 조정 기본 요소가 해결하는 고유한 문제(소유권을 위한 잠금, 조정을 위한 리더 선출, 합의를 위한 합의)를 이해하는 것이 중요합니다. 분산 잠금은 기본적이지만 많은 시스템이 낙관적 동시성 또는 큐 기반 처리와 같은 대안적인 방법을 통해 정확성을 달성합니다. 각 조정 메커니즘은 특정 문제를 해결하여 안정적인 분산 시스템을 위한 계층화된 도구 키트를 구축합니다.