zookeeper初识
zookeeper简介
zookeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了统一命名服务,配置管理和分布式锁等
分布式的基础服务.Zookeeper并没有直接采用paxos算法,而是采用了ZAB的一致性协议.
zookeeper是什么呢?
Zookeeper是一个典型的分布式数据一致性的解决方案,分布式程序可以基于它事项诸如数据发布订阅,命名服务,负载均衡,分布式协调通知,集群管理,master选举,分布式锁和分布式队列等.
zookeeper的设计目标
1 简单的数据模型
zookeeper使得分布式能够通过共享的,树形结构的名字来进行相互协调,这里所说的树型结构的名字空间,是指zookeeper服务器内存中的一个数据模型,其由一系列被称为znode的数据节点组成,总的来说,其数据模型类似于一个文件系统,znode的层级关系就像文件系统的目录结构一样.存储在内存中.
2 可以构建集群
一个zookeeper集群由一组机器组成,一般3~5台机器就可以组成可用的zookeeper集群了.只要集群中超过一半的机器能够正常工作,整个集群就能正常对外服务.
3 顺序访问
对于来自客户端的每个更新请求zookeeper都会分配一个全局唯一的递增编号,这个编号反映了所有事物的操作先后顺序,应用程序可以使用zookeeper来实现更高层次的同步原语.
4 高性能
由于zookeeper将全量数据存储在内存中,并直接服务于客户端的所有非事务请求,因此它尤其适用于以读操作为主的应用场景.
zookeeper的几个概念
1 集群角***r> 在zookeeper中,有leader,follower,observer几个角色,leader服务器为客户端提供读和写服务.follower和observer都能提供读服务,observer不参与leader选举的过程,也不参与过半写成功策略,因此observer可以在不影响写性能的情况下提升集群的读性能.
2 会话
Session是指客户端会话,在zookeeper中,一个客户端连接是指客户端与服务器之间的一个tcp长连接.
3 数据节点(znode)
数据节点分为持久节点和临时节点两类.所谓持久节点就是一旦znode被创建了,除非主动进行znode移除操作,否则这个znode将一直保存在zookeeper上.临时节点就是一旦客户端失效,这个客户端锁创建的所有临时节点都会被移除.
4 版本
zookeeper每个znode上都会存储数据,对应于每个znode,zookeeper都会维护一个叫做stat的数据结构,记录了这个znode的三个数据版本,分别是version(当前znode版本),cversion(当前znode子节点版本),aversion(当前znode的acl版本).
5 ACL(acess control list)策略来进行权限控制
create:创建子节点的权限
Read:获取节点数据和子节点列表的权限
write:更新节点数据的权限
delete:删除子节点的权限
admin:设置节点acl的权限