1、zookeeper为分布式应用设计的分布式开源协调服务

2、分布式应用可以建立在同步配置管理,选举,分布式锁,分组和命名等服务的更高级别的实现基础上

3、znode维护数据,ACL时间戳等交换版本号等数据结构,它通过这些数据结构的管理让缓存生效并且令协调更新

4、每当znode中的数据更新后它维护的版本号将增加,这非常类似数据库中计数器时间戳的操作方式

5、znode具有原子操作特点:命名空间中,每一个znode的数据将被原子地读写,读操作将读取与znode相关的所有数据,写操作将替换所有的数据

6、每一个节点都有一个访问控制列表,规定了用户操作权限

7、节点类型:

  临时节点与Session同时存在,当session生命周期结束,临时节点被废除

  持久节点

  持久顺序节点,少用

  临时节点,下不可建子节点(故障转换,监听实况)

  临时顺序节点(分布式锁,选举)

8、分布式锁实现方式:

  第一步:客户端调用 create()方法创建“_locknode_/guid-lock-”节点,需要注意的是,这里节点的创建类型设置 EPHEMERAL_SEQUENTIAL。

  第二步:客户端调用 getChildren(“_locknode_”)方法来获取所有已经创建的子节点,注意,这里不注册任何 Watcher。

  第三步:客户端获取到所有子节点 path 之后,如果发现自己在步骤 1 中创建的节点序号最小,那么就认为这个客户端获得了锁。

  如果在步骤 3 中发现自己并非所有子节点中最小的,说明自己还没有获取到锁。此时客户端需要找到比自己小的那个节点,然后对其调用 exist()方法,同时注册事件监听。之后当这个被关注的节点被移除了,客户端会收到相应的通知。这个时候客户端需要再次调用 getChildren(“_locknode_”)方法来获取所有已经创建的子节点,确保自己确实是最小的节点了,然后进入步骤 3。

zookeeper 笔记-小结的更多相关文章

  1. Zookeeper 笔记小结

    转自: https://www.cnblogs.com/raphael5200/p/5285583.html  1.Zookeeper的角色 » 领导者(leader),负责进行投票的发起和决议,更新 ...

  2. (转)ZooKeeper 笔记(1) 安装部署及hello world

    ZooKeeper 笔记(1) 安装部署及hello world   先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...

  3. Zookeeper笔记之命令行操作

    $ZOOKEEPER_HOME/bin下的zkCli.sh进入命令行界面,使用help可查看支持的所有命令: 一.节点相关操作 create [-s] [-e] path data acl creat ...

  4. zookeeper笔记(一)

    title: zookeeper笔记(一) zookeeper 安装简记 解压文件 $ tar -zxvf zookeeper-3.4.10.tar.gz -C 安装目录 创建软连接(进入安装目录) ...

  5. zookeeper笔记(二)

    title: zookeeper笔记(二) zookeeper ALC权限控制 getAcl path 可以查看某个node的权限 设置权限: 2. world方式 setAcl <path&g ...

  6. openresty 学习笔记小结:综合应用实例

    openresty 学习笔记小结:综合应用实例 这个综合实验实现的功能其实很简单,用户访问一个页面,显示一个默认页面.输入参数(post或者get都可以),如果参数在数据库查询得到并满足一定条件,根据 ...

  7. Zookeeper笔记3——原理及其安装使用

    Zookeeper到底能干什么? 1.配置管理:这个好理解.分布式系统都有好多机器,Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣 ...

  8. 这可能是最简单易懂的 ZooKeeper 笔记

    分布式架构 CAP 与 BASE 理论 一致性协议 初识 Zookeeper Zookeeper 介绍 Zookeeper 工作机制 Zookeeper 特点 Zookeeper 数据结构 Zooke ...

  9. ZooKeeper 笔记(6) 分布式锁

    目前分布式锁,比较成熟.主流的方案有基于redis及基于zookeeper的二种方案. 大体来讲,基于redis的分布式锁核心指令为SETNX,即如果目标key存在,写入缓存失败返回0,反之如果目标k ...

随机推荐

  1. 201521123092, 《java程序设计》第1周学习总结。

    #1.本周学习总结 这一周是我学习java的第一周,刚接触一门全新的编程语言,觉得还是有点困难的,很多基础性的java知识需要一点点学习,我会请教同学以及查询网上的学习资料,认真学好这一门学科. 本周 ...

  2. yum仓库管理

    yum在线管理 rpm包的管理分为 rpm命令管理和yum在线管理,rpm命令管理由于可能需要解决各种依赖问题,在安装软件的时候可能显得比较麻烦,然而,yum在线管理正好和它相反.Yum(全称为 Ye ...

  3. Project Euler 92:Square digit chains C++

    A number chain is created by continuously adding the square of the digits in a number to form a new ...

  4. web网站更换新域名

    第一步.绑定新的域名到单独的空间 一般我们都是用的VPS或者不限制建站数量的虚拟主机,尽量的保持原有的IP不变,我这边在老站点同IP的VPS主机下新建一个新域名站点,这样我们可以确保原有的站点IP不变 ...

  5. C# 下搭建最新版OpenCV(Emgu CV)开发环境

    既然是"最新版" 首先当然是去sf找安装包: https://sourceforge.net/projects/emgucv/files/emgucv/ 或着去github主页上c ...

  6. 记一次Linux下给硬盘分区格式化操作

    今天找到一张旧TF卡,2G的,正好拿来练习下建立分区 插上orangepi后,fdisk -l看看,可以看到多了一个新的存储设备 /dev/mmcblk1 用fdisk打开它: fdisk /dev/ ...

  7. PHP数组运算符

    PHP数组预算符有==(等于),===(恒等于),!=(不等于),<>(不等于),+(联合): 注意:没有-(减号)运算符: $a=array("a"=>&quo ...

  8. wget下载整个网站

    wget下载整个网站wget下载整个网站可以使用下面的命令 wget -r -p -k -np http://hi.baidu.com/phps , -r 表示递归下载,会下载所有的链接,不过要注意的 ...

  9. ES6 Promise 对象

    Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Pro ...

  10. 《MATLAB从入门到放弃》二维曲线和图形绘制基础(二):使用Help文档学习line、plot、plotyy、subplot、hold绘图函数

    目录: »  plot 最常用的二维曲线绘图函数 >  帮助文档 >  基本使用语法 >  线条的样式.符号和颜色调整 >  图形属性调整 >  使用图形句柄进行设置 » ...