Zookeeper应用场景

来源:互联网 发布:修改图片文字软件 编辑:程序博客网 时间:2024/05/21 01:31

分布式队列

    FIFO(先进先出)

    Barrier(同步队列)

共享锁

集群管理

 leader选举

命名服务

分布式应用配置项的管理等


FIFO设计思路

1.在/queue-fifo的目录下创建 SEQUENTIAL 类型的子目录 /x(i),这样就能保证所有成员加入队列时都是有编号的。

2.出队列时通过 getChildren( ) 方法可以返回当前所有的队列中的元素,然后消费其中最小的一个,这样就能保证FIFO


Barrier(同步队列)

当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达,这种是同步队列。

例如:远程会议,所有人到齐了,才开始

Barrier设计思路

同步队列初始化

创建一个父目录 /synchronizing,代表同步队列

进入队列

创建子节点 /synchronizing/member_i

查人数

人齐了(子节点个数=参会人员个数)

创建 /synchronizing/start,开始开会

/synchronizing/start 节点一旦创建就证明人到齐了

人不齐

等待 /synchronizing/start 的出现


共享锁

Zookeeper 可以实现跨进程或者在不同 Server 之间的共享

创建锁

创建一个父节点/locks 代表同步锁

每个进程启动的同时在/locks下面建立子节点/locks/member_i,并且保存自己的IP地址获得锁

查找/locks下子节点编号最小的哪一个,查看数据是否为自己的IP地址,如果是的话,就代表获得锁,否则继续等待

释放锁

执行完业务操作,把自己创建的节点删除,就代表释放锁


0 0