1. 程式人生 > >分散式事務以及鎖

分散式事務以及鎖

標題格

  1、非公平鎖

  2、TCC分散式事務

1、非公平鎖
  在加鎖過程,執行緒1執行,執行緒2處於等待佇列。 執行緒1執行結束,結果執行緒3搶先於執行緒2進行。這就是非公平鎖的簡單含義。
  在ReentrantLock lock = new ReentrantLock()預設的就是非公平鎖,建構函式中加入true:ReentrantLock lock = new ReentrantLock(true)。
  公平鎖原則就是執行緒3就緒後,會先檢視等待佇列是否有執行緒,有就排隊。

2、TCC分散式事務
  使用springcloud微服務,也有可能各個服務之間,沒有形成一個整體的事務
  分步實現:
    1)、try階段:多個服務之間,在操作的時候對資料庫的操作都是一個"預"操作階段,鎖定某個資源,凍結某部分資源等(把改變的資料先存

    臨時表)
    2)、confirm階段:如果服務全部通過,依靠TCC分散式事務框架來執行---加入一個confirm類,提供一個介面,將剛剛的臨時表資料,變為對

    資料庫真實的操作。(完成所有邏輯)

    3)、Cancel階段:如果某個服務掛了---也是提供一個介面,將臨時表中的資料,恢復到原資料庫中。(回滾所有邏輯)
    該事務適用於同步操作

 

參考:純潔的微笑、石杉的架構筆記、java版web專案、架構師之路、springForAll社群等公眾號。