Zookeeper(一)——入门与安装

目录

概述

特点

数据结构

应用场景

统一命名服务

统一配置管理

统一集群管理

服务器节点动态上下线

软负载均衡

本地安装

安装步骤

配置参数解读


概述

Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。

        Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架(一个人在干活一个人在监工),它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

 Zookeeper=文件系统+通知机制

        文件系统是用来存储数据的,这里存储的是服务器各种上线信息,一上线就有对应的记录。不上线就没有记录。通知机制就是说任何客户端都可以提前跟我注册,客户端询问某某服务器在不在线,然后zookeeper通知到客户端。

特点

上面一些是服务器,上面一些是zoo keeper客户端,客户端和服务端可以进行交互通信。

  • Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  • 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。
  • 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
  • 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行(谁先来的先处理谁)。
  • 数据更新原子性,一次数据更新要么成功,要么失败。
  • 实时性,在一定时间范围内,Client能读到最新数据。当第一个客户端往服务器中写入了数据,那其他的节点什么时候能拿到数据呢?Zookeeper有一个同步数据的过程,且时间非常快,因为每个节点存储的数据量非常小,所以同步的快。

数据结构

        ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个
节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过
其路径唯一标识。不可以用zookeeper存储海量的数据,他只适合存储一些简单的配置信息,数据量要在1M以下。

应用场景

        Zookeeper提供的服务包括:统一命名服务、 统一配置管理、统一集群管理、 服务器节点动态上下线、软负载均衡等。

统一命名服务

        在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。 例如:IP不容易记住,而域名容易记住。

        在zookeeper集群当中的根目录下,有一个service文件夹,下面有一个域名,在这个域名下就会存储着成百上千台服务器,当客户端进行访问的时候,只需要记住域名就可以了,Zookeeper就可以帮助我们去找去访问哪台服务器,他会根据负载情况进行分配,哪怕后台那某一个服务器挂掉也不影响域名。

统一配置管理

  • 分布式环境下,配置文件同步非常常见。

        1.一般要求一个集群中,所有节点的配置信息是一致的,比如 Kafka 集群。

        2.对配置文件修改后,希望能够快速同步到各个 节点上。

  • 配置管理可交由ZooKeeper实现。

        1.可将配置信息写入ZooKeeper上的一个Znode。

        2.个客户端服务器监听这个Znode。

        3.一旦Znode中的数据被修改,ZooKeeper将通知各个客户端服务器。

        只要configuration目录下的内容发生改变,那么第一时间就会通知客户端,然后客户端就会更新自己的配置文件。

统一集群管理

  • 分布式环境中,实时掌握每个节点的状态是必要的。

        1.可根据节点实时状态做出一些调整。

  • ZooKeeper可以实现实时监控节点状态变化

        1.可将节点信息写入ZooKeeper上的一个ZNode。

        2.监听这个ZNode可获取它的实时状态变化

        客户端跟GroupManager进行注册,相当于在这个节点有一个目录,那么在这个目录里面可以放着这个客户端相关的运行信息,比如何时上线,上线状态等,都可以写入到这个节点上。别人监听这个节点状态就可以收到这个信息,然后做出其他的操作,比如,运维可以监控这些节点是否好坏,如果运行话的话可以将它卸掉。

        同时客户端还可以监控别人,比如客户端1还可以监控客户端2的上线状态好坏,然后再决定自己是否上线。相当于把所有的客户端的相关信息。都注册上之后,进行统一的集群管理,任何一个进程挂掉都可以看得到。

服务器节点动态上下线

软负载均衡

在Zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求

本地安装

安装步骤

将压缩文件传到linux系统/opt目录下并解压,改名

bin目录下放着框架相关的启动停止等一些脚本,或者一些系统命令

conf目录存储配置文件,docs存储一些文档,lib存储一些依赖文件和jar包

对zookeeper进行配置需要进入conf修改zoo_sample.cfg

创建自己的目录存储快照文件

随后更改配置文件中的dataDir

先启动服务端

然后再启动客户端访问

 

查看zookeeper状态

配置修改

(1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;

                [atguigu@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg

(2)打开 zoo.cfg 文件,修改 dataDir 路径:

                [atguigu@hadoop102 zookeeper-3.5.7]$ vim zoo.cfg

修改如下内容:         

                dataDir=/opt/module/zookeeper-3.5.7/zkData

(3)在/opt/module/zookeeper-3.5.7/这个目录上创建 zkData 文件夹

                [atguigu@hadoop102 zookeeper-3.5.7]$ mkdir zkData

操作 Zookeeper

(1)启动 Zookeeper

        [atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start

(2)查看进程是否启动

        [atguigu@hadoop102 zookeeper-3.5.7]$ jps

        4020 Jps

        4001 QuorumPeerMain

(3)查看状态

        [atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh status

        ZooKeeper JMX enabled by default

        Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg

        Mode: standalone

(4)启动客户端

        [atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh

(5)退出客户端:

         [zk: localhost:2181(CONNECTED) 0] quit

(6)停止 Zookeeper

        [atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh stop

配置参数解读

1)tickTime = 2000:通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒,周期性的发送信息

2)initLimit = 10:LF初始通信时限 

10表示10个心跳,如果在初始化的时候在20s内还没有建立相关链接,那这次通信就失败了

3)syncLimit = 5:LF同步通信时限

两者一旦建立好链接之后,那下次在连接的视乎最大通信时限就是  5*2000ms

4)dataDir:保存Zookeeper中的数据

注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。

5)clientPort = 2181:客户端连接端口,通常不做修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值