Zookeeper
2023-06-05 08:49:09 14 举报
AI智能生成
登录查看完整内容
Zookeeper
作者其他创作
大纲/内容
Zookeeper 是一个分布式的、开源的分布式应用程序的协调服务。是Apache Hadoop 项目下的一个子项目,是一个树形目录服务
是什么?
leader
follower
observer
集群角色
数据节点(Znode)
会话(Session)
版本(Version)
Wathcer(事件监听器),是Zookeeper中⼀个很重要的特性,Zookeeper允许⽤户在指定节点上注册 ⼀些Watcher,并且在⼀些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端, 该机制是Zookeeper实现分布式协调服务的重要特性
Watcher事件监听
CREATE:创建⼦节点的权限
READ:获取节点数据和⼦节点列表的权限。
WRITE:更新节点数据的权限
DELETE:删除⼦节点的权限。
ADMIN:设置节点ACL的权限。
ACL (Acess Control List) 权限配置
基础概念
把项目中所用到的配置文件进行抽取,所有的项目从配置管理中心获取(统一管理的目的:为了提高程序的维护性),如果把程序的配置信息保存在zk的 znode`节点下,当修改配置时,即 Znode`会发生变化,可以通过改变ZK 中某个目录节点的内容,利用Watcher 机制(监听机制)通知给各个客户端,从而更改配置
配置管理
集群管理包括集群监控和集群控制,就是监控集群机器状态,剔除机器和加入机器。zookeeper可以方便集群机器的管理,它可以实时监控znode节点的变化,一旦发现有机器挂了,该机器就会与 ZK 断开连接,对应的临时目录节点会被删除,其他所有机器都收到通知。新机器加入也是类似(添加一个创建节点的监听)
集群管理
命名服务(JNDI)
临时顺序节点
分布式锁
主要功能
整个 ZNode 节点内容包括两部分:节点数据内容和节点状态信息
ZNode节点信息
Zookeeper使⽤Watcher机制实现分布式数据的 发布/订阅 功能
Watcher 变更通知
IP
Digest
world
super
授权模式(Scheme)
授权对象(ID)
CREATE(C)
DELETE(D)
READ(R)
WRITE(W)
ADMIN(A)
权限
ACL 保证数据安全
数据模型
介绍
服务端命令
客户端命令
命令操作
原生API ZooKeeper
zkClient
Curator
程序操作
为什么需要分布式锁?
通过一个公共的组件来存储锁(就是一条数据,通过这条数据用来标识记录中是否存在锁)
实现思路
分布式锁应该具备的条件
对比
分布式锁的三种实现方式
Zookeeper分布式锁实现原理
数据订阅/发布
命名服务(JNID)
随着分布式系统规模的⽇益扩⼤,集群中的机器规模也随之变⼤,那如何更好地进⾏集群管理也显得越来越重要了。所谓集群管理,包括集群监控与集群控制两⼤块,前者侧重对集群运⾏时状态的收集,后者则是对集群进⾏操作与控制
如何快速的统计出当前⽣产环境下⼀共有多少台机器 如何快速的获取到机器上下线的情况 如何实时监控集群中每台主机的运⾏时状态
集群环境下所要面对的问题
以客户端形式存在的 Agent,在⼤规模使⽤后,⼀旦遇上需要⼤规模升级的情况,就⾮常麻烦
⼤规模升级困难
对于机器的CPU使⽤率、负载(Load)、内存使⽤率、⽹络吞吐以及磁盘容量等机器基本的物理状态, 使⽤统⼀的Agent来进⾏监控或许都可以满⾜。但是,如果需要深⼊应⽤内部,对⼀些业务状态进⾏监控,例如,在⼀个分布式消息中间件中,希望监控到每个消费者对消息的消费状态;或者在⼀个分布式任务调度系统中,需要对每个机器上任务的执⾏情况进⾏监控。很显然,对于这些业务耦合紧密的监控 需求,不适合由⼀个统⼀的Agent来提供
统⼀的Agent⽆法满⾜多样的需求
编程语⾔多样性
在传统的基于Agent的分布式集群管理体系中,都是通过在集群中的每台机器上部署⼀个 Agent,由这 个 Agent 负责主动向指定的⼀个监控中⼼系统(监控中⼼系统负责将所有数据进⾏集中处理,形成⼀系列报表,并负责实时报警,以下简称“监控中⼼”)汇报⾃⼰所在机器的状态。在集群规模适中的场景下,这确实是⼀种在⽣产实践中⼴泛使⽤的解决⽅案,能够快速有效地实现分布式环境集群监控,但是 ⼀旦系统的业务场景增多,集群规模变⼤之后,该解决⽅案的弊端也就显现出来了。
Master选举
排它锁
共享锁
应用场景
Leader 领导者
Follower 跟随者
Observer 观察者
怎么同步数据的?
搭建几台实例?
集群
ZAB【Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)】 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 协议
整个 Zookeeper 就是在【消息广播 和 崩溃恢复】之间切换。当 Leader 服务可以正常使用,就进入消息广播模式,当 Leader 不可用时,则进入崩溃恢复模式
定义
简化版本的2PC
ZAB核心
原子广播
崩坏恢复
数据同步
ZAB协议
Zookeeper
0 条评论
回复 删除
下一页