【问题标题】:synchronized execution across machines跨机器同步执行
【发布时间】:2009-06-10 15:36:14
【问题描述】:

我有一个 C# ASP.NET Web 应用程序在负载平衡器后面的两台机器上运行。我们使用粘性会话,因此我们没有共享的进程外会话状态。我们的代码使用 SQL 数据库并处理信用卡。

我们需要同步执行一个检查数据库中的条件并尝试向信用卡收费的代码块。检查条件和执行信用卡交易必须在同一个同步块中进行。

我们想出的唯一解决方案是将这段代码移动到 Web 服务中,然后从机器调用该 Web 服务。这提出了两个问题..

1) 相当复杂的数据必须由 Web 服务管理和返回 2) Web 服务将成为另一个无法冗余的故障点。

是否有任何工具或框架可以帮助同步在不同机器上运行的代码?

【问题讨论】:

    标签: c# .net synchronization


    【解决方案1】:

    使用应用锁:sp_getapplock

    以适当的模式 (X) 将您的“资源”锁定为适当的长度(从条件检查开始到插入结束)。

    【讨论】:

    • C# 中关于它的完整示例?我在服务器 1 中有进程 A,在服务器 2 中有进程 B。如何处理同步 A 和 B?
    • 什么是 DLM(分发锁管理器)? stackoverflow.com/a/52012330/206730
    【解决方案2】:

    在所涉及的数据库行上放置显式锁就足够了吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2012-11-19
      • 2016-01-18
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多