zookeeper官网下载地址:http://zookeeper.apache.org/dyn/closer.cgi/zookeeper
概述:随着互联网技术的发展以及业务的不断更迭,对计算机系统的计算,存储能力要求越来越高,单纯依靠少量高性能单机完成计算很难满足需求,从而走向了分布式,所谓的分布式把一个计算任务分解成若干个计算单元,并分派到不同的计算机中执行,而zookeeper则是为分布式系统提供一个协调作用。简单的来说其实就是一个分布式锁服务组件
zookeeper为了保证高可用,最好是以集群的形态部署,容忍一定的机器故障
zookeeper将数据保存在内存中,保证了高吞吐量和低延迟(但是内存限制了存储的容量)
zookeeper是高性能的,在于读操作,因为写操作会导致所有服务器间同步状态
【二】zookeeper的特点
1、zookeeper是由一个领导者(leader),多个跟随者(follewer)组成的分布式集群
2、Lead负责进行投票的发起和决议,更新系统状态
3、follwer负责接受客户端的请求,并把最终的结果返回客户端,并且参与Leader过程中的选举,不能处理写的请求,如果是这种类型的请求,会转发给leader,只能处理读的请求
4、集群中只要有半数以上的节点存活,zookeeper集群就能正常服务
5、全局数据一致性,zookeeper中每个节点存放的数据是一模一样的,客户端不管连接哪个服务端都是可以
6、有序处理请求,按照请求的顺序
7、数据的原子性,更新数据要么所有节点都成功,要么失败
8、实时性,客户端在连接zookeeper读取数据,在一定的时间范围内读取到最新的数据
【三】zookeeper数据结构
zookeeper是一个文件系统。数据结构跟linux文件系统很相似,树形结构。每个节点叫做znode,每个znode默认存储1MB的数据
【四】zookeeper应用场景
1、统一配置管理
分布式环境中,一个集群中,所有节点的配置信息都是一致的,利用zookeeper能够快速同步到各个节点上
2、软负载均衡
3、统一集群管理
分布式环境中,需要实时掌握每个节点的状态
4、分布式锁
5、命名服务
6、基于有序节点实现分布式全局ID
【五】zookeeper安装基本步骤(linux环境单节点)
1、安装基本步骤,安装jdk。步骤详见:https://blog.csdn.net/weixin_42558742/article/details/88973008
2、下载zookeeper压缩包,下载路径上面有
3、解压到指定目录
命令:tar -zxvf (zookeeper包名) -C (指定目录)
4、修改配置文件
将conf路径下的zoo_sample.cfg文件复制并命名zoo.cfg
命令:cp 原文件名 新文件名(cp zoo_sampple.cfg zoo.cfg)
打开zoo.cfg文件,修改配置文件(vim zoo.cfg)
启动zookeeper服务,进入Bin目录下
查看状态命令: ./zkServer.sh status 查看进程命令:jps -l
zookeeper集群环境搭建基本步骤
1、修改zoo.cfg配置文件
server.A=B:C:D
A:是一个数字,表示这个是第几号服务器,唯一标识符, 不允许重复,
B:是这个服务器的ip地址
C:Leader和follwer通信的端口号
D:Leader死掉之后,重新选举Leader,是follwer之间通信的端口号
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有个数值就是A的值,Zookeeper在启动的时候会读取该文件,拿到里面的数据与zoo.cfg里卖弄的配置信息比较从而判断到底是哪个server
2、vim myid 输入对应的编号
3、其他几台服务器上配置重复第一步和第二部,注意myid不要弄错
4、启动zookeeper每个节点,查看节点状态可能会出现以下状况
出现这种问题要么就是配置没配置对,要么就是防火墙没有关闭,大部分原因应该是防火墙的原因
查看防火墙命令:service iptables status
启动防火墙命令:service iptable start
关闭防火墙命令:service iptables stop
关闭防火墙之后,在查看zookeeper节点状态
【六】、相关命令节点的唯一性
1、创建节点 create
1、顺序节点:-s
2、统一级别的节点不能存在重复
3、临时节点:-e
4、创建节点的时候,必须要带上全路径
临时节点:当服务提供者挂掉之后,相当于这个服务的会话已经断掉,zk上节点自动删除
持久化节点:服务集群化第一层目录,如一个支付服务,构成了一个集群 /order-service/node1,order-service可以当作持久化节点,node1当作临时节点
watcher机制:监听节点的变化,只会收到一次的事件 get -w对节点进行监听,监听事件触发后,事件就失效了
2、删除节点 delete
1、节点只能一层一层的删除
2、deleteall可以删除含有多层的节点
3、更新节点 set