Zookeeper学习
Posted djanfey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper学习相关的知识,希望对你有一定的参考价值。
一、工作机制
zookeeper是一个基于观察者模式的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper就负责通知已经在zookeeper上注册的那些观察者做出相应的反应。
zookeeper=文件系统+通知机制
二、特点
1. zookeeper一个领导者,多个跟随者组成的集群。
2. 集群中只要有半数以上的节点存活,zookeeper就能正常服务。
3. 全局数据一致:每个Server保存一份相同的数据副本,client无论连接哪个Server,数据都是一致的。
4. 更新请求顺序执行,来自同一个client的更新请求按其发送顺序依次执行。
5. 实时性,在一定时间范围内,client能读到最新数据。
6. 数据更新原子性,要么成功,要么失败。
三、 数据结构
1. zookeeper数据结构可以看做一棵树,每个节点称作一个znode。每个znode默认能够给存储1mb数据,每个znode都可以通过其路径唯一标识。
四、 应用场景
1. 统一命名服务
2. 统一配置文件
3. 统一集群管理
4. 服务器动态上下线
5. 软负载均衡
五、zookeeper安装
A. 准备
1. 安装jdk
2. 拷贝zookeeper安装包到linux下
3. 解压到指定目录
B、修改配置
1. 进入解压目录下conf目录,创建zoo.cfg文件
2. 修改dataDir路径为解压目录+zkData
3. 在解压目录下创建zkData
C、启动
1. 启动服务器 :bin/zkServer.sh start
2. 停止服务器: bin/zkServer.sh stop
3. 查看服务器状态:bin/zkServer.sh status
4. 启动客户端:bin/zkCli.sh
5. 关闭客户端: quit
六、配置文件解析
1. tickTime=2000 心跳间隔为2s
2. initLimit=10 心跳帧为10帧
3. syncLimit=5 同步帧为5帧
4. clientPort=2181 客户端的端口号为2181
七、内部原理
A、选举机制
1. 半数机制
集群中半数以上机器存活,集群可用。所以zookeeper适合安装在奇数台服务器上。
2. zookeeper虽然没有指定master和Slave,但是工作时有一个节点为leader,其它为follower,leader是通过内部产生的
3. 选举机制
每个节点创建先投票自己,如果不能称为leader,将票数转给id大的。
八、节点类型
A、持久:客户端和服务端断开连接后,创建的节点不删除。
1.持久化目录节点
2. 持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是zookeeper给该节点名称进行顺序编号
B、短暂:客户端和服务端断开连接后,创建的节点自己删除。
1.临时目录节点
2. 临时顺序编号目录节点
九、实战
A、分布式安装部署
1.在每台服务器上安装zookeeper
2. 配置服务器编号
在解压目录下zkData创建一个myid文件,编写编号
3. 修改配置文件
添加集群:server.A=B:C:D
A:是一个数字,代表第几号服务器(myid里的值)
B:这个服务器的IP地址
C:这个服务器与集群中的leader服务器交换信息的端口(2888)
D:万一集群中的leader服务器挂了,需要一个端口来重新进行选举,选出一个新的leader,而这个端口就是用来执行选举时服务器相互通信的端口(3888)
4. 分别启动zookeeper并查看状态
B、客户端命令行操作
1. help:显示所有操作命令
2. ls path [watch] 使用ls命令来查看当前znode中所包含的内容
3. ls2 path [watch] 查看当前节点数据并能看到更新次数等数据
4. create 普通创建 -s 含有序列 -e 临时(重启或者超时消失)
5. get path [watch] 获得节点的值
6. set 设置节点的具体的值
7. stat 查看节点状态
8. delete 删除节点
9. rmr 递归删除节点
以上是关于Zookeeper学习的主要内容,如果未能解决你的问题,请参考以下文章