博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一致性协议算法-------------Paxos算法
阅读量:7092 次
发布时间:2019-06-28

本文共 1185 字,大约阅读时间需要 3 分钟。

  hot3.png

‍‍‍‍

基本算法(basic paxos)

‍‍‍算法(决议的提出与批准)主要分为两个阶段:

1. prepare阶段: 

(1). Proposer希望提出方案V1,首先发出prepare请求至大多数AcceptorPrepare请求内容为序列号<SN1>;

(2). Acceptor接收到prepare请求<SN1>时,检查自身上次回复过的prepare请求<SN2>

    a). 如果SN2>SN1,则忽略此请求,直接结束本次批准过程;

    b). 否则检查上次批准的accept请求<SNxVx>,并且回复<SNxVx>;如果之前没有进行过批准,则简单回复<OK>;

 

2. accept批准阶段: 

(2a). 经过一段时间,收到一些Acceptor回复,回复可分为以下几种:

        a). 回复数量满足多数派,并且所有的回复都是<OK>,则Proposer发出accept请求,请求内容为议案<SN1V1>;

        b). 回复数量满足多数派,但有的回复为:<SN2V2><SN3V3>...,,则Porposer找到所有回复中序列号最大的(SNx)值(Vx,假设为  <SNxVx>,则发出accept请求,请求内容为议案<SN1Vx>;

        c). 回复数量不满足多数派,Proposer尝试增加序列号为SN1+,转1继续执行;

 

  (2b). 经过一段时间,Proposer收到一些Acceptor回复,回复可分为以下几种:

        a). 回复数量满足多数派,则确认V1被接受;

        b). 回复数量不满足多数派,V1未被接受,Proposer增加序列号为SN1+,转1继续执行;

(3). 在不违背自己向其他Proposer的承诺的前提下,Acceptor收到accept 请求后即接受并回复这个请求。

 

Paxos算法的用处

      1.领导选举,当主节点宕机,从节点服务器群组发起领导选举

     2.多节点数据日志同步,数据副本一致性multi-paxos)。

          多个Proposer(Client)发起数据请求,把所有请求交由Proposer Leader来向Acceptor集群发送日志同步请求。log-replication

       详情: ,(基于multi-paxos的复制协议)

    3.paxos用来在多个process之间对同一个值达成一致

 

‍‍‍‍

在paxos算法中存在Client、Proposer、Proposer Leaer、Acceptor、Learn五种角色,可精简为三种主要角色:proposer、acceptor、learn。角色只是逻辑上存在的,在实际实现中,节点可以身兼多职。

Paxos各角色职责

 

分布式系统Paxos算法

 

libpaxos 库

(微信)

 

微信PaxosStore:深入浅出Paxos算法协议

 

转载于:https://my.oschina.net/manmao/blog/620558

你可能感兴趣的文章
django模板详解(二)
查看>>
jQuery实现还能输入N字符
查看>>
HTTPS部署笔记
查看>>
ZeroMQ(java)之Router/Dealer模式
查看>>
TCP/IP协议碎碎念
查看>>
Rss订阅
查看>>
Mac - gdb配置
查看>>
ART世界探险(16) - 快速编译器下的方法编译
查看>>
ubuntu安装经典的Gnome桌面
查看>>
Nginx unknown directive "xxxx" 错误解决办法
查看>>
Windows下查看文件MD5值
查看>>
CentOS 6.3下Samba服务器的安装与配置
查看>>
JAVA网络编程:一站式学习Wireshark系列教程
查看>>
Spring 异步消息
查看>>
杭电2017
查看>>
ElasticSearch5.* 删除index/type 数据restful API调用
查看>>
建立共享存储实验记录
查看>>
笨方法学python VII
查看>>
myeclipse控制台不显示tomcat信息
查看>>
cent os 下载地址
查看>>