第二篇:《从Paxos到zookeeper分布式一致性原理与实践》一致性协议与zookeeper

上一篇总结了下分布式所产生的问---------分布式系统中一致性问题。今天继续站在巨人的肩膀上虚心学习一下,怎样解决这些问题!

一、一致性协议:

计算机大佬们为了解决分布式一致性问题,经过了很长的事件探索和研究,其中三个比较出名的解决一致性协议算法为:二阶段提交算法、三阶段提交算法、Paxos(中文发音:帕克锁斯,英文记忆不是很强所有按照自己的发音加强记忆,有误之处请指出批评)。二阶段、三阶段算法,大佬们可以百度一大堆。

PAXOS算法:

      三阶段算法是在二阶段算法上的一个优化,主要优化的是性能方面,但是二阶段和三阶段两个算法都不能解决分布式分区容错(脑裂)的问题。所有paxos算法是一种基于消息传递具有高度容错特征的一致性算法。也就是说可以解决脑裂所造成的一致性问题。

 

小结:从二阶段到三阶段到Paxos算法,都是经过很多年才得出来的。可以看出任何的东西都是从简单到复杂,不是一出来就是复杂的。老子说过:天下难事必做于易,天下大事必做于细。从小事做起,化繁为简。

二、PAXOS算法与Zookeeper:

  • Zookeeper是什么:典型的分布式数据一致性解决方案。
  • Zookeeper解决问题:提供一个高性能、高可用,具有严格的顺序访问控制能力的分布式协调服务。
  • Zookeeper设计目标:
  1. 数据模型要简单
  2. 能集群
  3. 顺序访问
  4. 高性能
  • Zookeeper名字由来:雅虎内部很多项目都是使用动物的名字命名的,所有雅虎工程师也说这个项目取个动物的名字;于是一个科学家开玩笑说:在这样我们这里成动物园了。这话一出,大家都说就叫动物管理员吧。由此Zookeeper的名字就这样诞生了。
  • 为什么要用Zookeeper?
  1. 免费,开源
  2. 性能高、稳定
  3. 得到了广泛的应用。Hadoop,Hbase,Stormd等都用它用作分布式协调
  • Zookeeper内部协议采用类似于PAXOS算法,具体是什么呢?

三、Zookeeper与ZAB协议:

Zookeeper并没有采取Paxos算法,而是使用一种称为Zookeeper Atomic Broadcase(ZAB,Zookeeper原子消息广播协议)的协议作为数据一致性核心算法。该协议是Zookeeper专门设计的一种指出崩溃恢复的原子广播协议,注意这一点特别为Zookeeper设计的崩溃恢复的原子消息广播算法。

ZAB协议包括两种模式:一种是崩溃恢复,一种是消息广播

 

什么是崩溃恢复呢?

当整个服务框架在启动过程中,或者当leader服务器出现网络中断、崩溃退出与充气等异常情况是,ZAB协议就进入了恢复模式并选举新的leader服务器,新的leader服务于过半的机器完成数据同步之后,ZAB协议就会退出恢复模式。

也就是说:分布式中必定要有一个leader。其次就是leader挂了重新洗牌,新的leader一定会产生,使zookeeper退出恢复模式。

 

什么是消息广播呢?

Zookeeper服务器的三个角色Follow、Leader(只有一台被选举出来)、Observer。

ZAB是原子消息广播,铁定zookeeper里面是一直消息传送机制。当集群中已经有过半的Follow服务器完成和leader服务的状态同步,那么整个服务框架就进入消息广播模式。当另一个Follow加入时,就会跟leader进入恢复模式,只到同步完成,接着进入分布式的消息广播模式。

也就是说:分布式服务器(leader)没有出现异常,好的状态就是消息广播模式。

 

低姿态能力有限,只从简单的概念说起,也是自己的一些理解。

总结:我的理解:

  • ZAB协议是一个专门为Zookeeper设计的协议,按照ZAB协议,只要leader挂了,就会进入恢复模式,好了就进入消息广播模式。
  • PAXOS算法只要用于构建一个分布式的一致性状态机系统;ZAB协议主要用于构建一个高可用的分布式数据主备系统(zookeeper)。

(还是个菜鸟,有不对的地方可以关注微信指出,不同的意见可以一起讨论)。

二维码

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章