Paxos 알고리즘에 대해

머리말
 

Paxos 알고리즘을 기반으로 메시지 전달내결함성의 높은 수준 입니다 일관된 알고리즘 이제 분산 합의 알고리즘의 문제를 해결하는 가장 효과적인로 인식되고 있습니다.

일반적인 분산 시스템에서의 상황은 항상 같은 기계 가동 중단 또는 네트워크 이상으로, 발생합니다.

Paxos 알고리즘 문제가 해결 될 수는 이상이, 분산 시스템에서 발생할 수있는 방법입니다 신속하고 정확하게 클러스터 내의 데이터의 가치에 동의하고, 예외 발생 여부보다 더 많은, 전체 시스템을 파괴하지 않도록 일관성.
 
Paxos 알고리즘 설명
 
노드 유형을

  • 제안자 (제안자) : 제안 값
  • 수신기 (채택) : 각 제안에 대한 투표
  • 사람 (학습자)를 알려 : 투표에 들어 있지만, 투표를하지
    여기에 그림 삽입 설명

Paxos 알고리즘의 기본 구조는 전술 그리게 많은 지지자 (제안자) 결과 학습자보고 수신기 (수락)에 특정 값을 수용하기 위해 수신기 (수락)에 제안서를 제출할 수있다.

 
구현 과정
 

하나 개의 제안은 소정의 두 개의 필드를 포함한다 : N, V, N은 일련 번호 (고유의), V는 제안 된 값은이다.

위상 나는 : 단계를 준비

각 제안자 모두 채택에 요청을 준비하고 전송됩니다.

여기에 그림 삽입 설명

A가 응답을 준비 보내는 요청이 수신되면 수락 준비 제안이 [N1, V1]에 포함되고, 요청을 준비하고 전에 수신하지 않았다면, 현재 수신 제안 [N1, V1], 및 더 보장되지 우리는 N1보다 제안 번호가 덜 받아 들일 것입니다.

举个例子,看下面这张图,Acceptor Y 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。

여기에 그림 삽입 설명

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。

那么有两种情况

  • 如果 n1 > n2,那么就丢弃该提议请求
  • 否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。

如下图所示

Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求

Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应(之前接受的提议),设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。

여기에 그림 삽입 설명

阶段二:Accept 阶段

当一个 Proposer 接收到超过一半 Acceptor 的 Prepare 响应时,就可以发送 Accept 请求。

也是两种情况:

  • Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept 请求。该 Accept 请求会被所有 Acceptor 丢弃,因为此时所有 Acceptor 都保证不接受序号小于 4 的提议。
  • Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号(这里指的是 Proposer B 收到的响应里最大 v 值)对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。

여기에 그림 삽입 설명

阶段三:Learn 阶段

Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。

여기에 그림 삽입 설명

 
2PC/3PC/Paxos 对比
 

  • 二阶段提交协议(2PC)解决了分布式事务的原子性问题,保证了分布式事务的多个参与者要么都执行成功,要么都执行失败。但是,存在诸如同步阻塞、无限期等待、网络分区等问题。
  • 三阶段提交协议(3PC)在 2PC 基础上,添加了 preCommit 过程,从而避免了 2PC 的无限期等待问题。
  • Paxos 알고리즘은 "절반 이상"아이디어는에 인기가 도입 대부분 . 한편 Paxos 알고리즘이 분산 노드 사이의 회전이 지원이 크게 분산 된 단일 지점의 출현을 방지 , 따라서 Paxos 알고리즘은 무한정 대기의 문제를 해결뿐만 아니라, 네트워크 파티션 문제를 해결하기 위해 , 지금이 최고입니다 분산 일관성 프로토콜 중 하나.

 
참고
 
"Paxos에서 사육사로 : 합의 원칙과 연습 분산"- 니켈 울트라

Paxos 바이 예

추천

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