zookeeper基础(Paxos算法)

1.简介

zookeeper原由雅虎研究院开发,后捐赠予apache基金会。zk是一个开源的分布式 应用程序协调服务器,它为分布式的系统提供了一致性的服务。如何保证一致性?其一致性是基于 Paxos 算法的 ZAB协议完成的。zk可以做什么?主要有:配置维护、域名服务、分布式同步、集群管理等。

zookeeper官网

1.1一致性

Q: zk如何保证分布式系统的一致性?
A:因zk有以下的特点

  • 顺序一致性:zk接受多个事务请求(写操作),它会严格按照接受的顺序应用到zk中。
  • 原子性:所有事务请求的结果在zk集群中每一台机器上的应用情况都是一致的。要么全部应用成功,要么全部失败。
  • 单一视图:无论client链接的是zk集群中的哪台机器,其看到的数据模型是一致的。
  • 可靠性:一旦zk成功应用了一个事务,那么该事务所引发的zk状态变更会一直保留下来,直到另一个事务将其修改。
  • 最终一致性:一旦一个事务被成功应用,zk可以保证在一个很短暂的时间后,client 最终能够从zk上读取到最新的数据状态。tips:不能保证实时读取到。

1.2Paxos算法

1.2.1算法简介

Paxos算法原由莱斯利-兰伯特 在1990年提出的一种基于消息传递的、具有高容错性的一致性算法。Google Chubby的作者Mike Burrows 说过,世界上只有一种一致性算法,那就是Paxos,所有其他的一致性算法都是Paxos算法的不完整版本。Paxos算法是公认的非常难懂的算法,并且工程实现上也具有很大难度。有名的Paxos工程化实现Google Chubby、ZAB、微信的 PhxPaxos 等。
Paxos算法用于解决什么问题?Paxos算法要解决分布式系统中如何就某个协议达成一致。

1.2.2算法描述

1.2.2.1三种角色

在Paxos算法中由三种角色,分别具有三种不同的行为。但很多时候,一个进程可能同时充当多种角色。

  • Proposer :提案者。
  • Acceptor:表决者。
  • Learner: 学习者、同步者。
1.2.2.2Paxos 算法的一致性
  • 每个提案者在提出提案时都会首先获得一个递增的、全局唯一的提案编号N,然后将该编号赋予其要提出的提案。(N有两种方式生成:全局性生成器、提案者自身维护N)
  • 每个表决者在accept 某提案后,会将该提案的编号 N 记录在本地,这样每个表决者中保存已经被accept 的提案中会存在一个编号最大的提案,其假设为MaxN。每个表决者仅会 accept 编号大于自己本地 MaxN 的提案。
  • 在众多提案中最终只能有一个提案被选定。
  • 一旦一个提案被选定,则其他学习者会主动同步(Learn)该提案到本地。
  • 没有提案被提出则不会有提案被选定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值