資料內(nèi)容:
4:分布式鎖
鎖:
不同線程間,操作一個(gè)資源,存在資源競(jìng)爭(zhēng),要用到鎖。
分布式鎖在進(jìn)程與進(jìn)程之間提供了一種互斥機(jī)制,在任何時(shí)刻,只有一個(gè)進(jìn)程可以持有鎖。
鎖服務(wù)可以分為兩類:
保持獨(dú)占:
得益于ZooKeeper為我們保證了數(shù)據(jù)的強(qiáng)一致性。
就是所有試圖來(lái)獲取這個(gè)鎖的客戶端,最終只有一個(gè)可以成功獲得這把鎖。
(實(shí)現(xiàn):大家都在某個(gè)節(jié)點(diǎn)下創(chuàng)建節(jié)點(diǎn),只有一個(gè)成功,其它都是失敗的)
控制時(shí)序:
就是所有視圖來(lái)獲取這個(gè)鎖的客戶端,最終都是會(huì)被安排執(zhí)行,
只是有個(gè)全局時(shí)序了。
(實(shí)現(xiàn):創(chuàng)建有編號(hào)節(jié)點(diǎn),查詢按編號(hào)排序,取最小的編號(hào),就能得到鎖)