初识Zookeeper

目录

  1. Zookeeper 介绍
  2. Zookeeper 的基本概念
  3. 为什么要选择 Zookeeper

1. Zookeeper 介绍

Zookeeper 是一个开源代码的分布式协调服务,由知名互联网公司雅虎创建,是 Google Chubby 的开源实现。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

Zookeeper 功能

Zookeeper 是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,master 选举,分布式锁和分布式队列等功能。


2. Zookeeper 的基本概念

集群角色

Zookeeper 没有沿用传统的 Master/Slave 概念,而是引入了 Leader,Follower 和 Observer 三种角色。Zookeeper 集群中的所有机器通过一个 Leader 选举过程来选定一台被称为 “Leader” 的机器,Leader 服务器为客户端提供读和写服务。除 Leader 外,其他机器包括 Follower 和 Observer。Follower 和 Observer 都能提供读服务,唯一区别在于,Observer 机器不参加 Leader 选举过程,也不参加写操作的“过半写成功”策略,因此 Observer 可以在不影响写性能情况下提升集群的读性能。


会话

Session 是指客户端会话,在了解会话之前,先来了解一下客户端连接。在 Zookeeper 中,一个客户端连接是指客户端和服务器之间的一个 Tcp 长连接。Zookeeper 对外的服务端口默认是 2181,客户端启动的时候,首先会与服务器建立一个 Tcp 连接,从第一次连接建立开始,客户端会话生命周期就开始来,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 Zookeeper 服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的 Watch 事件通知。Session 的 sessionTimeout 值用来设置一个客户端会话的超时时间。当由于服务器压力太大,网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在 sessionTimeout 规定的时间内能够连接上任意一台服务器,那么之前创建的会话仍然有效。


数据节点

在谈到分布式的时候,我们通常说的“节点”是指组成集群的每一台机器。然而,在 Zookeeper 中,“节点”分为两类,第一类同样是指构成集群的机器,我们称之为机器节点;第二类则是指数据模型中的数据单元,我们称之为数据节点–ZNode。Zookeeper 将所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割的路径,就是一个 Znode,例如 /foo/path1。每个 ZNode 上都会保存自己的数据内容,同时还会保存一系列属性信息。


版本

在前面提到,Zookeeper 的每个 Znode 上都会存储数据,对应每个 Znode,Zookeeper 都会维护一个叫作 Stat 的数据结构,Stat 中记录了这个 Znode 的三个数据版本,分别是 version(当前 Znode 版本)、cversion(当前 Znode 子节点的版本)和 aversion(当前 Znode 的 ACL 版本)。


Watcher

Watcher(事件监听器),是 Zookeeper 中的一个很重要的特性。Zookeeper 允许用户在指定节点上注册一些 Watcher,并且在一些特定事件触发的时候,Zookeeper 服务端会将事件通知到感兴趣的客户端上去,该机制是 Zookeeper 实现分布式协调服务的重要特性。


ACL

Zookeeper 采用 ACL(Access Control Lists) 策略来进行权限控制,类似于 UNIX文件系统的权限控制。Zookeeper 定义了如下 5 种权限。

  • CREATE: 创建子节点的权限
  • READ: 获取节点数据和子节点列表的权限
  • WRITE: 更新节点数据的权限
  • DELETE: 删除子节点的权限
  • ADMIN: 设置节点 ACL 的权限

其中需要注意的是:CREATE 和 DELETE 这两种权限都是针对子节点的权限控制。


3. 为什么要选择 Zookeeper

随着分布式框架的出现,越来越多的分布式应用会面临数据一致性问题,很遗憾的是,在解决分布式数据一致性上,除了 Zookeeper 之外,目前还没有一个成熟稳定且被大规模应用的解决方案。Zookeeper 无论从性能、易用性、还是稳定性来说,都已经达到了一个工业级产品的标准。

其次 Zookeeper 是开放源码的,另外,Zookeeper 是免费的,这点对于小公司,尤其是初创团队来说,无疑是非常重要的。

最后,Zookeeper 已经得到了广泛的应用。诸如 Hadoop,HBase,Strom 和 Solr 等越来越多的大型分布式项目都已经将 Zookeeper 作为其核心组件,用于分布式协调。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值