文章 62
浏览 15135
zookeeper初体验

zookeeper初体验

image.png

前言

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

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

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

一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能

zk 数据结构

zookeeper 提供的名称空间非常类似于标准文件系统,key-value 的形式存储。名称 key 由斜线 / 分割的一系列路径元素,zookeeper 名称空间中的每个节点都是由一个路径标识。

image.png

相关 CAP 理论

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

  • 一致性 :在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。
  • 可用性: 每次请求都能获取到正确的响应,但是不保证获取的数据为最新数据。
  • 分区容错性: 分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

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

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

安装 zk

zookeeper 官网: https://zookeeper.apache.org/releases.html

1.下载压缩包

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

2. 解压

tar -zxvf zookeeper-3.4.9.tar.gz

3. 配置 conf 文件

建议备份原先的 conf 配置文件,再新文件上更改

# zookeeper内部的基本单位,单位是毫秒,这个表示一个tickTime为2000毫秒,在zookeeper的其他配置中,都是基于tickTime来做换算的
tickTime=2000

#集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
initLimit=10

#syncLimit:集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5

# 数据存放文件夹,zookeeper运行过程中有两个数据需要存储,一个是快照数据(持久化数据)另一个是事务日志
dataDir=/tmp/zookeeper

# 客户端访问端口
clientPort=2181

4.配置环境变量

  1. cd /etc/profile
  2. export ZOOKEEPER_HOME=/opt/zookeeper/zookeeper-3.4.9
    export PATH=ZOOKEEPER_HOME/bin:PATH
    export PATH
  3. source profile

5. 启动服务

cd 到 zk 安装目录的 bin 目录

 sh zkServer.sh start  启动zk

sh zkServer.sh status 查看状态 

6. 客户端连接

sh zkCli.sh

image.png

zk 基本命令

image.png

  • create
    create /node xxxxx. 简单创建一个节点. xxxx 代表 data. path:/node
  • delete
  • addWatch 添加监听器
  • addauth 授权
  • get
  • .........

addauth

用户授权

create /zknode xxx auth:user1:pass1:rw
get /zknode   

如果没用 user1:pass1 该用户登录,当我们 get 将会出现权限异常

image.png

当使用

addauth digest user1:pass1
get /zknode

image.png

ip 授权

create /zknode xxx ip:127.0.0.1:rw
get /zknode   


标题:zookeeper初体验
作者:xiaohugg
地址:https://xiaohugg.top/articles/2023/07/20/1689864102269.html

人民有信仰 民族有希望 国家有力量