Zookeeper应用场景

分布式队列

    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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值