ZooKeeper

zooKeeper是一个分布式协调工具,用处十分的广泛,基本上可以总结一下几点。
(1)分布式状态下配置信息的维护:
在程序运行时我们需要维护一些配置信息,例如数据库的信息,这些可以作为配置文件让程序读取,但是在分布式状态下,如果一个配置更新了,可能和他相关的其他集群也要更新自己的信息,这个配置信息的维护变得比较困难。使用ZooKeeper可以简化这个操作。
(2)分布式锁的实现:在分布式转态下,多线程的数据同步,这个锁之前的锁已经不行了,需要支持分布式转态下的锁。
(3)集群管理:在集群操作中,如何保证在一个机器宕机之后能够及时的发现?这个ZooKeeper有一个Watcher 机制,能够观察集群中的每台机器的状态。
(4)分布式状态下唯一ID的生成。

基本结构

ZooKeeper学习 一:安装_配置信息
其实和目录树差不多,有点类似于文件系统。
Znode:树上的每个节点叫做ZooKeeper Node 就是Znode,这个存储了这个节点所有的的信息,包括编号,子节点等等。
事务 ZooKeeper对每个写操作在内部默认都是维护一个事务,保证这个树的一致性。

ZooKeeper 安装

(1)​​下载地址​​​ 这里可以把源码下载下来,自己解压一下,可以安装。
(2)mac 上如果安装了brew命令,直接brew install zookeeper。
ZooKeeper学习 一:安装_配置文件_02
这个自动就安装好了。
配置文件
mac 下安装好了的地址在:/usr/local/etc/zookeeper这个地方会有一些配置文件
ZooKeeper学习 一:安装_配置信息_03
如果没有zoo.cfg 自己cp 一份:cp zoo_sample.cfg zoo.cfg.
打开zoo.cfg:
ZooKeeper学习 一:安装_配置信息_04
这两个参数。
dataDir:这个是zookeeper持久化的一种方式,由于zookeeper是基于内存的,所以关闭之后数据就会丢失,但是他和redis一样可以持久化。这个参数的值,就是data文件夹所在的位置,如果是源码解压,这个需要自己在zookeeper的根目录下新建一个data文件夹,然后把值写到这里。
clientPort:这个就是客户端连接的默认端口号。

ZooKeeper的启动

zkServer start 启动:
ZooKeeper学习 一:安装_配置文件_05
zkServer status 查看状态:
ZooKeeper学习 一:安装_zookeeper_06
这个说他可能没有running,不用管它,但是可以:
ZooKeeper学习 一:安装_配置文件_07
查看一下打出来的日志。
客户端连接:
zkCLi:
ZooKeeper学习 一:安装_配置文件_08
显示连接上了.
quit退出:
ZooKeeper学习 一:安装_zookeeper_09
到这来基本上ZooKeeper就是OK的了

说明

(1)如果是基于源码解压,需要看看是不是已经编译好了,zooKeeper高版本直接解压是不行的,最好现在带-bin后缀的,这个是已经编译好了。
(2)如果是其他Linux系统,找到bin目录下的脚本文件,指令不是zkServer XX,变成了执行脚本传入参数的形式,例如启动:
在bin目录下有一个zkServer.sh 的脚本,启动命令就是:
sh zkServer.sh start,其他的都是一样。