我想知道是否有任何方法可以在部署在多個服務器上的asp.net web應用程序上執行'鎖定',使用像MySQL Cluster這樣的分佈式服務器。鎖定服務器場(asp.net)
例如,以更新帳戶餘額的經典示例爲例。沒有兩個請求應該同時更新相同的帳戶餘額。例如:
成員1個的帳戶餘額是100
- 請求A訪問服務器1至100加至構件的天平1
- 請求B訪問服務器2至50添加到成員的平衡1
因此請求A將餘額從100更新爲200並保存。
請求B將餘額更新爲150,並保存。
這些都在同一時間發生的準確,從而失去了信息,最終的結果應該是250
一個人怎麼可以鎖定,從而請求B將不得不等待,直到請求A完成,直到它檢索餘額。如果它是一個單獨的進程,這可以通過應用程序範圍的鎖來實現。但是,由於存在多個獨立進程,因此對於服務器1來說這不起作用,因此它不會被鎖定,也不能對服務器2執行任何想法或最佳實踐。
這是現代基於雲的應用程序中的典型問題。它真的取決於數據庫。如果您的數據庫支持交易,請使用它們!如果你想得到一般的想法,你應該檢查出'兩階段提交協議'作爲開始:http://en.wikipedia.org/wiki/Two-phase_commit_protocol – Nappy 2011-12-21 14:50:45