zookeeper的简介:Apache ZooKeeper是一种开源的,用于分布式应用程序的高性能的协调服务。提供一种集中式信息存储服务;数据存在内存中,类似文件系统的树形结构(文件和目录),高吞吐量和低延迟,集群高可靠;基于zookeeper可以实现分布式统一配置中心、服务注册中心,分布式锁等功能的实现;
一、zookeeper的安装:
1、1.6以上JDK(本机是1.8)
2、下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
3、解压后的conf目录下,增加配置文件zoo.cfg
tickTime : 一次心跳的时间;
dataDir:日志存放位置
clientPort:客户端的端口号
4、启动服务器:bin/zkServer.sh start
5、测试一下,客户端连接: bin/zkCli.sh -server 127.0.0.1:2181
二、zookeeper的特点
1、安装简单
2、数据结构简单
类似于文件夹的树形结构,每个目录成为Znode节点,特点在于每一个目录既可以作为父级目录,又可以作为文件存放数据
3、操作指令简单
基本操作指令(增删改查)
ls: 获取子节点
create: 在zookeeper中的某个位置创建一个节点
delete:删除节点
exists:测试节点是否存在
get data:从指定节点读取数据
set data:将数据存入指定节点
get children:查询指定节点之下所有的子节点
sync:等待数据进行同步
help:获取所有指令
例如下图:
4、有序
Zxid:在zookeeper中,每次操作都会有一个对应的zxid,类似于主键id自增
Version numbers:版本号,上文图片已提到,每次更改版本号中的一个会增加(dataVersion,cversion,aclVersion)
5、可复制,可以快速的搭建集群,保证了服务的可靠性
6、快速,从内存中读取数据,可以获得高吞吐量和低延迟数,适用于以读为主的场景,Znode的数据大小限制1M,可用于大型分布式系统
三、zookeeper 的功能
1、会话机制
1)一个客户端连接一个会话,由zk分配唯一会话id;
2)客户端以特定的时间间隔发送心跳以保持会话有效; tickTime(存在于配置文件zoo.cfg)
3)超过会话超时时间未收到客户端的心跳,则判定客户端死了;(默认2倍tickTime)
4)会话中的请求按FIFO(先进先出)顺序执行。
2、数据构成
1)节点数据:储存的协调数据
2)节点元数据(stat结构)
3)数据大小上限:1M
3、节点类型
持久节点、临时节点(create -e /文件名 内容)、顺序节点(create -s /文件名 内容)、临时顺序节点(create -e -s /文件名 内容)
4、Watch监听机制
功能:监听znode的变化
分类:分为 data watch(数据变更getData()、exists())child watch(子节点变化getChildren())
触发watch的事件:创建(create event):exists ;删除(deleted event):getData()、exists()、getChildren();
修改(changed event) exists、getChildren();子节点(child event) :getChildren();
特点:一次性触发后被删除,需要持续甚至watch;客户端先得到watch通知后,才会看到变化结果
四、zookeeper 的特性
1、顺序一致性(Sequential Consistency),保证客户端操作是按顺序生效的;
2、原子性(Atomicity),更新成功或失败。没有部分结果。
3、单个系统映像,无论连接到哪个服务器,客户端都将看到相同的内容
4、可靠性,数据的变更不会丢失,除非被客户端覆盖修改。
5、及时性,保证系统的客户端当时读取到的数据是最新的。
本文是作者通过视频学习后作为笔记记录,如有雷同还请见谅,本人职场菜鸟,刚入门学习,欢迎大佬们指点批评,一起学习一起进步