关于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,补充一些作者运维实践中的要 ...
随机推荐
- MySQL命令行工具各功能说明(转)
MySQL 服务器端使用工具程序 mysqld - SQL 后台程序(即 MySQL 服务器进程).该程序必须启动运行,才能连接服务器来访问数据库. mysqld_safe - 服务器启动脚本,可以通 ...
- How far away ?(DFS)
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- Go 收藏
Golang 定位解决分布式系统,服务器应用开发,主要竞争对手是 Java.Python 之类:Rust 定位解决单机安全问题,高性能场景偏系统底层开发,主要竞争对手就是 C 和 C++. Golan ...
- Linux内核中container_of函数详解
http://www.linuxidc.com/Linux/2016-08/134481.htm
- Property Finder – a Cross-Platform Xamarin MonoTouch Mobile App
Developers are now finding themselves having to author applications for a diverse range of mobile pl ...
- 委托、多播委托、泛型委托Func,Action,Predicate,ExpressionTree
当试图通过一个事件触发多个方法,抽象出泛型行为的时候,或许可以考虑使用委托. 通过委托构造函数或委托变量把方法赋值给委托 private delegate double DiscountDel ...
- python笔记32-ddt框架优化(生成html报告注释内容传变量)
前言 至于什么是ddt这个可以参考我之前写的博客内容,使用ddt框架的时候,有个问题困扰我很久了,一直没得到解决(也有很大小伙伴问过我,没解决抱歉了!) 这个问题就是:如何使用ddt框架时,生成的ht ...
- 我所理解的设计模式(C++实现)——解释器模式(Interpreter Pattern)
概述: 未来机器智能化已然成为趋势,现在手机都能听懂英语和普通话,那我大中华几万种方言的被智能化也许也是趋势,我们的方言虽然和普通话相似,但是还是不一样的.这可能需要一个新的语法分析器来帮助我们. 我 ...
- 3Sum Closest leetcode java
题目: Given an array S of n integers, find three integers in S such that the sum is closest to a given ...
- Butter Knife 黄油刀
简介 Github:https://github.com/JakeWharton/butterknife 文档 特点: 采用注解的方式实现强大的View绑定和Click事件处理功能,简化代码,提升开 ...