zk 为了实现Paxos算法的快速收敛,添加Leader选举算法,只有Leader角色才可以发起提案。为了熟悉并使用zk,近来也具体看了zk(3.4.8)部分代码,主要逻辑(集群模式)分析如下: 1. zk启动,zk启动脚本是zkServer.sh 调用 (org.apache.zookeeper. ...
分类:
其他好文 时间:
2016-09-04 14:31:28
阅读次数:
153
引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法、Zab协议、通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解。由于内容比较多,一口气吃不成胖子,得慢慢来一步一个脚印,因此我对后期 ZooKeeper的学 ...
分类:
其他好文 时间:
2016-08-29 12:44:13
阅读次数:
224
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一个分门归类的 ...
分类:
其他好文 时间:
2016-08-26 22:55:14
阅读次数:
235
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。维护着一个树形层次结构,书中的节点被称为znode。znode可以用来存储数据,并且有一个与之相关联的ACL(权限),znode不能大于1M。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得 ...
分类:
其他好文 时间:
2016-08-05 00:49:21
阅读次数:
135
分布式一致性算法--Paxos Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。在工程实践意义上来说,就是可以通过Paxos实现多副本一致性,分布式锁,名字管理,序列号分 ...
分类:
编程语言 时间:
2016-07-01 01:09:56
阅读次数:
612
Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。在工程实践意义上来说,就是可以通过Paxos实现多副本一致性,分布式锁,名字管理,序列号分配等。比如,在一个分布式数据库系 ...
分类:
编程语言 时间:
2016-06-27 10:36:14
阅读次数:
187
一、什么是paxos算法 Paxos 算法是分布式一致性算法用来解决一个分布式系统如何就某个值(决议)达成一致的问题。 人们在理解paxos算法是会遇到一些困境,那么接下来,我们带着以下几个问题来学习paxos算法: 1、paxos到底在解决什么问题? 2、paxos到底如何在分布式存储系统中应用? ...
分类:
编程语言 时间:
2016-05-28 15:47:56
阅读次数:
244
为了解决这种分布式一致性问题,前人在性能和数据一致性的反反复复权衡过程中总结了许多典型的协议和算法。其中比较著名的有二阶提交协议(Two Phase Commitment Protocol)、三阶提交协议(Three Phase Commitment Protocol)和Paxos算法。 一、分布式 ...
分类:
其他好文 时间:
2016-05-28 15:40:58
阅读次数:
206
本文属于分布式系统学习笔记系列,上一篇笔记整理了paxos算法,本文属于原书第四章,梳理zookeeper的目标特性及ZAB协议。
1、介绍zookeeper
1.1ZooKeeper保证一致性特性
ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调通知、集群管理、master选举、分布式锁、分布式队列等功能。...
分类:
其他好文 时间:
2016-05-12 12:56:29
阅读次数:
302
paxos算法主要解决的问题就是一个分布式系统中如何就某一个值达成一致。 为了理解paxos算法,首先定义这样一个问题:有这样一个变量a,它属于不变变量(相当于java中的final变量),他的值一旦确定,便不能改变。现在有n个异步请求要求给a变量赋值,那如何保证最好大家看到值都是一致(相同)的呢? ...
分类:
其他好文 时间:
2016-05-07 14:54:49
阅读次数:
147