分佈式鎖

原文:https://blog.csdn.net/qq_36090463/article/details/80920253

1.什麼是分佈式鎖?

        線程鎖:主要用來給方法,代碼塊加鎖。當某個方法或某塊代碼使用鎖,在同一時刻僅有一個線程執行該方法或該代碼段。線程鎖只在同一JVM中有效果,因爲線程鎖的實現在根本上是依靠線程之間共享內存實現的,比如sychronized是共享對象頭,顯示鎖Lock是共享某個變量。
        進程鎖:爲了控制同一操作系統中多個進程訪問某個共享資源,因爲進程具有獨立性,各個進程無法訪問其他進程的資源,因此無法通過sychronized等線程鎖實現進程鎖。
        分佈式鎖:當多個進程不在同一個系統中,用分佈式鎖控制多個進程對資源的訪問。

2.分佈式鎖使用場景

        線程間併發問題和進程間併發問題都是可以通過分佈式鎖解決的,但是不建議這樣做。如果採用分佈式鎖解決這些小問題是非常消耗資源的!分佈式鎖應該用來解決分佈式情況下的多進程併發問題纔是最合適的。
        例如:線程A和線程B共享某個變量X:
        情況1)單機(單JVM)情況下:線程之間共享內存,只要使用線程鎖就可以解決併發問題。

        情況2)分佈式(多JVM)情況下:線程A和線程B很有可能不在同一個JVM中,這樣線程鎖就無法起到作用了,這時候需要分佈式鎖來解決問題。

3.分佈式鎖的實現

        以Hazalcast的分佈式鎖爲例:
分佈式鎖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章