测试理论--zookeeper相关

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: ZooKeeper相关内容讲解与基本操作方法

1. 什么是ZooKeeper?


  • 是Google的Chubby的一个开源实现版
  • ZooKeeper
  • 一个主从架构的分布式框架、开源的
  • 对其他的分布式框架的提供协调服务(service)
  • Zookeeper 作为一个分布式的服务框架
  • 它提供类似于linux文件系统(有目录节点树)的简版文件系统来存储数据
  • Zookeeper 维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理
  • 主要用来解决分布式集群中应用系统的一致性问题


2. 为什么要用ZooKeeper


  • ZooKeeper简单易用,能够很好的解决分布式框架在运行中,出现的各种协调问题。
  • 比如集群master主备切换、节点的上下线感知、统一命名服务、状态同步服务、集群管理、分布式应用配置管理等等


3. ZooKeeper应用初体验


  • ZooKeeper集群也是主从架构的:leader为主;follower为从
  • 通过客户端操作ZooKeeper集群,有两种类型的客户端
  • ①命令行zkCli
  • ②Java编程
  • zkCli命令行
  • # 启动ZooKeeper集群;在ZooKeeper集群中的每个节点执行此命令

           ${ZK_HOME}/bin/zkServer.sh start

  • # 停止ZooKeeper集群(每个节点执行以下命令)

           ${ZK_HOME}/bin/zkServer.sh stop

  • # 查看集群状态(每个节点执行此命令)

           ${ZK_HOME}/bin/zkServer.sh status

  • # 使用ZooKeeper自带的脚本,连接ZooKeeper的服务器

           zkCli.sh -server node01:2181,node02:2181,node03:2181

           2181:默认端口,-server选项后指定参数node01:2181,node02:2181,node03:2181,客户端随机的连接三个服务器中的一个

  • 客户端发出对ZooKeeper集群的读写请求
  • ZooKeeper集群中有类似于linux文件系统的一个简版的文件系统;目录结构也是树状结构(bi 目录树)

image.png

  • 重要技巧:不会就喊help
  • 还记得其它框架中help的使用吗?

image.png

  • 常用命令
  • #查看ZooKeeper根目录/下的文件列表 ls /
  • #创建节点,并指定数据 create /kkb kkb
  • #获得某节点的数据 get /kkb
  • #修改节点的数据 set /kkb kkb01
  • #删除节点 delete /kkb
  • Java API编程


4.基本概念和操作


4.1 分布式通信有几种方式


  • 1、直接通过网络连接的方式进行通信
  • 2、通过共享存储的方式,来进行通信或数据的传输(ZooKeeper使用第二种方式,提供分布式协调服务)


4.2 ZooKeeper数据结构(ZooKeeper=①简版文件系统(Znode)+②原语+③通知机制(Watcher)。)


  • ZK文件系统
  • 基于类似于文件系统的目录节点树方式的数据存储
  • 原语
  • 可简单理解成ZooKeeper的基本的命令
  • Watcher(监听器)


4.3 数据节点ZNode


4.3.1 什么是ZNode(Zookeeper的目录有专门的称呼:ZNode)


  • ZNode分为四类:
  • 1、持久的无序节点 create
  • 2、持久的有序节点 create -s
  • 3、临时的无序节点 create -e
  • 4、临时的有序节点 create -s -e


4.3.2 持久节点:类比,文件夹


  • # 创建节点/zk_test,并设置数据my_data
  • create /zk_test my_data
  • # 持久节点,只有显示的调用命令,才能删除永久节点
  • delete /zk_test


4.3.3 临时节点:临时节点的生命周期跟客户端会话session绑定,一旦会话失效,临时节点被删除。


  • # client1上创建临时节点
  • create -e /tmp tmpdata
  • # client2上查看client1创建的临时节点
  • ls /
  • # client1断开连接
  • close
  • # client2上观察现象,发现临时节点被自动删除
  • ls /


4.3.4 有序节点:


  • ZNode也可以设置为有序节点
  • 为什么设计临时节点?
  • 防止多个不同的客户端在同一目录下,创建同名ZNode,由于重名,导致创建失败
  • 如何创建临时节点
  • 命令行使用-s选项:create -s /kkb kkb
  • Curator编程,可添加一个特殊的属性:CreateMode.EPHEMERAL

image.png

  • 一旦节点被标记上这个属性,那么在这个节点被创建时,ZooKeeper 就会自动在其节点后面追加上一个整型数字
  • 这个整数是一个由父节点维护的自增数字。
  • 提供了创建唯一名字的ZNode的方式
  • # 创建持久、有序节点
  • create -s /test01 test01-data


4.4会话(Session)


4.4.1 什么是会话


  • 客户端要对ZooKeeper集群进行读写操作,得先与某一ZooKeeper服务器建立TCP长连接;此TCP长连接称为建立一个会话Session。
  • 每个会话有超时时间:SessionTimeout
  • 当客户端与集群建立会话后,如果超过SessionTimeout时间,两者间没有通信,会话超时


4.4.2 会话的特点


  • 客户端打开一个Session中的请求以FIFO(先进先出)的顺序执行;
  • 如客户端client01与集群建立会话后,先发出一个create请求,再发出一个get请求;
  • 那么在执行时,会先执行create,再执行get
  • 若打开两个Session,无法保证Session间,请求FIFO执行;只能保证一个session中请求的FIFO


4.4.3 会话的生命周期


  • 会话的生命周期
  • 未建立连接
  • 正在连接
  • 已连接
  • 关闭连接


4.4.4 请求


  • 读写请求
  • 通过客户端向ZooKeeper集群中写数据
  • 通过客户端从ZooKeeper集群中读数据


4.5 事务zxid


  • 事务
  • 客户端的写请求,会对ZooKeeper中的数据做出更改;如增删改的操作
  • 每次写请求,会生成一次事务
  • 每个事务有一个全局唯一的事务ID,用 ZXID 表示;全局自增
  • 事务特点
  • ACID:
  • 原子性atomicity | 一致性consistency | 隔离性isolation | 持久性durability
  • ZXID结构:
  • 通常是一个64位的数字。由epoch+counter组成
  • epoch、counter各32位
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
1月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
39 1
|
1月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
41 1
|
Java Linux 数据安全/隐私保护
Linux系列——ZooKeeper的安装与测试
Linux系列——ZooKeeper的安装与测试
|
机器学习/深度学习 PyTorch Serverless
假设测试数据集test_data为随机生成的,并设置小批次。model神经网络已经训练好了,怎么用MSE来做测试
其中,model表示已经训练好的PyTorch模型,torch.rand()函数用于生成测试数据集,torch.split()函数用于将测试数据集分成小批次,model(batch)用于对小批次的输入数据进行预测,torch.cat()函数用于将所有小批次的预测值拼接在一起,最后使用mean_squared_error()函数计算均方误差。注意,在计算均方误差之前,需要将测试数据集和预测值转换为NumPy数组并将它们从GPU中移动到CPU上。
159 0
|
数据可视化 Dubbo Java
MSE 微服务测试---自动化回归最佳实践|学习笔记
快速学习 MSE 微服务测试---自动化回归最佳实践
MSE 微服务测试---自动化回归最佳实践|学习笔记
|
Java 测试技术 Apache
zookeeper集群搭建及java程序测试
下载官网:http://zookeeper.apache.org/releases.html 下载:zookeeper-3.4.8.tar.gz 安装因为资源有限,所以我在同一个服务器上面创建3个目录 server1、server2、server3 来模拟3台服务器集群。
8363 0
|
Java Linux 测试技术
|
Dubbo 应用服务中间件 微服务