大数据-什么是Zookeeper?Zookeeper的特点及节点类型

一、Zookeeper简介


Zookeeper是Apache提供的一套于用进行分布式管理和协调的框架

二、分布式存在的问题


  1. 死锁:至少有一个线程把持了资源,但是由于线程之间的相互等待,所以线程不耗费CPU
  2. 活锁:所有的线程都没有把持资源而导致资源产生了浪费。而且由于线程之间一直在调度,导致CPU一直处于被占用状态。
  3. 分布式环境下,需要引入监控和管理节点来保证服务器之间的任务调度
  4. 为了防止单一监控节点带来单点问题,所以需要引入多个监控节点
  5. 为了防止多个监控节点之间的任务调度不同,需要在其中选举出一个主监控节点
  6. 确定一套选举算法
  7. 为了防止主节点宕机而导致所有数据丢失,需要将监控节点的数据进行统一
  8. 监控节点以及服务节点的统一配置

 

三、特点


  1. Zookeeper是一个树状结构(Znode树)
  2. 树状结构(Znode树)的根节点为 /
  3. Zookeeper的每一个节点称之为是znode节点
  4. 所有的znode节点都是从根节点开始计算
  5. 每一个znode节点都必须存储数据
  6. 每一个持久的znode节点都可以挂载子节点
  7. 每一个znode节点的路径都是唯一的。所以基于这一个特点,可以做集群的统一命名服务
  8. Znode树是维系在内存中的,即每一个znode节点中的数据也是维系在内存中,这样做的目的是方便快速查找
  9. 不能利用Zookeeper存储海量数据,原因:
    1. Znode树维系在内存中,并且多个Zookeeper存储的是相同的数据造成内存的浪费;
    2. Zookeeper是做分布式的协调服务而不是做存储服务
  10. Zookeeper提供了持久化机制,持久化的目录由zoo.cfg中的dataDir属性来决定
  11. Zookeeper会为每一次的事务(增加、删除、更新)提供一个全局的递增的事务id

四、节点类型


类型

解释

PERSISTENT

持久节点

EPHEMERAL

临时节点

PERSISTENT_SEQUENTIAL

持久顺序节点

EPHEMERAL_SEQUENTIAL

临时顺序节点

五、特性总结


  1. 数据一致性:客户端不论连接到哪个Zookeeper节点上,展示给它都是同一个视图,即查询的数据都是一样的。这是Zookeeper最重要的性能
  2. 原子性:对于事务决议的更新,只能是成功或者失败两种可能,没有中间状态。 要么都更新成功,要么都不更新。即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,一定不会出现集群中部分机器应用了改事务,另外一部分没有应用的情况。
  3. 可靠性:一旦Zookeeper服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。
  4. 实时性:Zookeeper保证客户端将在非常短的时间间隔范围内获得服务器的更新信息,或者服务器失效的信息,或者指定监听事件的变化信息。(前提条件是:网络状况良好)
  5. 顺序性:如果在一台服务器上消息a在消息b前发布,则在所有服务器上消息a都将在消息b前被发布。客户端在发起请求时,都会跟一个递增的命令号,根据这个机制,Zookeeper会确保客户端执行的顺序性。底层指的是Zxid。可以通过事务log来看。
  6. 过半性:Zookeeper集群必须有半数以上的机器存活才能正常工作。因为只有满足过半性,才能满足选举机制选出leader。因为只有过半,在做事务决议时,事务才能更新。所以一般来说,zookeeper集群的数量最好是奇数个

猜你喜欢

转载自blog.csdn.net/weixin_47055922/article/details/108140798
今日推荐