2012-05-08 3 views
9

Paxos 알고리즘이 분산 데이터베이스에서 사용되는 방법에 대한 실제 예를 누군가에게 줄 수 있습니까? 나는 알고리즘을 설명하는 Paxos에 관한 많은 논문을 읽었으나 실제 사례를 설명하지는 못한다.Paxos의 현실 세계 예

간단한 예는 계좌가 여러 세션 (예 : 출금기 예금, 직불 결제 등)을 통해 수정되는 은행 응용 프로그램 일 수 있습니다. Paxos는 어떤 작업이 먼저 발생하는지 결정하는 데 사용됩니까? 또한, Paxos 프로토콜의 여러 인스턴스가 의미하는 것은 무엇입니까? 이것이 언제 사용 되는가? 기본적으로 추상적 인 용어보다는 구체적인 예를 통해이 모든 것을 이해하려고 노력하고 있습니다.

답변

5

예를 들어, 우리는 3 개의 호스트로 구성된 MapReduce 시스템을 가지고 있습니다. 하나는 주인이고 다른 하나는 노예입니다. 마스터를 선택하는 절차는 Paxos 알고리즘을 사용합니다. Bigtable: A Distributed Storage System for Structured Data

+0

예에서 중요한 점은 Paxos가 마스터를 선출하는 데 사용되고 트랜잭션이 마스터에 의해 조정된다는 것입니다.이것은 또한 Google이 Chubby를 사용하여 마스터를 선출하고 모든 잠재적 마스터가 알아야하는 정보를 기록하는 방법이기도하지만 대용량 데이터 트랜잭션은 Paxos를 피합니다. – btilly

0

Clustrix 데이터베이스는 트랜잭션 관리자에 Paxos를 사용하는 분산 데이터베이스입니다 The Chubby Lock Service for Loosely-Coupled Distributed Systems, 구글 빅 테이블의 풍만 또한

는 Paxos를 사용합니다. Paxos는 분산 시스템에서 메시지를 조정하고 트랜잭션 원 자성을 유지 보수하기 위해 데이터베이스 내부에서 사용됩니다.

  • 코디네이터는 트랜잭션이
  • 참가자에 유래 노드가이
  • 독자가 거래를 대신하여 코드를 실행하지만, 수정하지 않은 노드입니다 거래를 대신하여 데이터베이스를 수정 한 노드입니다 모든 상태
  • 수락 자는 트랜잭션 상태를 기록하는 노드입니다. 트랜잭션을 수행 할 때 다음 단계를 촬영

커밋 :

  1. 코디네이터는 각 참가자에 PREPARE 메시지를 보냅니다.
  2. 참가자가 트랜잭션 상태를 잠급니다. PREPARED 메시지를 코디네이터에게 보냅니다.
  3. 코디네이터가 ACCEPT 메시지를 수락 자에게 보냅니다.
  4. 수락 자는 회원 ID, 트랜잭션, 커밋 ID 및 참가자를 기록합니다. 그들은 ACCEPTED 메시지를 다시 코디네이터에게 보냅니다.
  5. 코디네이터는 사용자에게 커밋이 성공했음을 알립니다.
  6. 코디네이터는 COMMIT 메시지를 각 참가자 및 리더에게 보냅니다.
  7. 참여자와 독자는 트랜잭션을 커밋하고 이에 따라 트랜잭션 상태를 업데이트합니다. 그들은 COMMITTED 메시지를 다시 코디네이터에게 보낸다.
  8. 코디네이터가 내부 상태를 제거하고 완료되었습니다.

이것은 응용 프로그램에 대해 모두 투명하며 데이터베이스 내부에서 구현됩니다. 따라서 은행 애플리케이션의 경우, 모든 애플리케이션 레벨에서 교착 상태 충돌에 대한 예외 처리를 수행해야합니다. 대규모 데이터베이스를 구현하는 또 다른 핵심은 동시성입니다.이 동시성은 일반적으로 MVCC (다중 버전 동시성 제어)를 통해 도움이됩니다.