读<分布式一致性原理>初识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 在<一>有介绍到,一个分布式系统的架构设计,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是产生了一系列的一致性协议. 为解决分布式一致性问题,在长期的探索过程中 ...
随机推荐
- 【javascript 】组合式继承
开发人员采用的js的继承结构 function inheritPrototype(subType, superType) { var prototype = object(superType.prot ...
- linux自学(八)之开始centos学习,安装tomcat
上一篇:linux自学(七)之开始ccentos学习,安装jdk 由于tomcat小,我们直接使用在线下载然后解压形式 首先,进入cd /usr/local目录下并创建tomcat目录,把tomcat ...
- BZOJ3196 Tyvj1730 二逼平衡树 【树套树】 【线段树套treap】
BZOJ3196 Tyvj1730 二逼平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名 ...
- tableau-基本函数
一.数据术语 维度——包含诸如文本和日期等类别数据的字段. 度量——包含可以聚合的数字的字段. 二.字段图标 Abc 蓝色图标->离散字段 # 绿色图标->连续字段 =Abc = ...
- hadoop下远程调试方法
JPDA 简介Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用 ...
- 学习Selenium同学必看
本文转载 作者:灰蓝蓝蓝蓝蓝蓝链接:http://www.jianshu.com/p/5188cb3ab790來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.更多技术博客 ...
- MAMP环境配置
命令行: 开启apache服务:sudo apachectl start 停止apache服务:sudo apachectl stop 重启服务:sudo apachectl restart 查看版本 ...
- goreman 多进程管理工具
Linux下多进程管理工具对开发和运维都很有用,常见的功能全面的主流工具主要有monit.supervisor.不过开发中使用则推荐轻量级小工具goreman 举个例子:coreos的etcd就是使用 ...
- [LeetCode系列]N皇后问题递归解法 -- 位操作方式
N皇后问题: 给定8*8棋盘, 放置n个皇后, 使其互相不能攻击(即2个皇后不能放在同一行/列/正反对角线上), 求解共有多少种放置方式? 这个问题的解答网上有不少, 但是位操作解法的我看到的不多. ...
- 关于python urlopen 一个类似radio流的timeout方法
终极解决方法来啦!看代码感受: import requests import eventlet import time eventlet.monkey_patch() try: with eventl ...