1
分布式应用的协调框架,基于观察者模式设计
2
作用类似于管家
3
4
优点:
5
可靠性:2N+1
6
可扩展性:需要时增加机器,少许修改即可,且不用停机
7
同步:服务器进程之间的相互排斥和协作。此过程有助于Apache HBase进行配置管理
8
原子性:数据转移完全成功或完全失败,但没有事务是部分的
9
序列化:根据特定规则对数据进行编码。确保应用程序运行一致。这种方法可以在MapReduce中用来协调队列以执行运行的线程
ZooKeeper的架构
客户端-服务器架构
Client(客户端)
2
分布式应用集群中的一个节点,从服务器访问信息
3
每隔一定时间,客户端向服务器发送消息告知其存活
4
客户端连接时,服务器发送确认码。如果连接的服务器没有响应,客户端会自动将消息重定向到另一个服务器。
5
Server(服务器)
6
为客户端提供所有的服务。向客户端发送确认码以告知服务器是活跃的。
7
Ensemble
8
ZooKeeper服务器组。形成ensemble所需的最小节点数为3。
9
Leader
10
服务器节点,如果任何连接的节点失败,则执行自动恢复。Leader在服务启动时被选举。
11
Follower
12
跟随leader指令的服务器节点。
数据结构
ZooKeeper文件系统的树结构
ZooKeeper节点称为 znode 。每个znode由一个名称标识,并用路径(/)序列分隔。
2
3
在图中,首先有一个由“/”分隔的znode。在根目录下,你有两个逻辑命名空间 config 和 workers 。
4
config 命名空间用于集中式配置管理
5
每个znode最多可存储1MB的数据
6
workers 命名空间用于命名。
7
8
9
Znode的类型
10
持久节点
11
即使在创建该特定znode的客户端断开连接后,持久节点仍然存在
12
默认情况下,所有znode都是持久的。
13
临时节点
14
客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除。
15
只有临时节点不允许有子节点。
16
临时节点在leader选举中起着重要作用。
17
顺序节点
18
顺序节点可以是持久的或临时的。
19
当一个新的znode被创建为一个顺序节点时,ZooKeeper通过将10位的序列号附加到原始名称来设置znode的路径
20
顺序节点在锁定和同步中起重要作用。
单机模式
解压安装包
2
tar -zxf zookeeper-3.4.10.tar.gz -C /opt/moduels
3
4
修改配置文件
5
修改文件名 /conf/zoo-simple.cfg
6
zoo.cfg
7
指定本地存储数据的路径
8
/opt/modules/zookeeper-3.4.5/data/zkData
9
10
启动服务端
11
bin/zkServer.sh start
12
13
查看状态
14
bin/zkServer.sh status
15
16
启动客户端
17
bin/zkCli.sh
分布式模式
解压安装包
2
tar -zxf zookeeper-3.4.10.tar.gz -C /opt/app/
3
修改配置文件
4
修改文件名 /conf/zoo-simple.cfg
5
zoo.cfg
6
指定本地存储数据的路径
7
/opt/app/zookeeper-3.4.5/data/zkData
8
添加服务端
9
server.1=lee01.cniao5.com:2888:3888
10
server.2=lee02.cniao5.com:2888:3888
11
server.3=lee03.cniao5.com:2888:3888
12
/data/zkData
13
vi myid
14
写入机器编号,1
15
分发文件
16
scp -r zookeeper-3.4.10/ lee02.cniao5.com:/opt/app/
17
scp -r zookeeper-3.4.10/ lee03.cniao5.com:/opt/app/
18
修改各自机器编号
19
20
启动服务端
21
bin/zkServer.sh start
22
23
查看状态
24
bin/zkServer.sh status
网友评论