Zookeeper
文章平均质量分 85
陈工的炼气笔记
人既无名,便可专心编程
展开
-
ZooKeeper场景实践:(1)准备工作
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。有人认为ZooKeeper之于分布式的意义正如同lex/yacc之于编译的意义。我们知道lex/yacc是一套强大的语法编译工具。使用lex/yacc可以很轻松的完成许多语法规则的编写。同样道理,Zookeeper作为一个分布式的数据管理和协调框架,没有它依然可以做分布式,但是有了它,你的分布式会更轻松。本系列文章主要是从学习的角度对Zooke原创 2014-11-05 22:17:04 · 4346 阅读 · 1 评论 -
ZooKeeper场景实践:(6)集群监控和Master选举
通常用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。这样的场景中,往往有一个监控系统,实时检测集群机器是否存活。利用ZooKeeper有两个特性(读可监控,临时节点),就可以实现一种集群机器存活性监控系统原创 2014-11-05 21:56:12 · 11603 阅读 · 0 评论 -
Zookeeper场景实践:(8) 分布式队列
按照ZooKeeper典型应用场景一览里的说法,分布式队列有两种,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。第二种队列可以先建立一个/queue,赋值为n,表达队列的大小。然后每个队列成员加入时,就判断是否达到队列要求的大小,如果是可以进行下一步动作,否则继续等待队列成员的加入。比较典型的情况是,当一个大的任务可能需要很多的子任务完成才能开始进行。原创 2014-11-05 22:02:48 · 2547 阅读 · 0 评论 -
Zookeeper场景实践:(4)命名服务
利用Zookeeper很容易创建一个全局的路径,而这个路径就可以作为一个名字,它可以指向集群中的集群,提供的服务的地址,远程对象等。简单来说使用Zookeeper做命名服务就是用路径作为名字,路径上的数据就是其名字指向的实体。原创 2014-11-05 21:49:18 · 7037 阅读 · 1 评论 -
ZooKeeper场景实践:(2)集中式配置管理
在分布式的环境中,可能会有多个对等的程序读取同样的配置文件,程序可以部署在多台机器上,如果配置采用文件的话,则需要为部署该程序的机器也部署一个配置文件,一旦要修改多个配置文件,而且容易产生不一致。集中式配置管理的思路是,将配置数据集中发布到ZooKeeper的节点上,供订阅者动态获取数据。实现配置的集中式管理和动态更新。原创 2014-11-05 21:42:54 · 14334 阅读 · 0 评论 -
ZooKeeper场景实践:(7) 分布式锁
我们准备来实现互斥的锁,按照官网的思路,给定一个锁的路径,如/Lock,所有要申请这个锁的进程都在/Lock目录下创建一个/Lock/lock-的临时序列节点,并监控/Lock的子节点变化事件。当子节点发送变化时用get_children()获取子节点的列表,如果发现进程发现自己拥有最小的一个序号,则获得锁。处理业务完毕后需要释放锁,此时只需要删除该临时节点即可。简单来说就是永远是拥有最小序号的进程获得锁。原创 2014-11-05 21:59:57 · 2869 阅读 · 0 评论 -
Zookeeper场景实践:(5)分布式通知/协调
总的来说,利用Zookeeper的watcher注册和异步通知功能,通知的发送者创建一个节点,并将通知的数据写入的该节点;通知的接受者则对该节点注册watch,当节点变化时,就算作通知的到来。原创 2014-11-05 21:52:41 · 3212 阅读 · 0 评论 -
Zookeeper如何正确设置和获取watcher
Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists、getdata、getchild对于节点的不同操作会收到不同的 watcher信息。对父节点的变更以及孙节点的变更都不会触发watcher,而对watcher本身节点以及子节点的变更会触发watcher,具体参照下表。原创 2014-12-04 17:08:32 · 14622 阅读 · 2 评论