03_Zookeeper基本数据模型及基本命令操作
【Zookeeper基本数据模型及注意点】
* zk的数据模型可以类比为Linux的文件目录,是一种树状结构,如:/dubbo/com.service.DemoService/provider....
* 每一个节点都称之为znode,它可以有子节点,也可以有数据。
* 每个节点分为临时节点和永久节点,临时节点在客户端断开连接后消失。
* 每个zk节点都有各自的版本号,可以通过命令行来显示节点信息
* 每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)。
* 删除/修改过时节点,版本号不匹配会报错。
* 每个zk节点存储的数据不宜过大,不超过几k。
* 节点可以设置ACL,可以通过权限来限制用户的访问。
【ZK特性——session基本原理】
* 客户端和服务端之间的连接存在会话
* 每个会话都可以设置一个超时时间
* 心跳结束,Session则过期(客户端会定时向服务端发送心跳指令)
* Session过期,则临时节点Znode会被抛弃
* 心跳机制:客户端向服务端的ping包请求
【Zookeeper数据模型基本操作】
【 zkServer.sh 相关 】
[ 启动zkServer ]
//进入zk的bin目录:cd /zookeeper-3.4.8/bin
./zkServer.sh start
[ 停止zkServer ]
./zkServer.sh stop
[ 重启zkServer ]
./zkServer.sh restart
[ 查看zkServer状态 ]
./zkServer.sh status
【zkCli.sh相关】
zkCli.sh 使用的基本格式
//-timeout:表示客户端向zk服务器发送心跳的时间间隔,单位为毫秒
//-r:表示客户端以只读模式连接
//-server:指定指定zk服务器的IP与端口,zk默认的客户端端口为2181
zkCli.sh -timeout -r -server ip:port
[ zkCli连接本地默认的zkServer ]
./zkCli.sh
[ zkCli连接远程的zkServer ]
./zkCli.sh -timeout -server .xxx.x.xxx:
【创建Znode——create命令】
create [-s] [-e] path data acl
使用create命令,可以创建一个znode节点,其中-s或-e分别指定节点的特性,顺序或临时节点,若不指定,则表示持久节点,acl用来进行权限控制。
[示例1:create创建永久节点]
[ 示例2:create创建顺序节点 ]
create -s higginA
[ 示例3:create创建临时节点 ]
create -e /higginB
使用quit指令退出客户端
再次启动zk客户端连接,查看发现对应的higginB节点已经被删除
[ 注意 ]
直接创建路径,不创建节点,无法成功创建路径,如下所示:
【 读取节点 】
与读取相关的命令有ls 和 get命令,
ls:可以列出zk指定节点下的所有子节点,但只能查看指定节点下的第一级的所有子节点。
get:可以获取zk指定节点的数据内容和属性信息。
[ ls示例:获取根节点下的所有子节点 ]
[ get示例:获取根节点的内容和属性 ]
[ 注意:也可以用ls2查看 ]
ls2有点类似get+ls组合后的效果
【 更新节点 】
使用set命令,可以更新指定节点的数据内容
set path data [version]
data:要更新的新内容
version:表示数据版本
[ 更新higgin的数据为xixix ]
【删除节点】
使用delete命令可以删除zk上指定的节点
delete path [version]
[ 示例:删除higgin节点 ]
[ delete注意 ]
若删除的节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。
【Zookeeper的作用】
1.master节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这也是所谓的首脑模式,从而保证我们的集群是高可用的。
2.统一配置文件管理,即只需要一台服务器,就可以把相同配置文件的内容同步更新到其他所有服务器(例如修改redis的统一配置)
3.发布与订阅,类似消息队列的MQ,dubbo服务提供者会把数据存在znode上,dubbo服务消费者会订阅读取这个数据。
4.提供分布式锁,分布式环境中不同的进程之间争取资源,类似多线程中的锁。
5.数据强一致性,在集群中保证数据的强一致性,如图:
03_Zookeeper基本数据模型及基本命令操作的更多相关文章
- linux云计算集群架构学习笔记:rhel7基本命令操作
1-3-RHEL7基本命令操作 1.1Linux终端介绍 Shell提示符 Bash Shell基本语法. 1.2基本命令的使用:ls.pwd.cd. 1.3查看系统和BIOS硬件时间. 1.4 L ...
- Linux高级运维 第三章 Linux基本命令操作
3.1 Linux终端介绍.Shell提示符.Bash基本语法 3.1.1 登录LINUX终端 两种终端仿真器:1.GNOME桌面的GHOME Terminal : 2.KDE桌面的Konsole ...
- Linux基本命令操作
3.1 Linux终端介绍.Shell提示符.Bash基本语法 3.1.1 登录LINUX终端 两种终端仿真器:1.GNOME桌面的GHOME Terminal : 2.KDE桌面的Konsole ...
- 第三章 Linux基本命令操作
第三章 Linux基本命令操作 ¨ 本节所讲内容: ¨ 3.1 Linux终端介绍 Shell提示符 Bash Shell基本语法 ¨ 3.2 基本命令的使用:ls.pwd.cd.hist ...
- MySQL基本命令操作及数据库基本概念
MySQL基本命令操作及数据库基本概念 1.数据库的基本概念 2.主流数据库介绍 3.关系型非关系型数据库介绍 4.Mysql 安装方法 5.Mysql 基本操作命令 1.数据库的基本概念: 数据库的 ...
- Redis(三)Redis基本命令操作与API
一Redis 连接 Redis 连接命令主要是用于连接 redis 服务. 实例 以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行: redis 127.0.0.1: ...
- 追溯了解Ubuntu之------基本命令操作(叁)
在使用Ubuntu中的一些基本命令与Linux中是有区别的: 1. 查看Ubuntu系统位数:uname -ar 或 getconf LONG_BIT 2. 获取Ubu ...
- H3CNE实验:Comware基本命令操作
第1步:Comware命令视图及切换操作 <H3C>system-view System View: return to User View with Ctrl+Z. [H3C]quit ...
- 【Linux】基本命令操作
一.用户操作 1.新增用户 useradd -u 1101 -g zte -d /home/xhs -m xhs --其中,1101,为用户ID,尽量使用500以上的 zte,为用户组 /home/x ...
随机推荐
- vue-cli 3.5 解决 typescript cannot find file 问题。
版本: "ts-loader": "^3.5.0","typescript": "^3.3.4000", "v ...
- 1. JavaScript学习笔记——JS基础
1. JavaScript基础 1.1 语法 严格区分大小写 标识符,第一个字符可以是 $,建议使用小驼峰法, 保留字.关键字.true.false.null不能作为标识符 JavaScript是用U ...
- Oracle 创建数据库卡死在85%
Oracle 创建数据库卡死在85%处理方法 1.首先用改工具,删除数据库 2.对应的目录 3.重启服务器(本次尝试有重启,在有其他数据库在跑的情况下,可以试试不重启)
- sort sorted() reverse() reversed() 的区别
sort()是可变对象(字典.列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值.sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组.字符串是不具有这些方法的 ...
- JAVA学习6:用Maven创建Spring3 MVC项目
一. 环境 spring-framework-3.2.4.RELEASE jdk1.7.0_11 Maven3.0.5 eclipse-jee-juno-SR2-win32 二. ...
- Fiddler使用三(Fiddler内置命令)
参考:http://blog.csdn.net/ohmygirl/article/details/17855031 一. Fiddler内置命令. 上一节使用Fiddler进行抓包分析中,介绍到,在w ...
- QQ游戏--捕鱼假日竞技港对抗岛自动刷贝壳辅助使用教程和下载地址
首先解压缩到D盘根目录 再进入buyujiari文件夹双击 然后打开QQ游戏,进入竞技港-->对抗岛,到达开始准备的界面 再打开 辅助.exe 360对按键精灵的一个文件会提示病毒,可不用理会 ...
- CSS box-flex属性,然后弹性盒子模型简介
今天做项目的时候发现一个css3的新属性flex 一.什么是flex 它的作用是能够按照设置好的规则来排列容器内的项目,而不必去计算每一个项目的宽度和边距.甚至是在容器的大小发生改变的时候,都可以重新 ...
- Mybatis的关联查询(一)
一对一的关联查询 一.使用resultType进行输出映射 1. 创建一个新的PO类,由于要将查询出来的属性映射到新的PO类.所有该PO类中应该有查询出来的所有列对应的属性. //定义新的PO类, ...
- java文件在没有安装jdk的windows下运行。
1.首先该工程最好是gui的,使用swing或者awt的都行. 2.使用eclipse打包jar文件. 项目名字上面点右键,选择Export,在选择java\JAR file. 选择src文件夹 ...