Zookeeper

Zookeeper

ZooKeeper概述:
Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper本质上是一个分布式的小文件存储系统。
提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用 来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的 集群管理

Zookeeper本质:
分布式:意味着可以多台机器部署
小文件:意味着存储的东西大小限制
存储系统:存储文件 有目录概念

ZooKeeper特性:
1.全局数据一致:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;
2.可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。
3.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发 布,a必将排在b前面。
4.数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
5.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息

主从集群 主备集群 :
主从集群:
主角色 master leader 大哥
从角色 slave follower 小弟
常见的是一主多从架构,主角色各司其职共同配合,对外提供服务
主备集群:
主角色 active
备角色 standby
常见解决单点故障 最常见是一主一备 主角色发生故障备角色会切换主角色
同一时间只会有一个主角色对外提供服务
Zookeeper是一个标准的主从集群(大数据大部分软件是主从集群)
主角色 leader:事务性请求的唯一处理者和调度者 :全局同意协调管理各个从角色(follower)
从角色 follower:响应非事务性的请求 :转发事务性请求给主角色(leader)

观察者角色 observer:
没有投票选举权的fokkower 转发是事务性请求给主角色(leader)
通常用于zookeeper集群扩大读的能力

ZooKeeper集群角色
主角色Leader:
Zookeeper集群工作的核心
事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;
集群内部各个服务器的调度者。
对于create,setData,delete等有写操作的请求,则需要统一转发给leader处理,leader 需要决定编号、执行操作,这个过程称为一个事务。
从角色Follower:
处理客户端非事务(读操作)请求,转发事务请求给Leader;
参与集群Leader选举投票。
此外,针对访问量比较大的zookeeper集群,还可新增观察者角色。
观察者Observer:
观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来
处理客户端非事务(读操作)请求,转发事务请求给Leader;
不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前 提下提升集群的非事务处理能力。

Zookeeper集群搭建前提
● Zookeeper集群搭建指的是ZooKeeper分布式模式安装。通常由2n+1台servers组成。
● 这是因为为了保证Leader选举(基于Paxos算法的实现)能过得到多数的支持,所以Zookeeper集群的数量一般为奇数。
● Zookeeper运行需要java环境

启动ZooKeeper集群
方式一:使用自带的命令 每个机器逐个启动
bin目录下:
zkServer.sh start 启动命令
zkServer.sh stop 关闭命令
kServer.sh status 查看状态命令
查看集群状态
jps(查看进程)
zkServer.sh status(查看集群状态,主从信息)
zk的进程:QuorumPeerMain方式二:写个shell 一键启动脚本 就是指在一台机器上运行shell脚本程序 由shell ssh登录到各个机器上 帮你启动或者关闭服务.
ZooKeeper数据模型
ZooKeeper的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间,都是采用树形层次结构,ZooKeeper树中的每个节点被称为Znode。和文件系统的目录树一样,ZooKeeper树中的每个节点可以拥有子节点。
特点:
1.Znode兼具文件和目录两种特点。
2.Znode具有原子性操作.
3.Znode存储数据大小有限制。每个Znode的数据大小至多1M.
4.Znode通过路径引用
他们必须由斜杠字符/来开头。除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这 些路径不能改变。
每个Znode由3部分组成:
① stat:此为状态信息, 描述该Znode的版本, 权限等信息
② data:与该Znode关联的数据
③ children:该Znode下的子节点4.2.节点类型
节点的类型在创建时即被确定,并且不能改变。
Znode有两种,分别为临时节点和永久节点。
临时节点:该节点的生命周期依赖于创建它们的会话。会话结束,临时节点将被自动删除,当 然也可以手动删除。 临时节点不允许拥有子节点。
永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。
Znode还有一个序列化的特性,如果创建的时候指定的话,该Znode的名字后面会自动追加一个不 断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后 顺序。它的格式为“%10d”(10位数字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值