545、Zookeeper详细入门教程系列 -【什么是Zookeeper】 2022.11.06

一、什么是Zookeeper

1.1 概述

在我的印象中,zookeeper是可以作为注册中心来存在的,之前的微服务架构更多的是采用Dubbo+zookeeper来搭配着使用的,因此,zookeeper它是主要服务于分布式系统。
而分布式系统的特点就是会有多个节点存在,实时感知每个节点的状态,管理每个节点就变得尤为重要。而zookeeper的出现就解决了这个问题。
从设计模式角度来理解:它是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,zookeeper就负责通知已经在zookeeper上注册的那些观察者,让他们做出相应的反应。
因此,zookeeper可以概况为:文件系统+通知机制。
工作机制:

1、服务端启动时去注册信息(创建的都是临时节点)
2、获取到当前在线服务器列表,并且注册监听
3、服务器节点下线
4、服务器节点下线事件通知
5、process重新再去获取服务器列表,并注册监听
在这里插入图片描述

1.2 特点

1、Zookeeper是设计模式是由一个领导者和多个跟随者组成的集群
2、半数原则:集群中只要有半数以上的节点存活,zookeeper集群就能正常服务
3、全局数据一致,每个server服务器保存一份相同的数据副本,client无论连接到哪个server,数据都一致
4、数据更新原子性:一次数据更新要么成功,要么失败。
5、实时性:在一定时间范围内,client能够读到最新数据。

1.3 数据结构

zookeeper的数据模型与linux文件系统很类似,整体可以看作是一棵树,每个节点称为znode,默认能够存储1Mb的数据,每个znode都可以通过其路径唯一标识:
在这里插入图片描述
而这些节点可以分为两类:临时和持久。因此一个面试题产生了:zookeeper的节点类型有哪些?

  • 临时普通节点
  • 临时有序节点
  • 持久普通节点
  • 持久有序节点

1.4 zookeeper能干啥?

zookeeper 提供的服务包括:统一命名服务,统一配置管理,统一集群管理,软负载均衡,分布式锁。

1.4.1 统一命名服务
可以理解为访问域名:www.baidu.com 的时候,这个域名下面有很多台服务器:192.168.1.100,192.168.1.101,192.168.1.102等。别人只要访问这个域名,zookeeper就会把请求转发给注册过的某个服务器上。而用户并不用去记住访问哪个ip地址,只需要知道这个域名就可以了。

1.4.2 统一配置管理
把公共的配置文件抽取出来,分发给其他系统。
配置文件同步非常常见。一般要求一个集群中,所有的节点的配置信息是一致的,比如kafka集群,对配置文件修改后,希望能够快速同步到各个配置上。

基于zookeeper实现统一配置管理

1.4.3 统一集群管理

1)分布式环境中,实时掌握每个节点的状态是必要的,可根据节点实时状态进行调整。

zookeeper 可以实现实时监控节点状态变化。

可将节点信息写入zookeeper上的一个Znode
监听这个znode可获取它的实时状态变化。

1.4.4 软负载均衡
再zookeeper中记录每台服务器的访问数,让访问最少的服务器去处理最新的客户端请求。

1.4.5 分布式锁
如果有a、b、c多个客户端去抢一个zookeeper分布式锁。原理是这样的:

刚访问 /lock 锁节点的时候,大家都上来直接创建一个接一个的有序节点。例如a系统创建了001节点。b系统创建了002节点,c系统创建了003节点。
系统拿到所有的节点后,会比较自己的节点是不是最小的,如果是,则得到锁,如果不是,就对上个节点加监听器,监视它。
只要上一个节点释放锁,自己就排到前面去了,相当于一个排队机制。

用临时节点 第一个用意:如果某个客户端创建临时顺序节点之后,不小心自己宕机了也没关系,zookeeper感知到那个客户端宕机,会自动删除对应的临时顺序节点,相当于自动释放锁,或者是自动取消自己的排队。

二、zookeeper安装

2.1 本地模式安装部署

1、步骤:

配置修改:conf下的zoo_sample.cfg修改为zoo.cfg
在zookeeper目录下创建dataDir文件夹,存放数据的存储目录。
在zookeeper conf 的zoo.cfg下面添加数据存放路径:

dataDir=/opt/module/zookeeper-3.5.7/zkData
  • 启动
[root@hadoop101 zookeeper-3.5.7]# bin/zkServer.sh start
  • 查看状态
[root@hadoop101 zookeeper-3.5.7]# bin/zkServer.sh status
  • 启动客户端 连接指定的host的zk服务
root@hadoop101 zookeeper-3.5.7]# bin/zkCli.sh -server host:port
  • 停止
[root@hadoop101 zookeeper-3.5.7]# bin/zkServer.sh stop

2.2 配置参数解读

1)tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。
(session的最小超时时间是2*tickTime)

2)initLimit =10:LF初始通信时限
集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

3)syncLimit =5:LF同步通信时限
集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

4)dataDir:数据文件目录+数据持久化路径
主要用于保存Zookeeper中的数据。

5)clientPort =2181:客户端连接端口
监听客户端连接的端口

三、参考链接

[01] 一文入门Zookeeper

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
zookeeper-3.4.5-cdh5.16.2.tar.gz 是一个压缩文件,其中包含的是 ZooKeeper 分布式协调服务的安装包。ZooKeeper 是一个开源的分布式应用程序协调服务,它为分布式系统提供了高度可靠的协调功能。 在这个压缩文件中,"zookeeper-3.4.5" 表示 ZooKeeper 的版本号为 3.4.5,而 "cdh5.16.2" 则表示此版本是基于 Cloudera 发行版 5.16.2。Cloudera 是一个提供基于 Apache Hadoop 的大数据解决方案的公司,他们针对 ZooKeeper 进行了一些修改和适配,以便更好地与其它 Cloudera 软件产品集成。 .tar.gz 是一个常见的压缩格式,通常用于在 Linux 系统中打包和分发文件。使用该格式,文件被打包成一个.tar 文件,然后使用 gzip 压缩算法进行压缩,最终生成一个.tar.gz 文件。 为了使用这个安装包,我们可以按照以下步骤进行操作: 1. 首先,我们需要解压缩.tar.gz 文件。可以使用命令 "tar -zxvf zookeeper-3.4.5-cdh5.16.2.tar.gz" 解压缩该文件。执行完该命令后,会生成一个目录,其中包含了 ZooKeeper 安装包的所有文件。 2. 进入解压后的目录,在其中可以找到 ZooKeeper 的配置文件、示例配置文件和一些其他的脚本文件。 3. 根据自己的需求,修改配置文件。一般需要修改的配置包括 ZooKeeper 服务器集群的地址和端口,以及一些日志和存储文件的路径。 4. 配置完毕后,可以启动 ZooKeeper 服务器。通过运行脚本文件 "bin/zkServer.sh",以指定的模式(例如单机模式、主从模式等)启动服务器。 5. 一旦服务器启动,您就可以使用 ZooKeeper 客户端与其进行交互了。客户端提供了一组命令,可以帮助您管理分布式系统中的节点和数据。 总之,zookeeper-3.4.5-cdh5.16.2.tar.gz 是一个用于安装和部署 ZooKeeper 的文件压缩包,通过解压缩、配置和启动等步骤,您可以在您的分布式系统中使用 ZooKeeper 提供的协调功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值