Zookeeper与Paxos
来源:互联网 发布:株洲中车 知乎 编辑:程序博客网 时间:2024/06/09 13:47
Zookeeper
分布式一致性
1.顺序一致性:从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去。
2.原子性:整个集群要么都成功应用了某个事务,要么都没有应用。
3.单一视图:无论客户端连接的是啊个Zookeeper服务器,其看到的服务端数据模型都是一致的。
4.可靠性:一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直被保留,除非有另一个事务对其进行了变更。
5.实时性:Zookeeper保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。
ZAB协议
Zookeeper Atomic Broadcast,Zookeeper原子消息广播协议,是Zookeeper为其数据一致性的核心算法。ZAB包括两种基本的模式:崩溃恢复和消息广播。
(1)消息广播
ZAB协议的消息广播过程使用原子广播协议,类似于一个二阶段提交过程,针对客户端的事务请求,Leader服务器会为其生成对应的事务Proposal,并将其发送给集群中其余所有的机器,然后再分别收集各自的选票,最后进行事务提交。
ZAB协议可以在过半的Follower服务器已经反馈Ack之后就开始提交事务Proposal,而不需要等待集群中所有的Follower服务器都反馈响应,但是,在这种简单化的二队段提交模型下,无法处理Leader服务器崩溃退出而带来的数据不一致问题。因此ZAB采用了崩溃恢复模式来解决此问题。
(2)崩溃恢复
在ZAB协议中,为了保证程序的正确运行,整个恢复过程结束后需要选举出一个新的Leader服务器,因此需要一个高效且可靠的Leader选举算法。
ZAB与Paxos
相同点:
(1)都存在一个类似于Leader进程的角色,由其负责协议多个Follower进程运行。
(2)Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提议进行提交。
(3)在ZAB协议中,每个Proposal中都包含了一个epoch值,用来代表当前的Leader周期,在Paxos算法中,同样存在这样的一个标识,名字为Ballot。
不同点:
(1)Paxos算法中,新选举产生的主进程会进行两阶段的工作,第一阶段称为读阶段,新的主进程和其它进程通信来收集主进程提出的提议,并将它们提交。第二阶段称为写阶段,当前主进程开始提出自己的提议。
(2)ZAB协议是Paxos基础上添加了同步阶段,此时,新的Leader会确保存在过半的Follower已经提交了之前的Leader周期中的所有事务Proposal。
(3)ZAB协议主要用于构建一个高可用的分布式数据主备系统,而Paxos算法则用于构建一个分布式的一致性状机系统。
阅读全文
0 0
- Paxos与ZooKeeper
- Zookeeper与paxos算法
- Zookeeper与paxos算法
- Zookeeper与paxos算法
- Paxos算法与Zookeeper
- Zookeeper与paxos算法
- Zookeeper与paxos算法
- Zookeeper与paxos算法
- Paxos算法与Zookeeper
- Zookeeper与paxos算法
- 【分布式】Zookeeper与Paxos
- Zookeeper与Paxos
- Zookeeper与Paxos
- Zookeeper与Paxos
- Zookeeper与Paxos
- Paxos算法与Zookeeper分析
- Paxos算法与Zookeeper分析
- Paxos算法与Zookeeper分析
- 欢迎使用CSDN-markdown编辑器
- 编号的后6位是固定的6位数,新增一条自动+1,高位补0的实现
- **Ubuntu中interfaces文件设置失效的问题!**
- JVM参数
- 数据结构与算法 第一课
- Zookeeper与Paxos
- Mybatis实现原理/工作流程
- 简单实现日期计算器的基本功能
- 基于springboot ThreadPoolTaskScheduler类实现定时任务动态添加修改
- bzoj-3685 普通van Emde Boas树 权值线段树+快读!
- [leetcode] 第三周作业
- 纯css,div隐藏滚动条,保留鼠标滚动效果。
- 一秒搞定合并单元格编号
- XML中必须进行转义的字符