傳統(tǒng)的單進(jìn)程編程中,使用隊列 存儲一些數(shù)據(jù)結(jié)構(gòu)大渤,用來在多線程中共享或傳遞數(shù)據(jù),
在分布式環(huán)境下,同樣需要類似 單進(jìn)程編程中的 用來實現(xiàn)跨進(jìn)程 跨主機(jī) 跨網(wǎng)絡(luò)的數(shù)據(jù)共享和數(shù)據(jù)傳遞 -- 分布式隊列‘
zookeeper可以通過順序節(jié)點 實現(xiàn) 分布式隊列
分布式隊列指的是當(dāng)多客戶端進(jìn)入隊列后 依照排隊的順序(持久化序列化生成節(jié)點)進(jìn)行相應(yīng)的讀取
(讀取時依照節(jié)點大小排序后讀取對應(yīng)的節(jié)點數(shù)據(jù)即可 然后刪除排隊節(jié)點)
架構(gòu)圖:
zookeeper集群:
/zookeeper
/queue
/element1
/element2
/element3
客戶端請求:
生產(chǎn)者:
服務(wù)器處理請求:
消費者
生產(chǎn)者算法(入隊算法):
創(chuàng)建持久的序列化的順序節(jié)點
消費者算法(出隊算法):
1/首先讀取queue節(jié)點下的所有子節(jié)點
2/針對所有子節(jié)點 根據(jù)序列號進(jìn)行排序
3/讀取第一個子節(jié)點的數(shù)據(jù)并返回
4/刪除讀取的子節(jié)點
阻塞式:
在隊列中為空時绒障,服務(wù)器一直處于阻塞狀態(tài)直到讀取到隊列中最新的數(shù)據(jù)為止。
測試的時候注意延遲調(diào)度執(zhí)行? 入隊操作