Zookeeper入门
2018-06-27 16:41:52 0 举报
AI智能生成
Zookeeper入门
作者其他创作
大纲/内容
概览
Apache Hadoopd的子项目
用于解决分布式应用中常遇到的一些数据管理问题
统一命名服务
状态同步服务
集群管理
分布式应用配置项的管理
...
它提供基于类似于文件系统的目录节点树方式的数据存储,但是它并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化,从而可以达到基于数据的集群管理
单机模式
zoo.cfg
tickTime
服务器之间或客户端与服务器之间维持心跳的时间间隔
每个tickTime时间就会发送一个心跳
dataDir
保存数据的目录
默认情况下Zookeeper将写数据的日志文件也保存在这个目录里
clientPort
这个端口就是客户端链接Zookeeper服务器的端口
Zookeeper会坚挺这个端口,接受客户端的访问请求
通过netstat -ano 命令查看配置的端口号是否在监听
集群模式
集群方式
多机组成集群来提供服务
伪集群:一台物理机物理机上运行多个Zookeeper实例
zoo.cfg
在单机模式的基础上增加以下配置
initLimit
指配置Zookeeper接受客户端(ZK服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少各心跳时间间隔
超过N(配置的次数)个心跳的时间(tickTime)长度后ZK服务器还没有收到客户端的返回信息,表明这个客户端连接失败
syncLimit
配置Leader与Follower之间发送消息、请求的应答时间的长度最长不能超过多少个tickTime的时间长度
server.N=A:B:C
N是数字,表示是第几号服务器
A是这个服务的IP
B是这个服务器与Leader服务器交换信息的端口
C是选举时服务器相互通信的端口,万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新Leader
如果是伪集群配置方式,由于IP一样,所以不同的ZK实例通信端口号不能一样
myid
该文件在dataDir下
有一个数据对应N的值
ZK实例启动时会读取这个文件,与zoo.cfg里的配置信息比较,从而判断自己是哪个server
数据模型
ZK会维护一个具有层次关系的数据结构,非常类似于标准的文件系统,如图1
特点
1.每个子目录项如NameService都被称作znode,是它所在的路径的唯一标识。
如Server1这个znode的标识为/NameService/Server1
2.znode可以有子节点目录,并且每个znode可以存储数据
EPHEMERAL类型的目录节点不能有子节点目录
3.znode是有版本的,每个znode中存储的数据可以又多个版本,也就是一个访问路径中可以存储多份数据
4.znode可以是临时节点
一旦创建这个znode的客户端与服务器失去连接,这个znode也将自动删除
ZK的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接
这个连接状态称为session
如果znode是临时节点,这个session失效,znode也就删除了
5.znode的目录名可以自动编号
如App1已经存在,再创建的话,将会自动命名为App2
6.znode可以被监控
包括这个目录节点中存储数据的修改,子节点目录的变化等,一单变化可以通知设置监控的客户端
这是ZK的核心特性,ZK的很多功能都是基于这个特性实现的
0 条评论
下一页