分布式算法2 -- Paxos算法
来源:互联网 发布:java enum的创建 编辑:程序博客网 时间:2024/06/05 21:18
- 问题描述
当Client向分布式服务端发送一系列消息时,各个节点之间是相互通信的,但是由于网络等问题,各个服务器收到的消息顺序有可能不一致。
eg:
发送的指令顺序是A1、A2、A3。网络问题等,最后变成A2、A1、A3.那么这个时候就造成数据混乱,在分布式环境下很难像单机处理同步问题这么简单。Paxos就是解决这个难点。 原理
在分布式环境前加入一个FIFO的队列来接收所有的指令。然后所有的服务器节点全部按照这个队列里的序号进行执行,那么问题来了。如果这个队列down掉或者不堪重负怎么办?允许各个client互不影响的情况下,向服务器发送指令。
大家全部按照选举的方式达成一致, 选举一般是得票者最多的获胜。Paxos选举算法
1) 当尝试提交指令者被拒绝时(说明它的指令占有序列不是最高的),它会重新以一个更好的序列参与选举。通过各个提交者不断的参加选举,达到大家公认的一个序列。那么这个序列就是胜出者。
优点:允许各个角色在各个队列中的失败和重复执行,保证在错误发生时仍然得到一致的结果。场景
只要是多个过程要达成某种一直的都可以使用Paxos。
1) 一台机器中多个线程或者进程达成一致
2) 分布式文件系统或分布式数据,多个客户端并发读写数据
3)分布式存储中多个副本响应读写请求的一致性。eg:执法者在讨论大厅通过法律表达,并通过服务员传递纸条方式交流,每个执法者将通过的法律记录在自己账目上,服务员或者执行者有可能会离开大厅,也不会影响到正常进行的。
大厅-》分布式系统
执法者-》节点或进程
服务员传递纸条-》消息传递
法律-》保证一致性的值
执法者和服务员的进出-》节点或进程的加入或失败
执法者的账目-》节点中的持久化存储设置
原理:
每次投票的一群执法人(进程客户端)为法定人数,当法定人数中的所有执法人都咋成这个投票成功就通过。
投票编号:大小代表选举发起的先后顺序。Paxos 实现
最有名的就是google chubby,libpaxos,zookeeper。
可以查看书: Paxos在大型系统中常见的应用场景
naming service 是paxos最广泛的领域,可参考zookeeper。
下面以客户端调用服务器为场景
http://iunknown.iteye.com/blog/2246484
背景介绍
两个客户端先后调用
当Client1想执行A,clientB想执行B。顺序是A->B。没有外部因素。
- 分布式算法2 -- Paxos算法
- paxos 分布式一致性算法
- Fast Paxos (分布式算法)
- 分布式系统Paxos算法
- Fast Paxos 分布式算法
- Paxos 分布式算法
- 分布式系统Paxos算法
- 分布式一致性算法:paxos
- 分布式系统Paxos算法
- 分布式一致性算法--Paxos
- paxos分布式一致性算法
- 分布式一致性算法--Paxos
- 分布式Paxos一致性算法
- paxos 分布式一致性算法
- Paxos分布式一致性算法
- 分布式一致性算法--Paxos
- 分布式一致性算法--Paxos
- 分布式一致性算法--Paxos
- HDU2027---统计元音
- nodeJs之URL模块
- 基于CUDA的GPU优化方法
- revit二次开发——族——载入族
- Mybatis操作主体流程
- 分布式算法2 -- Paxos算法
- 【图】最短路径——Floyed算法和Dijkstra算法
- C# 在主窗口中打开一个带有计算器功能的子窗口,有三种实现方法
- Java运算符之比较运算符、逻辑运算符、三元运算符
- DRM
- 启动多个Activity 一次如何退出
- 基本的全选,反选,全不选.批删,批量添加.即点即改
- iOS + (Class)layerClass
- Java 理论与实践: 正确使用 Volatile 变量