读<分布式一致性原理>初识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种权限

原文地址:https://www.cnblogs.com/duan2/p/9043613.html

时间: 2024-10-06 19:49:42

读<分布式一致性原理>初识zookeeper的相关文章

读《分布式一致性原理》zookeeper运维

1.配置详解 1.1基本配置 基本参数包括clientPort,dataDir和tickTime 1.2高级配置 下面我们再来看看zookeeper中一些高级配置参数的配置实用 2.四字命令 我们曾经讲到使用stat命令来验证zookeeper服务器是否启动成功,这里stat命令就是zookeeper中最为经典的命令 之一.四字命令的使用方式非常简单,通常有两种方式.第一种是通过Telnet方式,使用telnet客户端登陆zookeeper的 对外服务端口,然后直接输入四字命令即可. conf

《从PAXOS到ZOOKEEPER分布式一致性原理与实践》pdf

下载地址:网盘下载 内容简介  · · · · · · <Paxos到Zookeeper:分布式一致性原理与实践>从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议.同时,本书深入介绍了分布式一致性问题的工业解决方案--ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法.内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用和运维ZooKeeper.全书共8章,分为五部分:第一

《从Paxos到Zookeeper:分布式一致性原理与实践》【PDF】下载

内容简介 Paxos到Zookeeper分布式一致性原理与实践从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议.同时,本书深入介绍了分布式一致性问题的工业解决方案--ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法.内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用和运维ZooKeeper.全书共8章,分为五部分:前一部分(第1章)主要介绍了计算机系统从集中式向分布式系统

《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记

一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很难定义两个事件谁先谁后 故障总是会发生.系统设计时,需要考虑到任何异常情况 2.分布式环境的各种问题 通信异常.分布式系统中的某些节点之间无法正常通信 网络分区.这有部分节点可以正常通信,有些无法正常通信.这种现象称为网络分区,也称为"脑裂" 三态.节点之间的一次通信存在三种状态:成功.失

&lt;从PAXOS到ZOOKEEPER分布式一致性原理与实践&gt;读书笔记-ZAB协议

本文属于分布式系统学习笔记系列,上一篇笔记整理了paxos算法,本文属于原书第四章,梳理zookeeper的目标特性及ZAB协议. 1.介绍zookeeper 1.1ZooKeeper保证一致性特性 ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调通知.集群管理.master选举.分布式锁.分布式队列等功能.ZooKeeper可以保证如下分布式一致性特性. 1.顺序一致性: 从同一个客户端发起的事务请求,最终将严

[从Paxos到ZooKeeper][分布式一致性原理与实践]&lt;一&gt;

目录 分布式架构 从集中式到分布式 从ACID到CAP/BASE 一致性协议 2PC与3PC Paxos算法 Paxos的工程实践 Chubby Hypertable Zookeeper与Paxos 初始Zookeeper Zookeeper的ZAB协议 使用Zookeeper 部署与运行 客户端脚本 Java客户端API 开源客户端 Zookeeper的典型应用场景 Zookeeper技术内幕 系统模型 序列化与协议 科幻端 会话 服务器启动 leader选举 ... Zookeeper运维

2月22日 《从Paxos到Zookeeper 分布式一致性原理与实践》读后感

工作中使用的场景: 工作中使用dubbo微服务,其中注册中心是由zk提供的,于是课余时光就读了此本zk经典之作 节点名为java接口的类名 节点下包括了服务提供者,消费者等子节点 提供者: 消费者: 由于是最底层微服务,所以消费的注册的比较多 zk的特点: 分布式一致性的解决方案,包括:顺序一致性,原子性,单一视图,可靠性,实时性 zk的基本概念: 集群角色:not Master/Slave,is Leader/Follower/Observer 会话:TCP长连接 数据节点(Znode) 版本

[从Paxos到ZooKeeper][分布式一致性原理与实践]&lt;二&gt;一致性协议

Overview 在<一>有介绍到,一个分布式系统的架构设计,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是产生了一系列的一致性协议. 为解决分布式一致性问题,在长期的探索过程中,涌现了一大批经典的一致性协议和算法,其中最著名的就是二阶段提交协议.三阶段提交协议和Paxos算法了. 2PC与3PC 分布式系统中,每个机器节点虽然都能明确知道自己在进行事务操作过程中的结果是失败or成功,但却无法直接获取到其他分布式节点的操作结果. 因此,当一个事务操作需要跨越多个分布式节点的时候,为了

&lt;从PAXOS到ZOOKEEPER分布式一致性原理与实践&gt;读书笔记-两阶段提交与三阶段提交

一.背景 本书第一章的分布式架构,写了从单机的acid到分布式的CAP.参见之前的文章.本篇是第二章的一致性协议部分,分两篇整理. 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上.为了对用户提供正确的增\删\改\查等语义,我们需要保证这些放置在不同物理机器上的副本是一致的. 为了解决这种分布式一致性问题,有很多经典算法:如二阶段提交.三阶段提交,paxos算法. 二.二阶段提交(2PC) 二阶段提交(Two-phaseC