分布式服务框架 Zookeeper -- 管理分布式环境中的数据: http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ 

1.zookeeper集群中每一个server中都有zoo.cfg配置,里面有配置存储数据的文件夹。不同的server存储数据的文件夹不一样。假如有三个server组成zookeeper集群,server1保存在文件夹data1。server2保存在文件夹data2。server3保存在文件夹data3。但这三个server组成一个集群总体。即zookeeper对client(外部的服务器——非zookeeper集群中的服务器)来说仅仅是一个总体的服务器。client通过
  1. zooKeeper = new ZooKeeper("localhost:2181,localhost:2182,localhost:2183", SESSION_TIMEOUT, watcher);
来訪问zookeeper,至于终于client訪问的是详细哪个server或者说是哪个server相应的数据,由zookeeper内部决定。


如上所述,server通过各自的zoo.cfg识别保存数据的文件夹data,而当client(同上)訪问zookeeper中的data时,通过文件夹data1,data2,data3各自的myid识别所訪问的数据来自哪一台zookeeper集群中的服务器(zookeeper訪问负载均衡,分流)。

也就是说zoo.cfg在写数据是发挥作用,myid在读数据时发挥作用。



2.zookeeper集群中的服务器(server)有leader和follower(还有observer)之分。而訪问zookeeper的集群服务器(client)(即上述所说的client)则通过zookeeper实现master和slave之分。

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 的操作。

——————————


To be continued ... ...


zookeeper - 暂缓 -  zookeeper获取监听server

diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用。眼下淘宝内部绝大多数系统的配置,由diamond来进行统一管理。

diamond为应用系统提供了获取配置的服务,应用不仅能够在启动时从diamond获取相关的配置,并且能够在执行中对配置数据的变化进行感知并获取变化后的配置数据。

持久配置是指配置数据会持久化到磁盘和数据库中。

关于zookeeper的自我解惑的更多相关文章

  1. 译文:javascript function中的this

    个人理解+google翻译.如有错误,请留言指正.原文来自MDN: this 简介 Javascript中一个函数的this关键字的行为相对其它语言有些不同.在严格模式和非严格模式间也有区别. 在大多 ...

  2. 烂大街的 Spring 循环依赖问题,你觉得自己会了吗

    文章已收录在 GitHub JavaKeeper ,N 线互联网开发.面试必备技能兵器谱,笔记自取. 微信搜「 JavaKeeper 」程序员成长充电站,互联网技术武道场.无套路领取 500+ 本电子 ...

  3. ZOOKEEPER解惑

    现在网上关于ZooKeeper的文章很多,有介绍Leader选举算法的,有介绍ZooKeeper Server内部原理的,还有介绍ZooKeeper Client的.本文不打算再写类似的内容,而专注与 ...

  4. ZOOKEEPER解惑[转]

    今年年初的时候,写了一篇ZooKeeper的入门文章<初识ZooKeeper>,一直到这一周,才有时间将ZooKeeper整个源码通读了一遍.不能说完全理解了ZooKeeper的工作原理与 ...

  5. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  6. zookeeper学习系列:三、利用zookeeper做选举和锁

    之前只理解zk可以做命名,配置服务,现在学习下他怎么用作选举和锁,进一步还可构建master-slave模式的分布式系统. 为什么叫Zoo?“因为要协调的分布式系统是一个动物园”. ZooKeeper ...

  7. ZooKeeper学习第六期---ZooKeeper机制架构

    一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control List) ZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制.ACL的 ...

  8. zookeeper 用法和日常运维

    本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...

  9. 部署与管理ZooKeeper(转)

    本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...

随机推荐

  1. wamp经典安装

    1,根据综述 本机 注意,现在apache2.2不能和5.5php, 2.4apache和5.5php就可以   window10    64位  vc14 apache  2.4.23  注意,虚拟 ...

  2. FT232H USB转串口,I2C,JTAG高速芯片

    随着FT232H USB2.0高速芯片的发布,英商飞特蒂亚公司(FTDI)进一步巩固了其在USB接口集成电路产品的地位.此款多功能的单通道USB转UART/FIFO接口设备可通过EEPROM配置为各种 ...

  3. hibernate一级缓存,二级缓存和查询缓存

    一级缓存 (必然存在)  session里共享缓存,伴随session的生命周期存在和消亡:   1. load查询实体支持一级缓存 2. get查询实体对象也支持 3. save保存的实体对象会缓存 ...

  4. CentOS 6.5系统下安装和配置NFS服务

    一.环境介绍: 服务器:centos 192.168.1.225 客户端:centos 192.168.1.226 二.安装: NFS的安装配置: centos 5 : 1 yum -y instal ...

  5. 解决kylin sync table报错:MetaException(message:java.lang.ClassNotFoundException Class org.apache.hive.hcatalog.data.JsonSerDe not found

    在kylin-gui中sync表default.customer_visit时报错: -- ::, ERROR [http-bio--exec-] controller.BasicController ...

  6. [3] 球(Sphere)图形的生成算法

    顶点数据的生成 bool YfBuildSphereVertices ( Yreal radius, Yuint slices, Yuint stacks, YeOriginPose originPo ...

  7. 原创D3D几何实例化的DEMO

    CUBE的几何实例化DEMO 鼠标右键按下并拖动         旋转视角WSAD                         前后左右RF                             ...

  8. RabbitMQ Zabbix 监控

    RabbitMQ Zabbix 监控 参考: https://github.com/jasonmcintosh/rabbitmq-zabbix copy api.py list_rabbit_node ...

  9. mahout源码KMeansDriver分析之四

    昨天说到为什么Configuration没有设置conf.set("mapred.job.tracker","hadoop:9000")仍然可以访问hdfs文件 ...

  10. 【泛型】Generic 参数化类型 类型转换

    参考: http://blog.csdn.net/lonelyroamer/article/details/7864531#comments http://blog.csdn.net/lonelyro ...