读<分布式一致性原理>初识zookeeper
zookeeper是什么
zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如:数据发布/订阅,负载均衡,命名服务,分布式协调/通知
,集群管理,Master选举,分布式锁和分布式队列等功能。zookeeper可以保证如下分布式一致性特性。
顺序一致性
从同一个客户端发起的事务请求,最终将会严格的按照发起顺序被应用到zookeeper中去。
原子性
所有的事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群所有机器都成功应用了某一个事务,要么
都没有应用。一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。
单一视图
无论客户端连接的是哪个zookeeper服务器,其只看到的服务端数据模型都是一致的。
可靠性
一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事物所引起的服务端状态变更将会被一致保留下来,
除非有另一个事务对其进行了更改。
实时性
一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。但是这里需要注意的是
zookeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。
zookeeper的设计目标
1.简单的数据结构模型
zookeeper通过一个共享的树形结构名字空间使得分布式能够进行相互协调。树形结构的名字空间是由一些列znode的的数据节点组成的。
zookeeper将全部数据存储在内存中,用来提高服务器吞吐量,降低延迟。
2.可以构建集群
zookeeper的集群一般由3-5台机器就可以构成一个集群。组成zookeeper集群的每台机器都会在内存中维护当前的服务器
状态,并且每台机器之间都互相保持着通信。只要集群中存在超过一半的机器能够正常工作,那么整个集群就能正常对外服务。
zookeeper的客户端程序会选择和集群中任一机器来创建一个TCP连接,而一旦客户端和某太zookeeper服务器之间连接中断后,
客户端户自动连接集群中的其他机器。
3.顺序访问
对于来自客户端的每个更新请求,zookeeper都会分配一个全局唯一的递增编号,这个编号反映了所有事物操作的先后顺序,应用程序
可以使用zookeeper的这个特性来实现更高层次的同步原语。
4.高性能
由于zookeeper将全量数据存储在内存中,并直接服务于客户端的所有非事务请求,因此它尤其使用于以读操作为主的应用场景。
zookeeper的基本概念
1.集群角色
通常在分布式系统中,构成集群的每台机器都有自己的角色,最典型的集群模式就是Master/Slave(主备模式)。在这种模式中
我们把所有能够处理写操作的机器称为Master机器,把所有通过异步复制方式获取最新数据,并且提供读服务的机器称为Slave机器
而在zookeeper中,这些概念被颠覆了。它没有沿用传统的Master/slave概念,而是引入了Leader,Follwer,和Observer三种角色。
zookeeper集群中的所有机器通过一个Leader选举过程来选定一个被称为Leader的机器,Leader服务器为客户端提供读和写服务。
Follower和Observer都能够提供读服务,唯一的区别是,Observer机器不参与Leader选取过程,也不参与写操作的“过半写成功”策略。
因此Observer可以在不影响写性能的情况下提升集群的读性能。
2.会话(session)
Session是指客户端会话,在讲解会话之前,我们首先了解一下客户端连接。
在zookeeper中,一个客户端连接是指客户端和服务器之间的一个TCP长连接。zookeeper对外服务的端口默认是2181,客户端启动的
时候会先与一个服务器建立连接。从一次建立连接开始,客户端的生命周期也就开始了,通过这个连接,客户端能够通过心跳检测与服务器保持有效
会话,也能够向zookeeper发送请求和接收响应。同事还能够通过该连接来接受来自服务器的Watch事件通知。session的sessionout值来设置一个与服务器会话的
超时时间。由于网路原因或服务器压力太大或是客户端主动断开连接等原因导致服务端和客户端连接断开,只要在sessionTimeOut规定时间内,客户端能与服务器任意
一台机器建立连接,那么之前建立的会话仍然有效。
3.数据节点(znode)
在谈到分布式的时候,我们通常说的“节点”是指组成集群的每一台机器。在zookeeper中,“节点”分为两类,第一类是指构成集群的机器,
我们称之为机器节点。第二类是数据模型中的数据单元,我们称之为数据节点---znode。zookeeper将所有的数据存储在内存中。
数据模型是一颗树,由"/"进行分割路径。每个znode都会保存自己的数据内容,同时还会保存一些属性信息。
在zookeeper中,zone可以分为持久节点和临时节点。持久节点是指一个znode被创建了除非主动进行移除操作,否则这个znode
将一直处在zookeeper上。而临时节点就不一样了,它 的生命周期和会话绑定,一旦客户端会话失效,那么由这个客户端创建的所有
临时节点都将被移除。zookeeper还允许为每个节点添加一个特殊属性:SEQUENTIAl。一旦节点被标上这个属性,那么zookeeper在创建这个节点时会自动在节点后面
加一个整形数字。这个数字是由父节点维护的递增数字。
4.版本
zookeeper的每个znode都会存储数据,对于每个znode ,zookeeper都会维护一个stat的数据结构。Stat中记录着这个znode的三个数据版本
分别是Version(当前的数据版本)Cversion(当前znode子节点版本)和aversion(当前znode的ACL版本)
5.Watcher
zookeeper允许在指定节点注册一些watcher,并且在一些特定事件发生的时候,zookeeper会将事件通知发送到感兴趣的客户端上去。
6.ACL
zookeeper采用ACL策略进行权限控制。zookeeper定义了5种权限
读<分布式一致性原理>初识zookeeper的更多相关文章
- 读《分布式一致性原理》zookeeper运维
1.配置详解 1.1基本配置 基本参数包括clientPort,dataDir和tickTime 1.2高级配置 下面我们再来看看zookeeper中一些高级配置参数的配置实用 2.四字命令 我们曾经 ...
- Zookeeper——分布式一致性协议及Zookeeper Leader选举原理
文章目录 一.引言 二.从ACID到CAP/BASE 三.分布式一致性协议 1. 2PC和3PC 2PC 发起事务请求 事务提交/回滚 3PC canCommit preCommit doCommit ...
- 《从Paxos到Zookeeper:分布式一致性原理与实践》【PDF】下载
内容简介 Paxos到Zookeeper分布式一致性原理与实践从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议. ...
- 从Paxos到Zookeeper 分布式一致性原理与实践读书心得
一 本书作者介绍 此书名为从Paxos到ZooKeeper分布式一致性原理与实践,作者倪超,阿里巴巴集团高级研发工程师,国家认证系统分析师,毕业于杭州电子科技大学计算机系.2010年加入阿里巴巴中间件 ...
- 我读《从Paxos到zookeeper分布式一致性原理与实践》
从年后拿到这本书开始阅读,到准备系统分析师考试之前,终于读完了一遍,对Zookeeper有了一个全面的认识,整本书从理论到应用再到细节的阐述,内容安排从逻辑性和实用性上都是很优秀的,对全面认识Zook ...
- 《从Paxos到ZooKeeper分布式一致性原理与实践》学习笔记
第一章 分布式架构 1.1 从集中式到分布式 集中式的特点: 部署结构简单(因为基于底层性能卓越的大型主机,不需考虑对服务多个节点的部署,也就不用考虑多个节点之间分布式协调问题) 分布式系统是一个硬件 ...
- 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记
一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...
- 2月22日 《从Paxos到Zookeeper 分布式一致性原理与实践》读后感
zk的特点: 分布式一致性的解决方案,包括:顺序一致性,原子性,单一视图,可靠性,实时性 zk的基本概念: 集群角色:not Master/Slave,is Leader/Follower/Obser ...
- [从Paxos到ZooKeeper][分布式一致性原理与实践]<二>一致性协议[Paxos算法]
Overview 在<一>有介绍到,一个分布式系统的架构设计,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是产生了一系列的一致性协议. 为解决分布式一致性问题,在长期的探索过程中 ...
随机推荐
- Office for Mac
前情 真的用不惯Mac上的pages,所以就找Mac版的office.找了一个发觉不对,安装总是出错,当时也没有太大的需求,就把这事搁置了下来.今天要写技术文档的时候才终于下决心要把office下再下 ...
- Hibernate 一对一 (one-to-one)
一对一(one-to-one)实例(Person-IdCard) 一对一的关系在数据库中表示为主外关系.例如.人和身份证的关系.每个人都对应一个身份证号.我们应该两个表.一个是关于人信息的表(Pers ...
- [转](阿里笔试)使用多线程和sleep函数生成字符串的伪随机排列
http://blog.csdn.net/jiaowopan/article/details/12009079 C/C++(Linux平台) 注意编译连接时需要链接pthread库,即g++ XX.c ...
- C# Post发送数据返回页面结果
public string GetPage(string posturl, string postData) { Stream outstream = null; Stream instream = ...
- django-xhtml2pdf的使用(加入图片,指定字体,设置样式)
新博客地址:http://muker.net/django-xhtml2pdf.html 这里仅仅讨论直接利用html生成pdf这种最常见也最简单的情况. 1.要利用html生成带中文的pdf要指定中 ...
- BZOJ2160 拉拉队排练【Manacher】
Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训 ...
- BZOJ3083 遥远的国度 【树链剖分】
BZOJ3083 遥远的国度 Description zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcw ...
- 【spring源码学习】spring的task配置
=================spring线程池的配置策略含义========================== id:当配置多个executor时,被@Async("id" ...
- 【DUBBO】zookeeper在dubbo中作为注册中心的原理结构
[一]原理图 [二]原理图解释 流程:1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL2.服务消费者启动时订阅/dubbo/com.foo. ...
- 【转】理解 pkg-config 工具
原文网址:http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/ 你在 Unix 或 Linux 下开发过软件吗?写完一个程序, ...