大数据笔记之ZooKeeper

ZooKeeper作用

解决分布式环境下多个进程之间的同步控制,让他们有序地去访问某个临界资源,防止读取"脏数据"。可利用分布式锁的方式解决该问题,而分布式锁会面临网络不可靠等问题,所以诞生ZooKeeper来解决上述问题。其有着通用性号,伸缩性好,高可靠,高可用的特点。

Zookeeper集群

leader角色(Paxos协议):接受client请求,也接受其他server转发的请求,负责更新系统状态(Zab协议)。

Follwer角色:也可以接受client请求,如果是写请求将转发给Leader来跟新系统状态,读请求则由Follower的内存数据直接响应。

Zookeeper功能

  1. 数据发布和订阅(即配置管理):将数据发布到ZK节点上,给client动态获取数据。实现配置信息的集中式管理和动态更新。常用:更新全局配置信息,地址列表,应对不同应用集群对于共享各自配置的需求,并且在配置更变时能够通知到集群中的每一个机器。比如自动copy配置文件到从节点中,使集群更加可靠,一致。
  2. 统一命名服务:提供一套方便记忆的命名规则,使用树形的名称结构。通过使用命名服务,客户端应用能够根据指定的名字来获取资源服务的信息。Name Service是ZK的内置功能,只需调用API就可以使用。
  3. 分布通知/协调:利用ZK中特有的watcher注册和异步通知机制,能够很好的实现分布式环境下不用系统之间的通知与协调,实现数据的实时更新处理。ZK使用分布式通知和协调能够大大降低系统间的耦合。

Zookeeper数据模型

1. Znode:Znode是ZK树形数据存储结构的每个节点。通过绝对路径的引用。每个Znode由三个部分组成

  • stat:状态信息,描述znode的版本,权限等信息。
  • data:与该Znode关联的数据。
  • children:该Znode下的子节点。

2. ZK时间:

  • Zxid:Zk节点状态改变都将使节点接收到一个Zxid格式的时间戳(全局有序),每个节点的改变产生一个唯一Zxid,随时间流逝Zxid递增。
  • 版本号:对节点的每个操作都会导致系欸但的版本号增加,每个节点维护三个版本号version(该节点版本),cversion(子节点版本号),aversion(节点拥有的ACL版本)

3. watch触发器:ZK为所有读操作设置watch触发器,当watch的对象发生变化时,将会触发此对象的watch所对应的时间,watch时间异步的发送给客户端。主要应用于两类事件

  • 连接状态事件,这类事件不需要注册,也不需要连续触发,只需要处理即可。
  • 节点时间,包括节点的建立,删除和数据修改。是一次性触发,需要不停的注册触发。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值