【JAVA核心知识】37:ZooKeeper基础 ---- 《从Paxos到Zookeeper》读书笔记

目前在分布式数据一致性上,没有比ZooKeeper更成熟稳定且被大规模应用的解决方案,而且ZooKeeper是开源且免费的。这是Zookeeper成为目前炙手可热的分布式解决方案的基础。

ZooKeeper的特点:

  • 顺序一致性:从同一个客户端发起的事务请求,最终会严格的按照发起顺序应用到Zookeeper中
  • 原子性:事务在整个集群中的每个机器上的应用是一致的。即要么都成功应用了一个事务,要么都没有应用
  • 单一视图:无论客户短连接的哪个Zookeeper服务器,其看到的数据模型都是一致的
  • 可靠性:一旦服务端成功运用了某个事务,该事务引起的服务端状态变更会一直被保存下来,除非有新的事务进行更改。
  • 实时性:Zookeeper追求的是最终一致性。只保证一段时间内,客户端最终一定能在服务端读到最新的数据

ZooKeeper的设计目标:

  • 数据模型简单:数据模型为被称为ZNode的数据节点组成的树形结构,由斜杆进行分割路径,类似于一个文件系统,不过数据不存在磁盘中,ZooKeeper将全量数据存入内存中。
  • 可以构建集群:集群化的服务,一般3-5台机器就能构建一个集群。集群的每台机器都维护当前的服务器状态,机器之间保持通信,只要有超过一半的机器提供服务,整个集群就能正常对外提供服务。
    客户端与任意一台服务器建立TCP连接,如果连接断开,客户端自动连接集群的其他机器。
  • 顺序访问:客户端的每一个更新请求,zookeeper都会为其分配一个全局唯一的递增编号,反应事务的先后顺序。
  • 高性能

ZooKeeper的基本概念

集群角色

ZooKeeper将集群机器分为Leader, Follower和Observer三种角色。所有机器通过选举产生Leader,Leader提供读写服务, Follower和Observer仅提供读服务,Follower与Observer的区别在于Observer不参与Leader的选举,也不参与写操作的“过半写成功”策略,Observer用来在不影响集群写性能的情况下提升集群的读性能。

会话(session)

Zookeeper中,一个客户端链接是指客户端和服务器之间的一个TCP长链接。客户端启动时会首先与服务器建立一个TCP连接,第一次连接建立起,客户端会话的生命周期也就开始了。通过这个连接,客户端能够通过心跳检查与服务器保持有效的会话,也能够向Zookeeper服务器发送请求和接受响应,还能接收来自服务器的Watch事件通知。session设置由会话超时时间sessionTimeout,如果因服务器压力过大,网络故障或是客户端主动断开导致连接断开时,只要在sessionTimeout过期之前连接到任意一台服务器,会话依然有效。

节点

Zookeeper中,节点有两层含义,一种指集群的机器。另外则为数据模型的数据单元,即数据节点ZNode。ZNode分为持久性节点和临时节点。持久节点一旦被创建,除非主动删除,会一直保存在Zookeeper中。临时节点与会话绑定,会话失效,所属临时节点被移除。另外Zookeeper允许添加特殊属性SEQUENTIAL为节点追加一个整数数值属性,这是一个由父节点维护的自增数字。

版本

Zookeeper为每个ZNode都维护一个叫Stat的数据结构。包含:version(当前ZNode版本),cversion(当前ZNode的子节点版本),aversion(当前ZNode的ACL版本)。

Watcher

事件监听器Watcher,是Zookeeper中的一个很重要的属性。能让用户在指定节点注册一下Watcher,并在特定事件触发时,服务端通知到感兴趣的客户端上去。该机制是Zookeeper实现分布式协调服务的重要特性。

ACL

Zookeeper采用ACL(Access Control Lists)策略来进行权限控制。定义了五种权限:

  • CREATE:创建子节点的权限
  • READ:获取节点数据和子节点列表的权限
  • WRITE:更新节点数据的权限
  • DELETE:删除子节点的权限
  • ADMIN:设置节点ACL的权限

PS:
【JAVA核心知识】系列导航 [持续更新中…]
关联导航:35:一致性协议:2PC,3PC与Paxos
关联导航:36:ZooKeeper的ZAB协议
关联导航:38:Zookeeper的使用与典型应用场景
欢迎关注…

参考资料:
《从Paxos到Zookeeper++分布式一致性原理与实践》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue_hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值