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. 201521123104 《Java程序设计》 第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 1. finally(题目4-2) 1.1 截图你的提交结果(出现学号) 1.2 4-2中f ...

  2. 【二】刚学Python的几道简单练习题

    python交友娱乐会所:613176398 1.使用while循环输入 1 2 3 4 5 6     8 9 10 2.求1-100的所有数的和 3.输出 1-100 内的所有奇数 4.输出 1- ...

  3. 基本的maven的命令行命令

    1.创建简单的maven 的web项目 mvn archetype:create 举例:mvn archetype:create -DgroupId=com.demo.app -DartifactId ...

  4. Android 之JDBC

    JDBC(Java DataBase Connectivity)是使用 Java 存取数据库系统的标准解决方案,它将不同数据库间各自差异API与标准 SQL语句分开看待,实现数据库无关的 Java操作 ...

  5. 业余草通告CSDN博客用户zhang__ao非法转载文章的公告

    今天早上有粉丝给我反馈,CSDN的一位用户大量非法的转载了我的个人网站:业余草(www.xttblog.com)上的大量文章.现一对该用户转载业余草上网站上的所有文章进行了举报! 从上图中可以看出,该 ...

  6. [Oracle]理解undo表空间

    一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段. ...

  7. Android Studio 导入应用时报错 Error:java.lang.RuntimeException: Some file crunching failed, see logs for details

    在app文件夹的build.gradle里加上 android { ...... aaptOptions.cruncherEnabled = false aaptOptions.useNewCrunc ...

  8. Javascript 中 ==(相等运算符) 和 ===(严格相等运算符) 区别

    在JS中,"==="叫做严格运算符,"=="叫做相等运算符. 它们的区别是相等运算符(==)比较两个值是否相等,严格相等运算符(===)比较它们是否为" ...

  9. 用mp3stego来加密与解密文件的几次尝试

    用法来自实验吧的"Canon"隐写题目的灵感. 先来简单的聊一下这道题目,打开题目后发现了一个mp3文件,除此之外还有一枚压缩包.然而压缩包是加密的,看来我们需要通过解出来mp3里 ...

  10. Codeforces Round #309 (Div. 2)D

    C. Kyoya and Colored Balls time limit per test 2 seconds memory limit per test 256 megabytes input s ...