分布式佇列簡單理解就是:
幫助我們實現跨程序、跨主機、跨網路的資料共享和資料傳遞
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...