Zookeeper应用场景:
分布式队列
FIFO(先进先出)
Barrier(同步队列)
共享锁
集群管理
leader选举
命名服务
分布式应用配置项的管理等
FIFO设计思路
1.在/queue-fifo的目录下创建 SEQUENTIAL 类型的子目录 /x(i),这样就能保证所有成员加入队列时都是有编号的。
2.出队列时通过 getChildren( ) 方法可以返回当前所有的队列中的元素,然后消费其中最小的一个,这样就能保证FIFO
Barrier设计思路:
同步队列初始化
创建一个父目录 /synchronizing,代表同步队列
进入队列
创建子节点 /synchronizing/member_i
查人数
人齐了(子节点个数=参会人员个数)
创建 /synchronizing/start,开始开会
/synchronizing/start 节点一旦创建就证明人到齐了
人不齐
等待 /synchronizing/start 的出现
共享锁实现思路:
创建锁
创建一个父节点/locks 代表同步锁
每个进程启动的同时在/locks下面建立子节点/locks/member_i,并且保存自己的IP地址
获得锁
查找/locks下子节点编号最小的哪一个,查看数据是否为自己的IP地址,如果是的话,就代表获得锁,否则继续等待
释放锁
执行完业务操作,把自己创建的节点删除,就代表释放锁
类似于火车站排队买票
集群管理::::
监控集群中的节点增加或者减少,可以动态感知
原文地址:http://blog.csdn.net/u010220089/article/details/45922519