天天看點

Zookeeper-分布式隊列

Zookeeper-分布式隊列

分布式隊列可以簡單分為2個大類:

一種正常的FIFO先入先出隊列模型,還有一種等待隊列元素聚集後統一安排處理執行的Barrier模型。

FIFO先入先出

FIFO -First Input First Output 先入先出,FIFO,先進入隊列的請求操作先完成後,才會開始處理後面的請求

Zookeeper實作FIFO隊列,和共享鎖實作非常類似,FIFO隊列就類似于一個全寫的共享鎖模型,

Zookeeper-分布式隊列

建立節點後,

  1. 通過調用getChildren接口來擷取/queue-fifo節點下的所有子節點,擷取隊列中的所有元素。
  2. 确定自己的節點序号在所有子節點中的順序
  3. 如果自己的序号不是最小,那麼就需要等待,同時向比自己序号小的最後一個節點注冊Watcher監聽
  4. 接收到Watcher通知後,重複步驟1
Zookeeper-分布式隊列
Barrier模型

願意是指障礙物,屏障,在分布式系統中,特指系統之間的一個協調條件,規定一個隊列的元素,必須都聚集後才能統一進行安排,否則一直等待,

/queue_barrier節點是一個已經存在的預設節點,并且将節點的資料内容指派為一個數字N來代表Barrier值,例如N=10,表示隻有當/queue_barrier節點下的子節點個數達到10後,才會打開Barrier,之扣所有用戶端都會到/queue_barrier節點下建立一個臨時節點,

Zookeeper-分布式隊列

建立節點後,

  1. 通過調用getData接口擷取/queue_barrier節點的資料内容10
  2. 通過調用getChildrend接口擷取/queue_barrier節點下的所有子節點,同時注冊子節點變更的Watcher監聽
  3. 統計子節點的個數
  4. 如果子節點個數還不足10個,那麼需要等待
  5. 接受Watcher通知扣,重複步驟2
    Zookeeper-分布式隊列
下一篇: Tinymce 配置