上次在配置zookeeper分布式的时候,有个很重要的文件zoo.cfg,里面重点配置了几个信息clientPort,server.1的端口号。实际用到了2个端口号2181,2888,还有个2888这是备用的端口号。有人说zk是互联网的基石,一点都不夸张,它的作用很大。源码:https://github.com/limingios/netFuture/ 【zookeeper】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYEWiIAF-1617634961465)(https://upload-images.jianshu.io/upload_images/11223715-5be06b7734d0fe4e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXsI3GJU-1617634961476)(https://upload-images.jianshu.io/upload_images/11223715-cb8a6eeb7dc08096.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

(一)原理重申

zk本身就是一个服务端,它跟客户端直接就是一个长链接(tcp),通过的2181的端口。分布式有多个zk,它们之间的通信是通过2188,如果网络抖动的话2888也可以使用。org.apache.zookeeper.ClientCnxn是管理网络IO的模块。

  • 1.1启动zk(分布式的)
cd ~/zookeeper-3.4.10/bin
sh zkServer.sh start

  • 1.2 进入zk
sh zkCli.sh -server 192.168.69.101:2181,192.168.69.102:2181,192.168.69.103:2181

  • 1.3 zk命令

查看命令

help

(二)zookeeper服务端

  • 2.1bin 目录下常用的脚本解释

cmd是windows的,sh是linux的

  • 2.2进入 bin 目录

使用 zkServer.sh start 启动服务

  • 2.3服务状态

使用 jps 命令查看,存在 QuorumPeerMain 进程,表示 Zookeeper 已经启动

jps
sh zkServer.sh status

  • 2.4停止服务

在 bin 目录下,使用 zkServer.sh stop 停止服务

sh zkServer.sh stop
jps

(三)zookeeper客户端

  • 3.1客户端连接服务端
sh zkCli.sh -server ip:port
#如果是多个服务端
sh zkCli.sh -server ip1:port1,ip2:port2,ip3:port3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0sCPwv8c-1617634961562)(https://upload-images.jianshu.io/upload_images/11223715-ae8e023ce7a9009b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 3.2创建节点

使用 create 命令,可以创建一个 Zookeeper 节点, 如
create [-s] [-e] path data acl
其中,-s 或-e 分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl
用来进行权限控制

  • 3.2.1创建顺序节点

使用 命令创建 zk-test 顺序节点,可以看到创建的 zk-test 节点后面添加了一串数字以示区别。

 create -s /zk-test 123

  • 3.2.2创建临时节点

使用 命令创建 zk-temp 临时节点

 create -e /zk-temp 123

临时节点在客户端会话结束后,就会自动删除,下面使用 quit 命令退出客户端,在进入就没有啦。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-shS4Ft7Y-1617634961591)(https://upload-images.jianshu.io/upload_images/11223715-83398faa74c94afd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 3.2.2创建永久节点

使用 命令创建 zk-permanent 永久节点

 create /zk-permanent 123

可以看到永久节点不同于顺序节点,不会自动在后面添加一串数字。

  • 3.3读取节点

与读取相关的命令有 ls 命令和 get 命令,ls 命令可以列出 Zookeeper 指定节点下的
所有子节点,只能查看指定节点下的第一级的所有子节点;get 命令可以获取 Zookeeper
指定节点的数据内容和属性信息。其用法分别如下
ls path [watch]
get path [watch]
ls2 path [watch]
若获取根节点下面的所有子节点,使用 ls / 命令即可

1.若获取根节点下面的所有子节点,使用 ls / 命令即可
2.若想获取根节点数据内容和属性信息,使用 get / 命令即可
3.也可以使用 ls2 / 命令查看,其实ls2=ls+get
4.若要看某个的属性可以通过 get /名称

可以看到其数据内容为 123,还有其他的属性。

  • 3.4更新节点

使用 set 命令,可以更新指定节点的数据内容,用法如下
set path data [version]
其中,data 就是要更新的新内容,version 表示数据版本,如将/zk-permanent 节点的数据更新为 456,可以使用如下命令:

set /zk-permanent 456

现在 dataVersion 已经变为 1 了,表示进行了更新。

  • 3.5删除节点

使用 delete 命令可以删除 Zookeeper 上的指定节点,用法如下
delete path [version]
其中 version 也是表示数据版本,使用 delete /zk-permanent 命令即可删除/zk-permanent 节点

delete /zk-permanent

可以看到,已经成功删除/zk-permanent 节点。值得注意的是, 若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。

  • 3.5Znode结构

Stat:状态信息、版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-41cMBLLZ-1617634961609)(https://upload-images.jianshu.io/upload_images/11223715-40728c6fd18f1a76.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 3.6节点类型

2 大类、四种类型 持久、临时、持久有序、临时有序

  • 3.7顺序号

创建 znode 时设置顺序标识,znode 名称后会附加一个值
顺序号是一个单调递增的计数器,由父节点维护在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺
序号推断事件的顺序.

  • 3.8ACL(Access Control List)权限

内置的 ACL schemes :

  • 3.9Watcher

  • 3.10ZAB协议

Zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 的完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。一旦 leader 已经和多数的 follower 进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个 server 加入 zookeeper 服务中,它会在恢复模式下启动,发现 leader,并和leader 进行状态同步。待到同步结束,它也参与消息广播。

Zookeeper 服务一直维持在 Broadcast 状态,直到 leader 崩溃了或者 leader 失去了大部分的followers 支持。广播模式需要保证 proposal 被按顺序处理,因此 zk 采用了递增的事务 id 号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了 zxid。实现中 zxid 是一个 64 为的数字,它高 32 位是 epoch 用来标识 leader 关系是否改变,每次一个 leader 被选出来,它都会有一个新的 epoch。低 32 位是个递增计数。当 leader 崩溃或者 leader 失去大多数的 follower,这时候 zk 进入恢复模式,恢复模式需要重新选举出一个新的 leader,让所有的 server 都恢复到一个正确的状态。

  • 3.11Leader 选举流程
    LOOKING, FOLLOWING, LEADING, OBSERVING

PS:重点原理和基本命令。Zookeeper 是一个有上下级关系(Leader 、follower 、Observer )的集群。客户端链接 zookeeper 集群是通过 Seesion 链接(TCP 长链接)。客户端链接以后可以对节点(存储在 zookeeper 上 znode)增删改查。Znode 有四种类型:临时、临时有序、持久、持久有序对(znode)节点做增删改查时我们可以监控其动作(Watcher 机制)还可以对节点设置权限访问。

软件架构-zookeeper快速入门相关推荐

  1. zookeeper快速入门——应用(两种分布式锁)

    在<zookeeper快速入门--简介>一文中,我们介绍了zookeeper的机制.但是还是比较抽象,没有直观感受到它在分布式系统中的应用.本文我们使用一个例子,三次迭代演进,来说明Zoo ...

  2. python 操作 zookeeper 快速入门

    python 操作 zookeeper 快速入门 文章目录 python 操作 zookeeper 快速入门 什么是zookeeper python 操作 zk 快速入门 zk节点 创建节点 查询节点 ...

  3. zookeeper快速入门——部署

    zookeeper有两种运行模式:独立模式和仲裁模式.独立模式就是只运行一个Zookeeper Server,这自然没法解决服务崩溃导致系统不可用的问题.仲裁模式就是以集群的方式运行Zookeeper ...

  4. zookeeper快速入门——简介

    在几十年前,一个独立的计算机上往往部署着一套完整的应用系统.当时因为网络稳定性及速度的限制,将相关联的服务部署在一台机器上,让它们使用系统机制通信--比如管道,文件等,往往是最稳定和最高效的.然而随着 ...

  5. zookeeper快速入门,配置虚拟机ip、mac、虚拟机免密,jdk的安装与卸载

    zookeeper里的每一个节点叫znode,他们既是目录的功能也有自己的文本信息. 下面进行的集群配置并没有实现高可用效果(内存空间有限) 此次搭建要准备三台虚拟机,准备必备jar包. 虚拟机 ip ...

  6. ZooKeeper快速入门

    1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务. 名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的 ...

  7. 1分钟 Zookeeper 快速入门_windows环境

    下载zookeeper 官网链接:https://zookeeper.apache.org/ 修改conf/zoo.cfg 文件名

  8. 转:Zookeeper快速入门

    转自: http://www.cnblogs.com/sunddenly/category/620563.html 转载于:https://www.cnblogs.com/gscq073240/art ...

  9. 学习笔记:快速入门ZooKeeper技术

    学习视频:黑马程序员 ZooKeeper 视频教程,快速入门 ZooKeeper 技术 学习资料:黑马程序员 公众号提供的文档资料链接 | 提取码:dor4) 本文最后更新于 2022-04-25,若 ...

