大数据框架之Zookeeper详解

1 简介

  1. Zookeeper是根据谷歌的论文《The Chubby Lock Service for Loosely Couple Distribute System 》所做的开源实现
  2. Zookeeper是Apache Hadoop的子组件之一,但是不仅仅支持Hadoop,还支持绝大部分的分布式集群
  3. Zookeeper是一个分布式的协调服务框架,用于解决分布式环境下的一些常见问题:集群管理、统一命名服务,信息配置管理,分布式锁等等

2 概念

2.1 zookeeper特点

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

2.2 zookeeper的角色

领导者(leader),负责进行投票的发起和决议,更新系统状态
  » 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
  » Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
  » 客户端(client),请求发起方
 在这里插入图片描述
在这里插入图片描述

3 特性总结

3.1 数据一致性

客户端不论连接到哪个Zookeeper节点上,展示给它都是同一个视图,即查询的数据都是一样的。这是Zookeeper最重要的性能

3.2 原子性

对于事务决议的更新,只能是成功或者失败两种可能,没有中间状态。 要么都更新成功,要么都不更新。即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,另外一部分没有应用的情况。

3.3 可靠性

一旦Zookeeper服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。

3.4 实时性

Zookeeper保证客户端将在非常短的时间间隔范围内获得服务器的更新信息,或者服务器失效的信息,或者指定监听事件的变化信息。(前提条件是:网络状况良好)

3.5 顺序性

如果在一台服务器上消息a在消息b前发布,则在所有服务器上消息a都将在消息b前被发布。客户端在发起请求时,都会跟一个递增的命令号,根据这个机制,Zookeeper会确保客户端执行的顺序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值