我想知道是否有任何方法可以使用 MySQL Cluster 之类的分布式服务器对部署在多台服务器上的 asp.net Web 应用程序执行“锁定”。
例如,以更新帐户余额的经典示例为例。任何两个请求都不应同时更新同一个帐户余额。例如:
会员 1 账户余额为 100。
- 请求 A 访问服务器 1 为成员 1 的余额增加 100
- 请求 B 访问服务器 2 为成员 1 的余额增加 50
因此请求 A 将余额从 100 更新为 200 并保存。
请求 B 将余额更新为 150,并保存。
这些都发生在同一时间,因此丢失了信息,因为最终结果应该是 250。
如何锁定请求 B 必须等到请求 A 完成,直到它检索到余额。如果它是单个进程,这可以通过应用程序范围的锁来实现。但是,由于有多个独立的进程,这对于服务器 1 来说是行不通的,它没有被锁定,服务器 2 也没有
任何想法或最佳实践如何做到这一点?