Zookeeper-分布式队列

Zookeeper-分布式队列

分布式队列可以简单分为2个大类:
一种常规的FIFO先入先出队列模型,还有一种等待队列元素聚集后统一安排处理执行的Barrier模型。

FIFO先入先出

FIFO -First Input First Output 先入先出,FIFO,先进入队列的请求操作先完成后,才会开始处理后面的请求
Zookeeper实现FIFO队列,和共享锁实现非常类似,FIFO队列就类似于一个全写的共享锁模型,
在这里插入图片描述
创建节点后,

  1. 通过调用getChildren接口来获取/queue-fifo节点下的所有子节点,获取队列中的所有元素。
  2. 确定自己的节点序号在所有子节点中的顺序
  3. 如果自己的序号不是最小,那么就需要等待,同时向比自己序号小的最后一个节点注册Watcher监听
  4. 接收到Watcher通知后,重复步骤1

在这里插入图片描述

Barrier模型

愿意是指障碍物,屏障,在分布式系统中,特指系统之间的一个协调条件,规定一个队列的元素,必须都聚集后才能统一进行安排,否则一直等待,

/queue_barrier节点是一个已经存在的默认节点,并且将节点的数据内容赋值为一个数字N来代表Barrier值,例如N=10,表示只有当/queue_barrier节点下的子节点个数达到10后,才会打开Barrier,之扣所有客户端都会到/queue_barrier节点下创建一个临时节点,

在这里插入图片描述
创建节点后,

  1. 通过调用getData接口获取/queue_barrier节点的数据内容10
  2. 通过调用getChildrend接口获取/queue_barrier节点下的所有子节点,同时注册子节点变更的Watcher监听
  3. 统计子节点的个数
  4. 如果子节点个数还不足10个,那么需要等待
  5. 接受Watcher通知扣,重复步骤2
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值