最新文章

  1. php 惩罚,【后端开辟】php能够怎样处置惩罚json串
  2. Angular中的路由配置、路由重定向、默认选中路由
  3. MFC改变static text颜色
  4. django 不包括字段 序列化器_手写一个Django序列化功能
  5. android面试service,Android面试,与Service交互方式(4)
  6. 【转】大厦将倾,互联网将如何变革传统行业(上)
  7. ubuntu使用python读串口_ubuntu16.04上Python串口编程学习1
  8. 第十届全国社会媒体处理大会 (SMP 2021) 征文通知
  9. day10 强制类型转换(更新)
  10. BlackBerry J2ME 编程指南(一)
  11. 《非暴力沟通》的优秀读后感2600字
  12. PgMP: Program Management Professional Exam Study Guide
  13. java populate_BeanUtils.populate()的用法
  14. 香橙派Zero2电视盒子开发板连接HDMI如何修改分辨率
  15. 腾讯区块链强势出击,公链的机会在哪里?
  16. 转载 loadrunner的一些问题解决
  17. DJI Mobile SDK(2):多自由度控制飞行(Virtual Stick)
  18. photoshop 打开图片 无法完成请求因为程序错误
  19. 现代密码学实验五:签名算法
  20. 谈谈“清单”应用的未来

热门文章

  1. ArchSummit深圳2016优秀演讲公布,北京站专题抢先看
  2. 滑动窗口—至多包含两个不同字符的最长子串(leetcode 159)
  3. Google、FB、Twitter国际讲师全确认,QCon上海2013火热报名中
  4. android去掉开机锁屏,android 去掉锁屏
  5. html背景图片不重叠铺满,css背景图片怎么铺满
  6. 12个球和一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球,13个呢
  7. 主成分分析与因子分析之比较及实证分析
  8. Java练习题:算法(冒泡排序)
  9. java使用 openoffice+swftools+flexpaper 在window下完成简单的文件预览
  10. [来源未知][Dp]permut