【问题标题】:Handling concurrent transactions in two different servers在两个不同的服务器中处理并发事务
【发布时间】:2018-08-13 11:47:35
【问题描述】:

我需要实现一个 Windows 服务,该服务从其他应用程序实时调用 REST 服务并处理该响应。 Windows 服务的目标是 -

  1. windows 服务必须从 SQL server 中批量拉取 100 条记录 数据库。
  2. 构造请求并调用 REST API。
  3. 收到响应后,更新状态并处理响应,然后 在数据库中更新。

到目前为止,此当前状态运行没有任何问题,现在由于负载增加,我们必须将同一服务的另一个实例放置在另一台服务器中。由于两个实例并行运行,我需要了解以下内容,如果有任何建议,请告诉我-

  1. 如何确保不发送相同的记录来调用 REST API 一次又一次。
  2. 在这种情况下处理并发的最佳方法是什么。

提前致谢。

【问题讨论】:

    标签: sql-server rest concurrency


    【解决方案1】:

    我的建议是在第一层处理这个问题,即从你的 sql 数据库中获取记录。

    在您的应用程序代码中,获取锁定范围内的记录并将它们标记为正在处理。 (您可以为此添加一列)。 您的应用程序应该获取 IsProcessing 值为 false 的记录。

    【讨论】:

    • 当您说锁定范围时,您是在谈论共享锁吗?不知道如何在多服务器环境中处理锁。
    • 您有两个应用程序尝试读取单个数据库中的行。第一个应用程序(在第一个服务器中)向数据库发出请求以读取一些行,然后它将它们标记为 IsProcessing。当第一个应用程序正在进行时,如果第二个应用程序尝试访问数据库,它必须等待第一个应用程序的提交。您可以使用数据库的 IsolationLevel 进行此操作。 stackoverflow.com/questions/36211341/… 会帮助你,我想
    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 2016-07-20
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多