分布式佇列實現思路

2022-05-08 02:36:08 字數 752 閱讀 4423

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

幫助我們實現跨程序、跨主機、跨網路的資料共享和資料傳遞

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下序號最下的那個節點,取出資料,然後刪除此節點

redis實現分布式鎖思路

redis 處理socket ready 事件是單執行緒執行的,也就是說redis一次只會處理乙個socket,避免了併發所帶來的資源競爭問題,可以用來實現分布式鎖.具體實現思路 通過setnx嘗試設值 currenttimestamp timeout 如果設定成功,說明類似獲取鎖操作成功,失敗則獲...

redis實現分布式鎖思路

1.利用redis的setnx命令 setnx name value 如果對應的name沒有被設定過,則會設定成功,如果設定過,則返回失敗。2.expire命令 可以對name設定過期時間,防止持有鎖的執行緒因為意外情況掛掉,導致業務阻塞。3.redis是單執行緒的機制。ps 第二條中expire命...

分布式事務實現思路

大體思路是對事務進行 手動控制事務的開啟提交。datasource connect transaction transtaction註解也是aop 自己編寫事務註解zdytranstaction實現transtration裡面的幾個方法,connect也是,對datasource connect t...