zookeeper知识点

https://zhuanlan.zhihu.com/p/24996631

https://www.cnblogs.com/raphael5200/p/5285583.html

zk=注册监听通知+文件系统

注册监听通知

客户端注册监听它关心的目录节点,当目录节点发生变化,如数据改变,被删除,子目录节点增加删除时,zk会通知客户端。这时客户端就可以根据传过来的信息采取一系列的操作。

文件系统

zk维护一个如下图的文件结构

1、每个子目录项如NameService都被称为znode,有四种类型:

  • persistent:客户端与zk断开后,该节点依旧存在

  • persistent-sequential:客户端与zk断开后,该节点依旧存在,只是zk给该节点名称进行顺序编号。

  • ephemeral:临时节点,客户端与zk断开连接后,该节点被删除。

  • ephemera-sequential:临时编号节点,客户端与zk断开后,该节点被删除,只是zk给该节点名称进行顺序编号。

2、znode可以有子节点目录(临时节点除外),并且每个znode可以存储数据,zk的客户端和服务器通信采用的是长连接,每个客户端和服务器通过心跳来保持连接,这个连接状态称为session,如果znode是临时节点,这个session失效时,znode被删除,实现了通知机制。

用zk做什么

  1. 统一命名服务:zk帮助我们给文件起名,文件名称不会重复,易于记忆和识别。

  2. 配置管理:改变一台机器的配置,其他机器也会跟着改变。

  3. 集群管理:监听是否有机器退出或加入,动态选举master。

  4. 队列管理

  5. 实现分布式锁

zk集群中的角色

主要由leader和follower组成,observer的加入只是为了支持更多的client,如果扩充follower来支持更多的client,会使得投票延迟增大,所以observer不参与投票。observer接受client请求,并将请求转发给leader。

 

zk的设计目的

  1. 最终一致性:client无论连接到哪个server,展示给它的都是同一个视图,也就是说每台server上存储的数据是相同的。这是zk最重要的特性。

  2. 可靠性:如果消息m被一台服务器所接受,那么它将被所以服务器所接受。

  3. 更新请求顺序进行,来自同一个client的更新请求按发送顺序依次执行。

  4. 原子性:一次数据更新要么成功要么失败,没有中间状态。

  5. 实时性:在一定事件范围内,client能读到最新数据。

zk节点数据操作流程

  1. 在client想follow发出一个写的请求。

  2. follower把请求发送给leader,如果请求发送给observer,observer也会把请求发送给leader。

  3. leader接收到请求后开始发起投票,并通知follower进行投票。

  4. follower把投票结果发送给leader

  5. leader将结果汇总后如果需要写入,则开始写入同时把写入操作通知给follower,然后commit。

  6. follower将请求结果返回给client。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值