簡體   English   中英

尋找有關分布式系統內記錄鎖定的建議

[英]Looking for a recommendation on record-locking within a distributed system

在記錄鎖定方面,我們正在嘗試為我們的團隊提出一種推薦的設計模式。 典型的思路如下:1.用戶從列表中選擇一條記錄2.用用戶ID鎖定該記錄3.加載鎖定的記錄記錄(不鎖定,然后有人對其打敗)。

我是否缺少某些東西,或者這似乎是唯一的方法? ((在我們的案例中,樂觀鎖定會給最終用戶帶來麻煩和混亂。通常,修改量非常大。)

可能使您的解決方案管理更加繁瑣的細節是在崩潰或連接失敗后擺脫鎖定。 這就是樂觀鎖定和悲觀鎖定之間真正權衡的地方。 當樂觀鎖定失敗時,手動合並或重做編輯是一件痛苦的事情,但是悲觀和持久鎖定模型崩潰后出現的麻煩會讓人感到頭痛(因為任何在90年代支持Pervasive支持的會計系統用戶的人都會在很長的時間內告訴您機會)

一種答案是使用RDBMS的機制來管理事務和並發:使用SELECT FOR UPDATE或任何適合您的環境和隔離級別的語法來獲取記錄。 如果您的一個客戶端崩潰或斷開連接,事務將回滾並釋放鎖。

在像網絡這樣的無連接環境中或連接經常丟失和恢復的環境中,具有會話超時的基於會話的模型也可以工作:

  • 如果會話已過期,請嘗試清除記錄上的現有鎖
  • 嘗試將記錄鎖定為sessionid(如果上一步失敗,則失敗)
  • 選擇鎖定的記錄(如果上一步失敗,則不返回記錄)

因此,當會話過期時,鎖將被釋放。 崩潰后無需手動刪除鎖,並且可以容忍客戶端/連接性問題。 但是,編碼確實需要更多的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM