我在负载均衡器后面的两台机器上运行了一个C#ASP.NET Web应用程序。我们使用粘性会话,因此我们没有共享的进程外会话状态。我们的代码使用SQL数据库,我们处理信用卡。
我们需要同步执行检查数据库中条件的代码块,并尝试对信用卡收费。检查条件和执行信用卡交易必须在同一个同步块中进行。
我们提出的唯一解决方案是将此代码块移动到Web服务中,并从计算机调用该Web服务。这提出了两个问题..
1)必须由Web服务管理和返回相当复杂的数据 2)Web服务将成为另一个无法实现多余的故障点。
有哪些工具或框架可以帮助同步在不同机器上运行的代码?
答案 0 :(得分:1)
使用应用程序锁定:sp_getapplock
将您的'资源'以适当的模式(X)锁定适当的长度(从条件检查开始直到插入结束)。
答案 1 :(得分:0)
在所涉及的数据库行上放置显式锁是不够的?