zookeeper特性:
- 顺序一致性,客户端发起的事务请求会严格按照其发起顺序被应用到zookeeper中,用队列维护
- 原子性,事务请求的应用情况在集群中所有机器上是一致的,要么全部成功,要么全部不成功
- 单一视图,client无论连接到哪个server,数据视图都是一致的
- 实时性,在一定时间范围内,client能读取到最新数据
- 可靠性,服务成功应用了一个事务,该事务所引起的服务端状态变更会被一直保留下来
zookeeper节点角色:
- leader(领导者),负责负责进行投票的发起和决议,更新系统状态
- learner(学习者),包括跟随着follower和观察者observer,follower用于接受客户端请求并向客户端返回结果,参与投票
- observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer是为了扩展系统,提高读取速度
- 客户端(client),请求发起方
watcher:
- 事件监听器,Watcher可以监控目录子节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录的节点上的Watcher,从而每个客户端很快知道他所关注的目录子节点的状态变化,然后做出反应。
数据节点类型:临时节点,生命周期和客户端绑定,客户端会话失效,所有临时节点会被移除。持久节点,一旦创建除非zookeeper主动移除,否则会一直存在。特殊属性:sequential,一旦这个节点被创建,zookeeper会自动在其节点名后追加一个整形数字,这个整型数字是由父节点维护的自增数字。
zookeeper是一个由多个server组成的集群,一个leader,多个follower,每个server保存一份数据副本,数据一致,分布式读写,更新请求和转发,由leader实施。
zookeeper横向拓展会提高哪些性能:
提高非事务读的性能,zookeeper中只有一个leader可以进行事务操作,那么横向拓展增加follower或observer,可以增加读取数据的性能
客户端怎么选择哪一个zookeeper集群节点取访问:
zookeeper会维护一个节点的列表,然后client随机访问或着轮询选择,当是事务请求的时候会通过server转发给leader节点,不是事务请求就会直接返回结果