读<分布式一致性原理>初识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 在<一>有介绍到,一个分布式系统的架构设计,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是产生了一系列的一致性协议. 为解决分布式一致性问题,在长期的探索过程中 ...
随机推荐
- ranch分析学习(三)
接着上一篇继续研究 上一篇结尾的时候,我们谈到了连接,监听两个监督树,今天我们就来看看这两个监督树和他们的工作者都是干什么的,怎么实现的.文件编号接上篇. 6. ranch_acceptors_sup ...
- 命令“"xxx.exe" xxx”已退出,代码为 n。这些错误是什么意思?(3 / 123 / 9009)
命令“”xxx.exe” xxx”已退出,代码为 n. 我们在 cmd 中输入常见命令的时候,如果命令输入错误或使用错误,cmd 中会提示错误原因,帮助我们定位并解决问题.然而如果相同的命令放到了 V ...
- JLOI2019游记
JLOI2019游记 DAY -??? 听说是12省联考,好刺激. DAY 1 看题 t1是个lydsy题我还写过博客,t2不会,t3一脸神仙. 这个t3数据好大啊,看到好几个人都用gedit打开大样 ...
- 【spring源码学习】spring的事务管理的源码解析
[一]spring事务管理(1)spring的事务管理,是基于aop动态代理实现的.对目标对象生成代理对象,加入事务管理的核心拦截器==>org.springframework.transact ...
- ballerina 学习八 Parallel( 并行处理)
实际上就是并行进行任务的处理 简单例子 代码 import ballerina/io; function main (string… args) { worker first { io:println ...
- ballerina 学习五 使用composer管理ballerina 项目
1. 启动 composer 备注: 因为这个命名和php的一个包管理工具重名了,所以可能需要使用决定路径 比如我的mac系统使用:Library/Ballerina/ballerina-0.970. ...
- MATLAB自带工具箱实现PCA降维代码
PCA基本流程: 1.训练集矩阵算协方差矩阵A; 2.算协方差矩阵特征值与特征向量; 3.按特征值的大小排列特征矩阵,得B,对应的特征值(按从大到小排列)组成向量a; 4.A*B得到去关联的新矩阵C, ...
- C# winform中自定义用户控件 然后在页面中调用用户控件的事件
下面是用户控件的代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- [LeetCode系列]组合和枚举问题
给定一列数(未排序)和一个目标值, 找出所有可能的组合和等于目标值的组合, 数组中的数可以重复使用. 算法思路: 使用递归. 对数组排序, 从小到大; 令i = 起始下标(初始为0), 对于每一个数, ...
- OPCDAAuto.dll 的一个坑
最近项目需要对SCADA系统的下位机采集实时数据,常见做法是两种,一种采用ModBus RTU/TCP协议直接通过支持ModBus的下位机通信,一种是通过OPC规范,使用厂商提供的OPC Server ...