一、简介

什么是Zookeeper?
Zookeeper是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名、配置、管理、同步控制、群组服务等。我们可以使用Zookeeper来实现比如达成共识、集群管理、leader选举等
Zookeeper是一个高可用的分布式管理与协调框架,基于ZAB算法(原子消息广播协议)的实现。该框架能够很好地保证分布式环境中数据的一致性。也正是基于这样的特性,使得Zookeeper称为了解决分布式一致性问题的利器。

Zookeeper的特性

  • 顺序一致性:从一个客户端发起的事务请求,最终将会严格地按照其发起的顺序被应用到Zookeeper中去
  • 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的、也即是要么整个集群所有的机器都成功应用了某一事务,要么所有机器都没有应用,不会出现部分机器应用了该事务,而另一部分没有应用的情况。
  • 单一视图:无论客户端连接的是哪一个Zookeeper服务器,其看到的服务器端的数据模型都是一致的
  • 可靠性:一旦服务器成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态将会被一致保留下来。除非有另外一个事务对其更改
  • 实时性:一旦事务被成功应用,那么客户端就能立刻从服务器上获取变更后的新数据,Zookeeper仅仅能保证在一段时间内,客户端最终一定能从服务器端读取最新的数据状态
    这里写图片描述
    Zookeeper会维护一个具有层次关系的数据结构,非常类似于一个linux的文件系统

每个子目录想如one被称作为znode,这个znode是被它所在的路径唯一标识,如该节点被标识为/one
znode可以有自己诶单目录,并且每个znode可以存储数据,但是EPHEMERAL类型的目录节点不能有子节点目录
znode是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
znode可以是临时节点,一旦创建这个znode的客户端与服务器失去联系,这个znode也将自动删除。Zookeeper的客户端和服务器端采用长连接方式,每个客户端和服务器端通过心跳来保持连接,这个连接状态称为session,如果znode是临时节点,这个session失效,znode也就删除了。
znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端

Zookeeper根据其身份特性分为三种:Leader Follower Observer。其中Follower和Observer又统称为Learner(学习者)
Leader:负责客户端的writer类型请求
Follower:负责客户端的reader类型请求,参与leader选举等
Observer:特殊的Follower 其可以接受客户端reader请求,但不参与选举

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章