请求互斥记录

本文关键字:记录 请求 | 更新日期: 2023-09-27 18:10:23

我正在用c#开发两种类型的应用程序。一个是web服务,一个是mvc应用程序。

两者我都有同样的问题。我试图创建一个方法,当请求时,返回一个分布式节点工作的记录。

并发性问题导致这是危险的。一旦流程A请求处理一个记录。如果进程"B"在数据库检查"A"的记录之前请求一个,它们可能都得到相同的记录,这对系统来说是不好的。

在webservice中,我有一个被称为"GetRecordToProcess"的web方法。在控制器中也有一个相应的MVC3 ActionResult来做同样的事情。

注意web service和MVC Action不需要彼此互斥。他们实际上是在两个不同的桌子上工作,但我碰巧在两个不同的项目上遇到了同样的问题。

我有一个使用互斥锁的工作版本,但是当我调用互斥锁时,进程正在运行我的CPU高达60%。等等,一个很糟糕的。有什么简单的方法吗?这似乎是一个常见的分布式计算需求,我只是不知道通用的解决方案。

请求互斥记录

后端需要负责解决并发性问题。例如,您可以创建一个CheckOut表,用于跟踪谁拥有当前签出的记录。

增强您的web服务,使GetRecordToRead()返回记录的只读版本,TryGetRecordToWrite()尝试签出记录(通过向CheckOut表添加新的签出记录),如果成功,则返回记录的可写版本