从Paxos到ZooKeeper(二)初识ZooKeeper

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/82813271

ZooKeeper是什么

ZooKeeper是一个典型的分布式数据一致性解决方案


ZooKeeper特性

(一)顺序一致性
从一个客户端发起的请求会严格按照发起请求的顺序应用到Zookeeper中
(二)原子性
所有事务请求处理的结果在集群中各个机器上的应用情况是一样的
(三)单一视图
无论客户端连接到哪个Zookeeper服务器,其看到的数据模型是一致的
(四)可靠性
一旦事务处理完成,该事物引起的服务器端状态变更将保留下来
(五)一致性
Zookeeper仅仅能保证在一段时间内,客户端能获取到服务器端的最新数据


ZooKeeper设计目标

(一)简单的数据模型
ZooKeeper使得分布式程序通过一个共享的、树形结构的名字空间进行相互协调
(二)构建集群
在这里插入图片描述
(三)顺序访问
对于来自客户端的请求,Zookeeper都会分配一个全局唯一递增编号,这个编号反应了所有事务操作的先后顺序
(四)高性能
由于Zookpper的数据全量存储于内存中,并且直接服务于客户端的所有非事务请求,因此适合以读操作为主的场景


基本概念

集群角色

Leader:为客户端提供读和写服务
Follower:提供读服务,参与Leader选举
Observer:提供读服务,不参与Leader选举,不参与写操作的 “过半写成功” 策略,在不影响写性能的情况下提升了读性能

会话:Session

Zookeeper中,一个客户端连接是指客户端和服务器之间的一个TCP长连接,从第一次建立连接开始,客户端的生命周期就开始了,通过这个连接,客户端可以通过心跳检测与服务器保持有效会话,也可以向Zookeeper服务器发送请求并接受响应,同时可以通过连接接收来自服务器的Watch事件通知
Session的sessionTimeout值设置一个客户端的超时时间,因各种原因(网络故障等)导致客户端连接断开,只要在sessionTimeout规定时间内能够连接上集群中任意一台服务器,那么之前的会话仍然有效

数据节点

(一)集群的机器
我们称之为机器节点
(二)数据节点——ZNode
持久性节点:一旦被创建,除非主动进行ZNode移除操作,否则ZNode节点将一直保存在Zookeepr
临时节点:跟客户端会话绑定,一旦客户端会话失效,那么客户端创建的所有临时节点都会被移除

版本

对于每个ZNode,Zookeeper会为其维护一个Stat的数据结构,Stat中记录了ZNode节点的三个版本号:version(当前ZNode版本)、cversion(当前ZNode子节点版本)、aversion(当前ZNode的ACL版本)

Watcher

ZooKeeper允许用户在指定节点注册一些Watcher,在一些特定的事件触发的时候,ZooKeeper会通知到感兴趣的客户端上,该特性是ZooKeeper实现分布式协调服务的重要特性

ACL

ZooKeeper采用ACL策略进行权限控制,定义了以下5种权限
在这里插入图片描述
create和delete权限是针对子节点的权限控制


猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/82813271