赞
踩
百度百科:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
简单理解:
为分布式应用提供协调服务的Apache项目。
美团,饿了么,淘宝,58同城等等应用都是zookeeper的现实生活版。
Master/Slave
的管理模式。分布式和集群的区别
Zookeeper的特点
leader
和多个follower
来组成的集群。client
连接哪台server
,数据都是一致的。client
能读取到最新数据。ZooKeeper数据模型的结构与linux文件系统类似,整体上可以看作是一棵树,每个节点称做一个ZNode(ZookeeperNode)。
每一个ZNode默认能够存储1MB的数据(元数据),每个ZNode的路径都是唯一的。
元数据(Metadata):又称中介数据、中继数据,是一种描述数据的数据(data about data),主要作用是描述数据属性(property)的信息,用来支持指示存储位置、历史数据、资源查找、文件记录等功能。
将配置管理交给Zookeeper:
下载地址:http://archive.apache.org/dist/zookeeper/
压缩包之间的区别:
bin
后缀的压缩包(如apache-zookeeper-3.6.0.tar.gz
)需要安装maven,然后再运行mvn clean install
和mvnjavadoc:aggregate
,前一个命令会下载安装大量jar包,花费时间较长。bin
后缀的压缩包(如apache-zookeeper-3.6.0-bin.tar.gz
)已经自带所需要的各种jar包。【推荐下载】apache-zookeeper-3.6.0-bin.tar.gz
到opt
目录 tar -xf apache-zookeeper-3.6.0-bin.tar.gz
mv apache-zookeeper-3.6.0-bin zookeeper
/opt/zookeeper/
目录上创建zkData
和zkLog
目录mkdir zkData zkLog
/opt/zookeeper/conf
路径,复制一份 zoo_sample.cfg
文件并命名为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
zoo.cfg
文件,修改dataDir
和dataLogDir
路径dataDir=/opt/zookeeper/zkData
dataLogDir=/opt/zookeeper/zkLog
# 启动Zookeeper
[root@localhost bin] ./zkServer.sh start
# 查看进程是否启动
[root@localhost bin] jps
# QuorumPeerMain:zookeeper集群的启动入口类,用来加载配置启动QuorumPeer线程
# 查看状态
[root@localhost bin] ./zkServer.sh status
# 启动客户端
[root@localhost bin] ./zkCli.sh
# 退出客户端
[zk: localhost:2181(CONNECTED) 0] quit
配置文件zoo.cfg
中各参数的含义解读:
配置参数 | 说明 |
---|---|
tickTime=2000 | 通信心跳数,Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,单位毫秒 |
initLimit=10 | LF初始通信时限; 集群中的 Follower 跟随者服务器与Leader 领导者服务器之间,启动时能容忍的最大心跳数;10 * 2000 (initLimit * tickTime )个时间单位后若领导与跟随者仍未发出心跳通信,则视为连接已失效,领导者与跟随者彻底断开 |
syncLimit=5 | LF同步通信时限; 集群启动后, Leader 与Follower 之间的最大响应时间单位;若响应超过 syncLimit * tickTime 个时间单位,Leader 就会认为Follwer 已经死掉,将Follwer 从服务器列表中删除 |
dataDir | 数据文件目录 + 数据持久化路径;主要用于保存Zookeeper中的数据 |
dataLogDir | 日志文件目录 |
clientPort=2181 | 客户端连接端口;监听客户端连接的端口 |
半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。
虽然在配置文件中并没有指定
Master
和Slave
。但在Zookeeper工作时,会有一个节点作为Leader
,其他作为Follower
,Leader
通过内部的选举机制临时产生。
persistent
):
persistent
):客户端与zookeeper断开连接后,该节点依旧存在persistent_sequential
):客户端与zookeeper断开连接后,该节点依旧存在,创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护,例如:Znode001,Znode002…ephemeral
):
ephemeral
):客户端和服务器端断开连接后,创建的节点自动删除ephemeral_sequential
):客户端与zookeeper断开连接后,该节点被删除,创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护,例如:Znode001,Znode002…序号相当于
i++
,与数据库中的主键自增类似。
main
方法中创建Zookeeper客户端的同时会创建两个线程,一个负责网络连接通信,一个负责监听get path [watch]
ls path [watch]
process
方法(需要我们手动实现process
方法)赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。