zookeeper 笔记-小结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper 笔记-小结相关的知识,希望对你有一定的参考价值。
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 笔记-小结的主要内容,如果未能解决你的问题,请参考以下文章