분산 일관성 프로토콜 : 2PC 및 3PC

머리말
 

분산 시스템 아키텍처 설계 과정에서 종종 트레이드 오프 데이터 가용성과 시스템의 일관성과 반복, 그래서 그는 일관성 프로토콜과 알고리즘의 일련의 생산. 특히 2 상 프로토콜 (2PC)의 3 단계 커밋 프로토콜 (3PC) 및 Paxos 알고리즘 커밋.

분산 시스템에서는, 각 컴퓨터 노드는 성공 또는 실패를 자신의 업무 작업을 수행하는 과정의 결과를 알고 명확하게 할 수 있지만, 그러나 다른 분산 노드의 운영 결과에 직접 가져올 수 없습니다. 작업이 분산의 여러 노드에 걸쳐 트랜잭션을 필요로하는 경우 따라서, 트랜잭션의 ACID 속성을 유지하기 위해, 모든 분산 노드의 통합 실행 논리에 "조정자 (코디네이터)의"라는 구성 요소를 도입 할 필요가있다, 이들은 분산 노드는 "참가자 (참가자)"가 예정되었다. 코디네이터를 예약하는 것은 참가자의 행동에 대한 책임이 그 참가자는 실제로 트랜잭션을 커밋 여부를 최종 결정을. 2 상으로부터 유래이 아이디어에 기반 프로토콜 (2PC)의 3 단계 커밋 프로토콜 (3PC)을 투입.
 
 

2 단계 커밋 프로토콜 (2PC)
 

쉽게 모든 참가자를 조정하는 분산 트랜잭션을 완료하기 위해 이번 계약을 통해 효과적으로 분산 데이터의 일관성을 보장하기 때문에 유통 계약의 숫자가 널리 두 번째 단계에서 사용되는 제출할 수 있습니다 커밋 또는 롤백 트랜잭션을 통합하기로 결정 타입 시스템.

이름에서 알 수 있듯이, 2PC 거래 제출 과정은 처리를 위해 두 단계로 나누어진다. 다음

 
단 하나 준비 단계

코디네이터는 트랜잭션의 성공 여부 각 참가자, 참가자 피드백 트랜잭션의 결과를 요청합니다.

여기에 그림 삽입 설명
 
여기에 그림 삽입 설명
단계 II : 커밋 단계
 
두 가지 가능성이 단계가 커밋

  • 트랜잭션이 각 참가자에 성공적으로 실행되면 참가자가 트랜잭션을 커밋되도록 트랜잭션 코디네이터는 알림을 보냅니다;
  • 그렇지 않으면, 한 고장이있는 한, 코디네이터는 트랜잭션을 롤백하는 모든 참가자에게 알림을 보냅니다.

준비 단계에서, 참가자들이 거래를 수행하지만, 아직 커밋되지, 주목해야한다. 만 커밋 단계에서 코디네이터에 의해 송신되는 통지를받은 후 만 커밋 또는 롤백.

2PC는 치료 후 각 트랜잭션의 핵심 제출하려고하는 데 사용됩니다, 따라서 제출할 수 알고리즘은 두 번째 단계의 강력한 일관성으로 볼 수 있습니다.
 
장점과 단점의 2PC 분석
 
장점

  • 간단한 원리
  • 달성을 촉진

결점

  • 同步阻塞:所有事务参与者在等待其它参与者响应的时候都处于同步阻塞状态,无法进行其它操作,极大的限制了系统的性能。
  • 单点问题:协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在阶段二发生故障,所有参与者会一直等待,无法完成其它操作。
  • 数据不一致:在阶段二,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。
  • 太过保守:任意一个节点失败就会导致整个事务失败,没有完善的容错机制。

 
二阶段提交协议(2PC)
 
是2PC的改进版,其将二阶段提交协议的阶段一分成两个过程,形成了由CanCommit、PreCommit 和 do Commit 三个阶段组成的事务处理协议。

阶段一:CanCommit
 
协调者向参与者发送一个包含事务内容的CanCommit请求,参与者回馈 Yes 或者 No

阶段二:PreCommit
 
根据阶段一的反馈结果,有两种操作可能

  • 如果阶段一所有参与者都反馈了 Yes ,那么协调者给参与者发送 preCommit 请求,执行预提交。如果参与者成功执行了事务操作,那么就反馈 Ack,之后等待最终命令 :提交(commit)还是终止(abort)。
  • 只要有一个 No 反馈,或者等待超时,那么就会中断事务。协调者向所有参与者发出终止(abort)请求。

阶段三:doCommit
 

该阶段将进行真正的提交,也是两种可能

  • 协调者收到了所有参与者的 Ack 确认,那就全部正式提交
  • 否则,全部回滚。

이 참고 한 번 입력 단계 III는 두 가지 결함이있을 수 있습니다.

  • 코디네이터 문제
  • 코디네이터 및 참가자 실패의 네트워크.

두 경우 모두, 결국 참가자 시간 doCommit 수신 또는 코디네이터의 요청을 중단하지의 결과로, 같은 특별한 상황을 위해, 참가자는 트랜잭션이 커밋 계속 기다린 후에 시간 초과됩니다.

 
3PC의 장점과 단점
 
장점 :

2PC에 비해 가장 큰 장점은 참가자의 차단 3PC의 범위를 축소하고, 단일 장애 지점 이후 합의에 도달하는 것입니다.

단점 :

3PC 장애물을 제거하면이 경우 새로운 문제, 즉, 참가자 preCommit 메시지를받은 후, 네트워크가 분할되는 경우,이 시간 코디네이터 노드와 참가자가 정상적인 네트워크 트래픽이 될 수 없습니다를 소개하면서 다음, 참가자는 여전히 데이터 불일치에 바인딩 된 트랜잭션에 제출됩니다.

추천

출처blog.csdn.net/u013568373/article/details/91489352