`
jiangwenfeng762
  • 浏览: 286596 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

zookeeper学习笔记

 
阅读更多

ZooKeeper是什么?

高可用的高性能的分布式系统协调服务。局部不可用是分布式系统的固有特征,ZooKeeper可以很好的地处理这种情况。

下面从三个方面来理解ZooKeeper服务:数据模型、操作、实现

数据模型

可以把zookper看成一个文件系统,文件系统中的所有文件形成一个数状结构,zookeeper维护着这样的树形层次结构,树中的节点称为znode。每个znode有一个与之相关联的ACL(Access Control List)。这种数据模型示意图如下:

znode通过路径被引用,而且要采用绝对路径,即必须以/开头。znode存储的数据要<1m。

znode类型

  短暂znode:回话结束,zookeeper就会把短暂znode删除,短暂znode不可以有子节点。

  持久znode:回话结束也不会被删除,除非客户端明确要删除此znode,持久znode可以有子节点。

对于在特定时刻需要知道有哪些分布式资源可用的应用来说,使用短暂znode比较合适。

znode的观察机制

znode以某种方式发生变化时,“观察”(watch)机制可以让客户端得到通知。可以针对ZooKeeper服务的“操作”来设置观察,该服务的其他操作可以触发观察。比如,客户端可以对某个客户端调用exists操作,同时在它上面设置一个观察,如果此时这个znode不存在,则exists返回false,如果一段时间之后,这个znode被其他客户端创建,则这个观察会被触发,之前的那个客户端就会得到通知。

 

操作

ZooKeeper有9种基本操作:

操作

描述

create

创建一个znode(必须有父节点)

delete

删除一个znode(该znode不能有任何子节点)

exists

测试一个znode是否存在,并且查询它的元数据

getACL,setACL

获取/设置一个znodeACL

getChildren

获取一个znode的子节点列表

getData,setData

获取/设置一个znode所保存的数据

sync

将客户端的znode视图与ZooKeeper同步

 Zookeeper中的更新操作是有条件的。在使用delete或者setData操作时必须提供被更新znode的版本号,如果版本号不匹配,则更新操作失败。

API

目前主要有java和C两种客户端,每种操作都有同步和异步两种执行方式。

观察触发器

可以设置观察的操作:exists,getChildren,getData

可以触发观察的操作:create,delete,setData

 

观察触发器

设置观察的操作

create

delete

setData

znode

子节点

znode

子节点

 

exists

NodeCreated

 

NodeDeleted

 

NodeDataChanged

getData

   

NodeDeleted

 

NodeDataChanged

getChildren

 

NodeChildrenChanged

NodeDeleted

NodeChildrenChanged

 

NodeCreated:节点创建事件

NodeDeleted:节点被删除事件

NodeDataChanged:节点数据改变事件

NodeChildrenChanged:节点的子节点改变事件

 

ACL

每个znode被创建时都会带有一个ACL列表,用于决定谁可以对它执行何种操作。

ACL权限

允许的操作

CREATE

create(子节点)

READ

getChildren

getData

WRITE

setData

DELETE

delete(子节点)

ADMIN

setACL

每个ACL都是身份验证模式、符合该模式的一个身份和一组权限的组合。身份验证模式有三种:
digest:用户名,密码

host:通过客户端的主机名来识别客户端

ip: 通过客户端的ip来识别客户端

所以我们可以类似这样构建一个ACL类:

new ACL(Perms.READ,new Id("host","example.com"));

这个ACL对应的身份验证模式是host

符合该模式的身份是example.com

权限的组合是:READ

实现

Zookeeper有两种运行模式:

独立模式(standalone mode):只运行在一台服务器上,适合测试环境

复制模式(replicated mode):运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)。Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode树的每一个修改都会被复制到集合体中超过半数的机器上。

生产环境,zookeeper集群的服务器数目应该是奇数。

Zookeeper集群中的角色及其职责

领导者

  1.管理写请求

跟随者

  1.响应客户端的读请求

  2.负责把客户端提交的写请求转发给领导者

 

回话

客户端与zookeeper集群中的某个服务器建立连接,就建立了一个回话,回话可以过期,可以设置ping周期来防止回话过期。

滴答(tick time):定义了zookeeper中的基本时间周期,其他设置都是根据滴答参数来定义的。2个滴答=<回话时间<=20个滴答时间

状态

  CONNECTING,CONNECTED,CLOSED

 

Zookeeper采用的算法:Zab(待续)

leader选举

原子广播

分享到:
评论

相关推荐

    Zookeeper学习笔记.docx

    Zookeeper学习笔记

    ZooKeeper学习笔记

    java ZooKeeper学习笔记\ZooKeeper原理、运用

    Zookeeper学习笔记

    自己整理的ZooKeeper学习笔记,适合刚刚接触ZooKeeper的人学习

    Zookeeper学习笔记.pdf

    ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:**分布式锁服务**。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:**...

    zookeeper学习笔记.pptx

    本文适合但不限于软件开发人员阅读。本文档能够使阅读者对zookeeper有一个宏观且全面的了解,内容主要包含zookeeper架构、数据模型、读写及工作原理、典型应用场景、指令汇总等,

    java后端学习笔记

    activeMq,rabbitMq,activity工作流,docker,dubbo,netty,rpc,springcloud,zookeeper学习笔记

    Zookeeper学习资源和笔记(附代码)

    适合初学入门,知识巩固。涵盖安装配置、命令操作、Java API操作、事件监听、分布式锁、集群搭建等知识

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于ssm的云的学习笔记系统-ssm-java代码

    zookeeper云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-...

    zookeeper完整学习笔记

    - 概述 - 术语 - 分布式应用 - 介绍 - 架构 - 工作流 - Leader选举 - 安装服务 - CLI 操作 - java-api - 动态感知服务器上下线 - 实现Hadoop高可用(Hadoop-HA-High Availability)

    学习笔记--zookeeper

    zookeeper学习,包括zookeeper架构,原理,安装,配置,命令管理,API编程以及可以应用的场景

    zookeeper一站式学习资料

    zookeeper一站式学习资料包含国内首部Zookeeper从入门到精通+搜索引擎等一条龙学习资料以及视频讲解包含笔记代码资源

    zookeeper笔记

    zookeeper原理以及应用笔记学习总结,适合初学者!欢迎下载

    ZooKeeper.pdf

    Zookeeper技术的基础详细学习笔记,总结了Zookeeper的各个知识点,可以用来复习以及对基础知识的巩固,对新人的学习很有帮助。

    4.zookeeper运维实战视频教程资料-详细课件笔记总结

    学习zookeeper的运行原理、集群搭建、应用场景、理解相关概念,总结常见面试题,提高面试通过率 课程简介: 1.zookeeper介绍、安装方式和应用场景 2.zookeeper的单机安装和配置文件介绍 3.zookeeper的集群安装 4....

    zookeeper-01.xmind

    zk学习笔记

    hbase学习笔记

    比较详细的HBase学习笔记,精心制作 HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其...

    kafka学习笔记.doc

    1.kafka的基础知识(安装、部署、基础概念,版本) ...4.kafka中的zookeeper 5. kafka如何不丢消息 6.kafka多线程消费 7.kafka重组平衡 8.kafka控制器 9.kafka监控 10.kafka集群部署及调优 11. 代码见《kafka学习代码》

    1.笔记_zookeeper_

    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。该文档适合学习者学习zookeeper,结构清晰,层次递增,需要学习者配合xmind软件学习

Global site tag (gtag.js) - Google Analytics