zookeeper应用场景!

来源:互联网 发布:网络安全技术高峰论坛 编辑:程序博客网 时间:2024/05/20 21:59

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地址,如果是的话,就代表获得锁,否则继续等待
释放锁
执行完业务操作,把自己创建的节点删除,就代表释放锁


类似于火车站排队买票






集群管理::::

监控集群中的节点增加或者减少,可以动态感知




0 0