ZooKeeper

ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。

ZooKeeper 的架构通过冗余服务实现高可用性。

Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

zookeeper 数据结构

zookkeeper 提供的名称空间非常类似于标准文件系统,key-value 的形式存储。

名称 key 由斜线 / 分割的一系列路径元素,zookeeper 名称空间中的每个节点都是由一个路径标识。
在这里插入图片描述

相关 CAP 理论

CAP 理论指出对于一个分布式计算系统来说,不可能同时满足以下三点:

一致性:在分布式环境中,数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。

**可用性:**每次请求都能获取到正确的响应,但是不保证获取的数据为最新数据。

**分区容错性:**分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

在这三个基本需求中,最多只能同时满足其中的两项,P 是必须的,因此只能在 CP 和 AP 中选择,zookeeper 保证的是 CP,对比 spring cloud 系统中的注册中心 eruka 实现的是 AP。
在这里插入图片描述

BASE 理论

BASE 是 Basically Available(基本可用)、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 三个短语的缩写。

  • **基本可用:**在分布式系统出现故障,允许损失部分可用性(服务降级、页面降级)。

  • **软状态:**允许分布式系统出现中间状态。而且中间状态不影响系统的可用性。这里的中间状态是指不同的 data replication(数据备份节点)之间的数据更新可以出现延时的最终一致性。

  • **最终一致性:**data replications 经过一段时间达到一致性。

BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

**zookeeper 官网:**https://zookeeper.apache.org/

Windows 下安装

https://zookeeper.apache.org/releases.html#download

下载bin文件,不要source文件
在这里插入图片描述
目录下新建data和log文件夹
在这里插入图片描述
将 conf 目录下的 zoo_sample.cfg 文件,复制一份,重命名为 zoo.cfg:

在这里插入图片描述
修改 zoo.cfg 配置文件,将 dataDir=/tmp/zookeeper 修改成 zookeeper 安装目录所在的 data 文件夹,再添加一条添加数据日志的配置(需要根据自己的安装路径修改)。
在这里插入图片描述
双击 zkServer.cmd 启动程序:
在这里插入图片描述
在这里插入图片描述
出现ZooKeeper audit is disabled.

修改zkServer.cmd 添加 “-Dzookeeper.audit.enable=true”

在这里插入图片描述
在这里插入图片描述
双击zkCli.cmd 启动客户端
在这里插入图片描述
出现 Welcome to Zookeeper!,表示我们成功启动客户端。

显示帮助
在这里插入图片描述

数据模型znode

zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。

整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。

进入 zookeeper 安装的 bin 目录,通过sh zkCli.sh打开命令行终端,执行 “ls /” 命令显示:

$ ls /
$ ls /zookeeper
$ ls /zookeeper/quota

在这里插入图片描述

我们直观的看到此时存储的数据在根目录下存在zookeeper节点,zookeeper 节点下存在 quota 节点 和config节点。

在这里插入图片描述

create –e /lyh 123:创建一个lyh节点,值为123

在这里插入图片描述
get /lyh:获取/lyh节点的值
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