Zookeeper学习笔记-day01

入门简介

1. Zookeeper是什么?

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

从设计模式来理解

Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式

Zookeeper = 文件系统 + 通知机制

2. Zookeeper能干嘛?

  1. 命名服务
  2. 配置维护
  3. 集群管理
  4. 分布式消息同步和协调机制
  5. 负载均衡
  6. 对Dubbo的支持

Zookeeper提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型,作为分布式系统的沟通调度桥梁

3. Zookeeper去哪下?

Zookeeper学习笔记-day01

4. Zookeeper怎么玩?

  1. 统一命名服务(Name Service,如Dubbo服务注册中心)
  2. 配置管理(Confuguration Management,如淘宝开源配置管理框架Diamond)
  3. 集群管理(Group Membership,如Hadoop分布式集群管理)
  4. Java操作API

安装配置

1. Linux下安装

  1. 官网下载好安装包,并将其移动到linux系统的文件夹中(我是新建了一个zookeeper文件夹)

  2. 将其解压到当前目录下 输入命令tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz

  3. 进入conf文件夹,拷贝zoo_sample.cfg改为zoo.cfg 输入命令cp zoo_sample.cfg zoo.cfg

  4. zoo.cgf解读,见下图 输入命令vim zoo.cfg

    变量名 中文 解释
    tickTime 通信心跳时间 服务器之间或客户端与服务器之间维持心跳的时间间隔,每个tickTime时间就会发送一个心跳,时间单位为毫秒
    initLimit 初始通信时限 集群中的follower跟随服务器(F)与leader领导者服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量),用它限定集群中Zookeeper服务器连接到Leader的时限
    syncLimit LF同步通信时限 集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer
    dataDir 数据存放目录
    clientPort 端口号
  5. 开启服务 + 客户端连接

    启动服务 ./zkServer.sh start

    检查启动状态 ps -ef|grep zookeeper

    打开连接 ./zkCli.sh

    退出连接 quit

    关闭服务 ./zkServer.sh stop