数据引擎-Paxos分布式一致协议
来源:互联网 发布:flash制作软件for mac 编辑:程序博客网 时间:2024/05/18 02:31
分布式文件系统采用多分副本保证高可用性,举个例子:三副本,在更新的时候,确保二个副本持续化存储更新后,认为更新事物提交完成。那么如何确保多个副本的更新操作序列,在全部副本中依次顺序执行呢?
Paxos协议设计用来对数据副本的更新序列达成一致。Google的Chubby粗粒度锁服务是业界第一个对Paxos协议的完整实现,阿里云的盘古分布文件系统也采用Paxos协议,大名鼎鼎的Zookeeper采用Paxos的变种Zab协议。Paxos问题的描述:在系统内部有多个Acceptor负责存储和管理var变量;在系统外部有多个Proposer任意并发向系统提交不同的var取值,var取值一旦确定不可修改。
单Acceptor的互斥锁设计
单个Acceptor的设计,通过互斥访问权限来管理并发的Proposer运行。Proposer先向Acceptor申请访问权,没有得到访问权的返回Error,获取访问权的得到f的值,如果f的值空也就是还没赋值,就提交自己的值给Accept(var, V),如果发现f已经赋值了直接释放访问权Release()。这个设计的问题是如果Proposer在释放访问权前发生故障,容易导致死锁。
单Acceptor的强占锁设计
引入强占式的访问权限,Proposer申请Acceptor访问权的时候指定编号epoch。epoch的编号越大越新。Acceptor采用喜新厌旧的策略,一旦收到更大的epoch编号,就放弃小的访问权,不接受他们提交的值。同时用后者认同前者的策略来保证一致性,如果小的epoch没有更新值,大的epoch可以提交自己的值,但是小的epoch已经提交了值,大的epoch选择认同。这个设计存在单点Acceptor的故障问题。
多Acceptor的强占锁设计
引入多个Acceptor,采用少数服从多数的策略,当epoch的取值被半数以上acceptor接收,才认可更新值,否则不更改。Proposer的epoch获取半数以上的Acceptor的访问权和取值,用后者认同前者的策略,获得var取值,如果var是空,向epoch对于的所有Acceptor提交更新值,如果收到半数以上成功,返回OK否则返回Error。
- 数据引擎-Paxos分布式一致协议
- 分布式一致性协议paxos
- 图解分布式一致性协议Paxos
- 图解分布式一致性协议Paxos
- 图解分布式一致性协议Paxos
- 简化版分布式文件一致性协议---paxos
- 分布式事务与Paxos协议的关系
- 分布式多副本一致性协议paxos
- 微信分布式数据存储协议对比——Paxos和Quorum
- Paxos协议
- Paxos协议
- 分布式一致性协议学习笔记(一)--Paxos
- 分布式一致性协议Raft,以及难搞的Paxos
- 分布式事务 Paxos协议CAP原理BASE原理
- 分布式一致性算法Paxos,Zookeeper的ZAB协议,Raft算法
- paxos 分布式一致性算法
- Fast Paxos (分布式算法)
- 分布式系统Paxos算法
- 数据库设计过程遇到的零散点记录powerdesigner 数据库设计 表设计
- php中关于json的使用
- SQL中replace()函数的用法
- HDU 1811 Rank of Tetris (并查集+拓扑排序)
- Android动画(Android开发艺术探索笔记)
- 数据引擎-Paxos分布式一致协议
- 【工具学习】——Maven的安装与配置
- 第十一周项目1-验证算法(4)哈弗曼编码的算法验证
- 构建证券行情分析系统——基础篇
- IRQ和FIQ中断的区别
- 第八周 项目5-计数的模式匹配
- Android使用单元测试
- 第12周 项目4(2)- 输出简单路径
- iOS 官方文档 UIView