我想知道是否有任何方法可以在部署在多个服务器上的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