(一) Zookeeper入门篇之详细介绍与安装

1. 介绍

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

它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper = 文件系统 + 通知机制

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

2. 特点

在这里插入图片描述

  1. Zookeerper: 一个领导者 (Leader),多个跟随者(follower)组成的集群。
  2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。
  3. 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
  4. 更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。
  5. 数据更新原子性:一次数据更新要么成功,要么失败。(事务特性)
  6. 实时性:在一定时间范围内,Client能读取到最新数据。(同步数据时间快,数据量小)

3. 数据结构

Zookeeper数据模型的结构与Unix(包括Linux)文件系统很类似,整体可以看作是一棵树,每个节点称作一个ZNode。每一个ZNode默认能存储1MB的数据,每个ZNode都可以通过其路径唯一标识。
在这里插入图片描述

4. 应用场景

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

4.1 统一命名服务

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

4.2 统一配置管理

配置管理可交由Zookeeper实现。

  1. 可将配置信息写入Zookeeper上的一个Znode。
  2. 各个客户端服务器监听这个Znode。
  3. 一旦Znode的数据被修改,ZooKeeper将通知各个客户端服务器。
    在这里插入图片描述

4.3 统一集群管理

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

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

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

  1. 可将节点信息写入ZooKeeper上的一个Znode。
  2. 监听这个Znode可获取他的实时状态变化。

4.4 分布式锁

有了 zookeeper 的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。

对于第一类,我们将 zookeeper 上的一个 znode 看作是一把锁,通过 createznode 的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的distribute_lock 节点就释放出锁。

对于第二类, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master 一样,编号最小的获得锁,用完删除,依次方便。
在这里插入图片描述

4.5 软负载均衡

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

5. Zookeeper安装

Zookeeper本地模式(单机)安装

1. 安装前准备
(1)安装Jdk
(2)拷贝Zookeeper安装包到Linux系统下
(3)解压到指定目录
# tar -zxvf zookeeper-3.6.2-bin.tar.gz
在这里插入图片描述
2.配置修改
(1)将/opt/module/zookeeper-3.6.2-bin/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;
# mv zoo_sample.cfg zoo.cfg
(2)打开zoo.cfg文件,修改dataDir路径:
# vim zoo.cfg
修改如下内容:
dataDir=/opt/module/zookeeper-3.6.2-bin/zkData
在这里插入图片描述

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

3.操作Zookeeper

  1. 启动Zookeeper
    在这里插入图片描述
    在这里插入图片描述

  2. 查看进程是否启动
    在这里插入图片描述

在这里插入图片描述

  1. 查看状态
    在这里插入图片描述
    Mode: standalone 表示单机模式。

  2. 启动客户端
    在这里插入图片描述
    启动成功
    在这里插入图片描述

  3. 退出客户端
    [zk: localhost:2181(CONNECTED) 0] quit
    在这里插入图片描述

  4. 停止Zookeeper
    在这里插入图片描述

(二) Zookeeper内部原理之选举机制、Stat结构体与监听器原理

(三) Zookeeper实战篇之集群部署与客户端命令行操作

Docker部署Zookeeper集群 详细步骤

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxg45

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值