zookeeper-1. zookeeper简介说明
1.1 zookeeper介绍
zookeeper是一个高可用的分布式管理与协调框架,基于ZAB算法(原子消息广播协议)的实现。
能够很好保证分布式环境中数据的一致性。正是基于这样的特性,使得zookeeper成为了解决分布式一致性问题的利器。
·顺序一致性:从一个客户端发起的事务请求,最终会严格的按照其发起的顺序被应用到zookeeper中。
·原子性:所有事务请求的处理结果在整个集群中所有的机器上的应用情况是一致的。也就是说要么整个集群所有的机器都成功应用了某一事务,要么没有应用。
·单一视图:无论客户端连接的是哪一个zookeeper服务器,其看到的服务器端数据模型都是一致的。
·可靠性:一旦服务器成功的应用了一个事务,并完成对客户端的响应,那么该事务引起的服务器状态将会被一致保留下来。除非有另一个事务对其修改。
·实时性:通常所说的实时性是指一旦事务被成功应用,那么客户端能立刻从服务器上获取更新后的新数据,zookeeper仅仅能保证在一段时间内,客户端最终一定能从服务器端读取最新的数据状态。
1.2 zookeeper设计目标
1)简单的数据结构:zookeeper就是以简单的树形结构来进行相互协调的。
2)可以构建集群:一般zookeeper集群通常是由一组机器构成的,一般3-5台机器就可以组成一个zookeeper集群了。只要集群中超过半数以上的机器能够正常工作,那么整个集群就能够正常对外提供服务了。
3)顺序访问:对于每一个客户端的每一个请求,zookeeper都会分配一个全局唯一的递增编号,这个编号反应了所有事务操作的先后顺序,应用程序可以使用zookeeper的这个特性来实现更高层次的同步。
4)高性能:由于zookeeper将全部数据存储在内存中,并直接服务与所有的非事务请求,因此尤其在读操作为主的场景下性能非常突出。
1.3 zookeeper的结构
zookeeper会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统。
1.4 zookeeper数据模型
1)每一个子目录项如NameService都被称作为znode,这个znode是被它所在的路径唯一标识的。如Server1这个znode的标识为 /NameService/Server1。
2)znode可以有子节点目录。并且每个znode可以存储数据、数据是有版本的。每个znode中存储的数据可以有多个版本,也就是一个访问路径可以存储多分数据。
3)znode可以是临时节点,一旦创建这个znode的客户端与服务器失去联系,这个znode也将删除,zookeeper的客户端和服务器通信采用长连接方式,通过心跳来保持连接,这个连接状态称session,如果znode是临时节点,这个session失效,znode也就删除了。
4)znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是zookeeper的核心特性。
1.5 zookeeper组成
1)Leader:负责客户端的write请求;
2)Follower:负责客户端的read请求,参与leader选举等;
3)Observer:特殊的Follower,其可以接受客户端read请求,但不参与选举;扩容系统支撑能力,提高了读取速度。因为他不能接受任何同步的写入请求,只负责与leader同步数据;
转载于:https://blog.51cto.com/wlan2014/1901298