集群与负载均衡技术学习笔记二 分布式应用程序协调服务zookeeper
来源:互联网 发布:宝宝早教软件 编辑:程序博客网 时间:2024/05/17 06:19
zookeeper 的使用
简介
Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务。 它是Hadoop生态系统的重要组件。与之对应的Google类似的服务叫:Chubby
数据模型
基本概念
角色
- 领导者
- 学习者
- 客户端
设计目的
- 最终一致性
- 可靠性
- 实时性
- 等待无关
- 原子性:更新只能成功或失败,没有中间状态。
- 顺序性
原理
Zookeeper的核心是原子广播,保证各个Server之间的同步。实现这个机制的协议叫作Zab协议。Zab协议有两种模式:恢复模式(选主)和广播模式(同步)。
每个Server在工作过程中有三种状态:
- LOOKING
- LEADING
- FOLLOWING
重要概念
Znode,分为:
- Regular ZNode常规型Znode,用户需要显式的创建、删除
- Ephemeral ZNode:临时型Znode,用户创建它之后,可以显式的删除,也可以在创建它的Session结束后,由ZooKeeper Server自动删除。
ZNode还有一个Sequential特性,如果创建的时候指定的话,该ZNode的名字后面会自动Append一个不断增加的SequenceNo。
Session
Client与ZooKeeper之间的通讯,需要创建一个Session,这个Session会有一个超时时间。因为ZooKeeper集群会把Client的Session信息持久化,所以在Session没超时之前,Client与ZooKeeper Server的连接可以在各个ZooKeeper Server之间透明地移动。
Watcher
ZooKeeper支持一种Watch操作,Client可以在某个ZNode上设置一个Watcher,来Wathcer该Znode上的变化。如果该Xnode上有相应的变化,就会触发这个Watcher,把相应的事件通知给设置Watcher的Client。Watcher是一次性的,触发一次就会被取消。
ZooKeeper特性
读、写(更新)模式
WAL和Snapshot
FIFO
Linearizability
ZooKeeper ClientAPI
- create(path,data,flags) 创建Znode
- delete(path,version) 删除Znode
- exists(path,watch) 判断指定的Znode是否存在
- getData(path,watch) 读取指定Znode上的数据,并设置是否watch这个Znode
- setData(path,watch) 更新
- getChildren(path,watch) 获取子ZNode
- sync(path) 把所有在Sync之前的更新操作都进行同步,达到每个请求都在半数以上的ZooKeeper Server上生效。
- setAcl(path,acl) 设置Acl
- getAcl(path) 获取Acl
主流应用场景
- 名称服务
分布式应用中,通常需要一套完备的命令机制,既能产生唯一的标识,又方便识别记忆。 - 配置管理
- 组员管理
- 简单互斥锁
- 互斥锁
- 读写锁
- 屏障
- 双屏障
本文学习参考:
http://cailin.iteye.com/blog/2014486/
http://blog.csdn.net/xinguan1267/article/details/38422149
0 0
- 集群与负载均衡技术学习笔记二 分布式应用程序协调服务zookeeper
- 分布式应用程序协调服务zookeeper
- ZooKeeper分布式应用程序协调服务
- 分布式应用程序协调服务Zookeeper
- 分布式协调服务zookeeper-集群安装
- Zookeeper(分布式应用程序协调服务)
- Zookeeper: 一个分布式应用程序协调服务
- hadoop之 Zookeeper 分布式应用程序协调服务
- 浅谈分布式服务协调技术 Zookeeper
- 浅谈分布式服务协调技术 Zookeeper
- 浅谈分布式服务协调技术 Zookeeper
- 浅谈分布式服务协调技术 Zookeeper
- 集群与负载均衡技术学习笔记一 负载均衡策略
- 分布式协调服务---Zookeeper
- 分布式协调服务ZooKeeper
- 分布式协调服务-Zookeeper
- 分布式协调服务Zookeeper
- zookeeper分布式协调服务
- 重装win7+uefi+gpt
- sizeof 和 strlen
- 11、数据库连接池DBCP的使用
- nginx的location配置详解
- JAVA使用JDBC连接MySQl
- 集群与负载均衡技术学习笔记二 分布式应用程序协调服务zookeeper
- Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
- Execution failed for task ‘:app:compileDebugAidl’: aidl is missing”解决办法
- 线性代数复习八——正交性、二次型和对称矩阵
- Swift语法--continue和break的标签用法
- php如何在原来的时间上加一天?一小时?
- Linux启动过程详解
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- 《计算机组成原理》计算机有哪些分类?