Zookeeper学习笔记-day01
入门简介
1. Zookeeper是什么?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
从设计模式来理解
Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式
Zookeeper = 文件系统 + 通知机制
2. Zookeeper能干嘛?
- 命名服务
- 配置维护
- 集群管理
- 分布式消息同步和协调机制
- 负载均衡
- 对Dubbo的支持
Zookeeper提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型,作为分布式系统的沟通调度桥梁
3. Zookeeper去哪下?
4. Zookeeper怎么玩?
- 统一命名服务(Name Service,如Dubbo服务注册中心)
- 配置管理(Confuguration Management,如淘宝开源配置管理框架Diamond)
- 集群管理(Group Membership,如Hadoop分布式集群管理)
- Java操作API
安装配置
1. Linux下安装
-
官网下载好安装包,并将其移动到linux系统的文件夹中(我是新建了一个zookeeper文件夹)
-
将其解压到当前目录下
输入命令tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
-
进入conf文件夹,拷贝zoo_sample.cfg改为zoo.cfg
输入命令cp zoo_sample.cfg zoo.cfg
-
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 端口号 略 -
开启服务 + 客户端连接
启动服务
./zkServer.sh start
检查启动状态
ps -ef|grep zookeeper
打开连接
./zkCli.sh
退出连接
quit
关闭服务
./zkServer.sh stop