1

在 Azure 上完成一次性工作的最佳方式是什么?

假设我们想用双列扩展关联数据库中的表。所有新条目都将在插入时由工作人员计算出这个值,但必须有人处理表中已经存在的条目。我想到了两种选择:

  1. 仅当数据库条目(例如,“JobRun”)设置为 true 时才由 worker 调用的方法,并且该方法会将条目翻转为 false。
  2. 一个单独的应用程序完成这项工作,并使用远程桌面手动下载和运行(我无法将本地应用程序连接到 Azure SQL 服务器)。

第一种选择是乱七八糟的(我应该如何处理下一次部署的代码?删除它?评论它?留下它?还有,如果我将来有另一个工作怎么办?创建一个新的数据库条目“Job2Run”? )。第二个看起来像一个廉价的黑客。我敢肯定,我想不出更好的方法。

4

1 回答 1

1

如果你想运行一次工作,你需要考虑以下几点:

  • 并发:在作业运行时,确保没有其他工作人员接手并同时运行它(您可以为此使用租约。更多信息在这里)。
  • 作业完成后,您需要跟踪(在表存储、SQL Azure 等中)作业是否成功完成。下次工作人员尝试接手工作时,它会查看 Table Storage / SQL Azure / ...,它会看到工作已完成并跳过该工作。
  • 失败:也许您的工人在工作期间崩溃了,这应该允许另一个工人毫无问题地接手工作。

在您的特定用例中,我还将考虑使用dbup 之类的工具来管理对您的架构的更新以及使用 SQL 脚本的现有数据。此类工具通过将脚本添加到数据库中的表中来跟踪已执行的脚本。

于 2013-01-18T13:40:20.133 回答