分布式隊列實現思路


分布式隊列簡單理解就是:

幫助我們實現跨進程、跨主機、跨網絡的數據共享和數據傳遞
zookeeper是一個簡單可靠的分布式隊列實現方式
Zookeeper可以處理兩種類型的隊列:
(1)同步隊列
當一個隊列的成員都聚齊時,這個隊列才可用,否則一直等待所有成員到達
例如一個班去旅游,看是否所有人都到齊了,到齊了就發車
例如有個大任務分解為多個子任務,要所有子任務都完成了才能進入到下一流程
(2)先進先出隊列
按照FIFO方式進行入隊和出隊
例如實現生產者和消費者模型
實現思路
01
同步隊列
在zookeeper中先創建一個根目錄 queue_sync,做為隊列
隊列的消費者監視/queue_sync/start節點,剛開始還沒有這個節點,所以什么都不會做
入隊操作就是在queue_sync下創建子節點,然后計算子節點的總數,看是否和隊列的目標數量相同
如果相同,創建/queue_sync/start節點,由於/queue_sync/start這個節點有了狀態變化,zookeeper就會通知監視者:隊員已經到齊了,監視者得到通知后進行自己的后續流程
02
先進先出隊列
在zookeeper中先創建一個根目錄 queue_fifo,做為隊列
入隊操作就是在queue_fifo下創建自增序的子節點,並把數據放入節點內
出隊操作就是先找到queue_fifo下序號最下的那個節點,取出數據,然后刪除此節點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM