Zookeeper 学习笔记(一)

ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。
Zookeeper的Fast Fail 和 Leader选举特性大大增强了分布式集群的稳定和健壮性,并且解决了Master/Slave模式的单点故障重大隐患,这是越来越多的分布式产品如HBase、Storm(流计算)、S4(流计算)等强依赖Zookeeper的原因。
Zookeeper在分布式集群(Hadoop生态圈)中的地位越来越突出,对分布式应用的开发也提供了极大便利,这是迫切需要深入学习Zookeeper的原因。

一、zk体系结构

server端具有fast fail 特性非常健壮,无单点。当一个leader宕机,马上通过选举,启动一个server当leader,
当非leader挂掉,不超过半数server出现问题,都不会影响服务。

当一次请求过来,通过leader 处理,然后通过 原子广播到每一服务上(节点),内部有一个轻量级数据库,zk的所有信息都写到此数据库中,最终将服务端返回response。

数据模型、节点 采用类似文件系统的目录树性结构,zk node 本身携带数据。

zk的名字空间由节点znode构成,其组织方式类似于文件系统,各个节点相当于目录与文件,通过路径
作为唯一标示。

zk用于存储协调数据,如状态、配置、位置等信息。

二、 zk组成

zk 主要由2个部分组成,节点(临时、持久) 和 watche(当节点发生变化时,会通知设置了此watch的client)
watche事件,是一次性触发器,事件异步发送至观察者。

三、zk使用场景

  • 分布式应用配置管理
    发布与订阅所谓的配置管理,顾名思义就是将数据发布到zk节点上,供订阅者动态获取
    ,实现配置信息的集中式管理和动态更新,特别适合,全局性的配置信息、地址列表等

  • 命名服务
    分布式命名服务,通过调用状况的creat node api,能够很容易创建一个全局唯一的path

  • 分布式通知、协调
    通过节点的watcher的注册与异步通知机制
    方法: 不同系统都对zk上同一个znode进行watch,监听znode的变化,其中一个系统update znode,那么另一个系统能够收到通知,并作出相应的处理

  • 分布式锁
    分布式锁,这个主要得益于 zookeeper为我们保证了数据的强一致性。即用户只要完全相信每时每刻,zk集群中任意节点上的相同znode的数据时一定相同。 锁服务可以分为2类,一个是保持独占,另一个是控制时序。

  • 集群管理
    hbase master 选举则是zookeeper 经典的使用。 允许有多个master的,当一个master 宕机,zk 会启动另一个。

  • 分布式队列
    队列方面: 一种是 常规的FIFO,另一种,是等队列成员聚齐之后的才能统一按序进行,通过分布式锁来控制

你可能感兴趣的:(zookeeper)