Zookeeper安装(及简单介绍)
什么是ZooKeeper
它是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。它是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。
工作机制
基于观察者模式设计的分布式服务管理框架。
应用场景
- 统一命名服务
命名服务是分布式系统中较为常见的一类场景,分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等。通过命名服务,客户端可以根据指定名字来获取资源的实体、服务地址和提供者信息。例如一般用户都是通过域名来访问应用而不是IP。阿里开源分布式服务框架Dubbo中使用zookeeper来作为其命名服务,维护全局的服务列表。- 统一配置管理
(1)配置文件同步,集群中所有配置文件的信息都是一致的,对配置文件修改后,快速同步到各个节点上。
(2)Zookeeper实现配置管理。将配置信息写入到Zookeeper上的节点,然后各个客户端服务器监听这个节点,一但节点中的数据发生变化,Zookeeper将通知到各个客户端服务器。- 统一集群管理
zookeeper的两大特性:节点特性和watcher机制
(1)分布式环境中实时掌握每个节点的状态,并根据节点实时状态做出一定的调整。
(2)在实时监测到节点变化后,将节点的信息写入到Zookeeper上的节点,通过监听该节点来获取它的实时状态变化。- 软负载均衡
zookeeperk实现负载均衡就是通过watcher机制和临时节点判断哪些节点宕机来获取可用的节点来实现的,
zookeeperk会维护一个树形的数据结构,类似于window的资源管理器目录,其中 EPHEMERAL(临时)节点会随着创建它的客户端端口而被删除,利用这个特性很容易实现软负载均衡。
Zookeeper的特点
官网地址:
https://zookeeper.apache.org/
Zookeeper官方架构图
1.Zookeeper:一个领导级别的存在,监测和管理多个服务。
2.集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。
3.数据一致性:从同一客户端发起的事务请求,最终将会严格地按照顺序被应用到 ZooKeeper 中去。
4.更新请求顺序进行:来自同一个Client的更新请求按照其发送顺序依次执行。
5.原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群中 所有的机器都成功应用了某一个事务,要么都没有应用。
6.实时性:在一定时间范围,Client能读到最新的数据。
ZooKeeper的数据结构
Zookeeper数据模型的结构与Unix文件系统很类似,都是树结构。树上有若干个节点,每个节点能够存储1MB的数据,同时每个节点都是通过其路径可以唯一标识的。
ZooKeeper的安装(单机)
安装包
1、Zookeeper下载
下载地址:https://zookeeper.apache.org/releases.html#download
历史版本:https://archive.apache.org/dist/zookeeper/
本博客准备了相关安装包,请点击下载
(链接:https://pan.baidu.com/s/1xbSvIULtA4xU1FgEbVCopA 提取码:8s4d)
进行安装
安装前准备
- linux安装Jdk
- 上传Zookeeper安装包到Linux系统下
- 解压到指定目录
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
配置修改
(1)将解压后zookeeper路径下的zoo_sample.cfg修改为zoo.cfg;(或者拷贝一份也可以)
位置在解压后的conf目录下
cp zoo_sample.cfg zoo.cfg
(2)打开zoo.cfg文件,修改dataDir路径:
vim zoo.cfg
修改如下内容:
这里要改成自己的安装目录
dataDir=/usr/local/apache-zookeeper-3.6.3-bin/data
(3)zookeeper目录下创建一个data目录
mkdir data
操作Zookeeper
- 启动Zookeeper,在bin目录下执行
./zkServer.sh start - 查看zookeeper进程
ps -aux|grep zookeeper - 查看进程端口
netstat -nap|grep 进程id - 查看状态:
./zkServer.sh status - 启动客户端:
./zkCli.sh - 使用quit命令退出客户端:
quit - 停止Zookeeper:
./zkServer.sh stop