关于zookeeper的自我解惑
zooKeeper = new ZooKeeper("localhost:2181,localhost:2182,localhost:2183", SESSION_TIMEOUT, watcher);
也就是说zoo.cfg在写数据是发挥作用,myid在读数据时发挥作用。
zookeeper集群通过leader Selection推举一个leader,集群是为了若leader宕机时保证zookeeper的可用性。
而client的集群则是通过訪问zookeeper来实现(每一个client的详细实现都要訪问zookeeper)。保证client集群有master保证client的可用性。
Leader选举
ZooKeeper 须要在全部的服务(可以理解为server)中选举出一个 Leader ,然后让这个 Leader 来负责管理集群。此时,集群中的其他server则成为此 Leader 的 Follower 。
而且,当 Leader 故障的时候。须要 ZooKeeper可以高速地在 Follower 中选举出下一个 Leader 。这就是 ZooKeeper 的 Leader 机制,以下我们将简介在ZooKeeper 中, Leader 选举( Leader
Election )是怎样实现的。
此操作实现的核心思想是:首先创建一个 EPHEMERAL 文件夹节点,比如“ /election ”。
然后。每个ZooKeeper server在此文件夹下创建一个 SEQUENCE| EPHEMERAL类型的节点。比如“ /election/n_ ”。
在SEQUENCE 标志下, ZooKeeper 将自己主动地为每个 ZooKeeper server分配一个比前一个分配的序号要大的序号。此时创建节点的 ZooKeeper server中拥有最小序号编号的server将成为 Leader 。
在实际的操作中,还须要保障:当 Leader server发生问题的时候。系统可以高速地选出下一个 ZooKeeper server作为 Leader 。一个简单的解决方式是,让全部的 follower 监视 leader 所相应的节点。
当 Leader 发生问题时, Leader 所相应的暂时节点将会自己主动地被删除,此操作将会触发全部监视 Leader 的server的 watch 。这样这些server将会收到 Leader 故障的消息,并进而进行下一次的 Leader 选举操作。可是,这样的操作将会导致“从众效应”的发生。尤其当集群中server众多而且带宽延迟比較大的时候,此种情况更为明显。
在 Zookeeper 中。为了避免从众效应的发生,它是这样来实现的:每个 follower 对 follower 集群中相应的比自己节点序号小一号的节点(也就是全部序号比自己小的节点中的序号最大的节点)设置一个 watch 。
仅仅有当follower 所设置的 watch 被触发的时候。它才进行 Leader 选举操作,普通情况下它将成为集群中的下一个 Leader。
非常明显,此 Leader 选举操作的速度是非常快的。由于,每一次 Leader 选举差点儿仅仅涉及单个 follower 的操作。
——————————
zookeeper - 暂缓 - zookeeper获取监听server
diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用。眼下淘宝内部绝大多数系统的配置,由diamond来进行统一管理。
diamond为应用系统提供了获取配置的服务,应用不仅能够在启动时从diamond获取相关的配置,并且能够在执行中对配置数据的变化进行感知并获取变化后的配置数据。
持久配置是指配置数据会持久化到磁盘和数据库中。
关于zookeeper的自我解惑的更多相关文章
- 译文:javascript function中的this
个人理解+google翻译.如有错误,请留言指正.原文来自MDN: this 简介 Javascript中一个函数的this关键字的行为相对其它语言有些不同.在严格模式和非严格模式间也有区别. 在大多 ...
- 烂大街的 Spring 循环依赖问题,你觉得自己会了吗
文章已收录在 GitHub JavaKeeper ,N 线互联网开发.面试必备技能兵器谱,笔记自取. 微信搜「 JavaKeeper 」程序员成长充电站,互联网技术武道场.无套路领取 500+ 本电子 ...
- ZOOKEEPER解惑
现在网上关于ZooKeeper的文章很多,有介绍Leader选举算法的,有介绍ZooKeeper Server内部原理的,还有介绍ZooKeeper Client的.本文不打算再写类似的内容,而专注与 ...
- ZOOKEEPER解惑[转]
今年年初的时候,写了一篇ZooKeeper的入门文章<初识ZooKeeper>,一直到这一周,才有时间将ZooKeeper整个源码通读了一遍.不能说完全理解了ZooKeeper的工作原理与 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- zookeeper学习系列:三、利用zookeeper做选举和锁
之前只理解zk可以做命名,配置服务,现在学习下他怎么用作选举和锁,进一步还可构建master-slave模式的分布式系统. 为什么叫Zoo?“因为要协调的分布式系统是一个动物园”. ZooKeeper ...
- ZooKeeper学习第六期---ZooKeeper机制架构
一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control List) ZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制.ACL的 ...
- zookeeper 用法和日常运维
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
- 部署与管理ZooKeeper(转)
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
随机推荐
- Maven的POM文件parent节点不可以使用properties里面的变量
Maven的POM文件parent节点不可以使用properties里面的变量 但是如果在子项目上的parent节点是可以使用父项目里定义的properties变量 如果一开始为单项目,或者最顶层项目 ...
- 通过maven-war-plugin插件对war包分环境打包
针对多环节,从源头打包入手,当然这些都可以在运维阶段用脚本进行替换来代替 resources/environment/下有四个环境,local本地.dev开发.test测试.pre预上线.prod生产 ...
- MySQL的mysql.sock文件作用(转)
mysql.sock是可用于本地服务器的套接字文件.它只是另一种连接机制. 不包含任何数据,但仅用于从客户端到本地服务器来进行交换数据.
- LNMP下FTP服务器Pureftpd的安装和使用
LNMP一键安装包里的Pureftpd安装脚本是需要MySQL支持的,安装前需要已经安装好LNMP,这个自带一个PHP编写的用户管理界面. 安装 进入lnmp解压后的目录,执行:./pureftpd. ...
- DHT(Distributed Hash Table,分布式哈希表)
DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络. DHT全称叫分布式哈希表(Distributed Hash Table),是 ...
- poj3322 Bloxorz I
Home Problems Logout -11:24:01 Overview Problem Status Rank A B C D E F G H I J K L M N O ...
- [Asp.Net web api]基于自定义Filter的安全认证
摘要 对第三方开放的接口,处于安全的考虑需要对其进行安全认证,是否是合法的请求.目前在项目中也遇到这种情况,提供的接口因为涉及到客户铭感数据,所以在调用的时候,不能直接暴露,需要有一个认证的机制.所以 ...
- 常用NFS mount选项介绍
通过NFS挂接远程主机的文件系统时,使用一些不同的选现可以使得mount比较简单易用.这些选项可以在mount命令中使用,也可以在/etc/fstab和autofs中设定. 以下是NFS mount ...
- SQL语句200条(转)
//重建数据库 101, create database testdatabase;use database testdatabase; 102, create table tt1(id int, n ...
- java反射知识点总结
一.java反射基础 1.1 什么叫java反射? 答:程序运行期间,动态的获取类的基本信息.比如:创建对象,调用类的方法,获得类的基本结构.这样给程序设计提供了很大的灵活性.个人总结就是:根据动态需 ...