【问题标题】:Monitoring background tasks on a scaled environment在扩展环境中监控后台任务
【发布时间】:2018-05-12 16:10:19
【问题描述】:

我们有一个运行良好的本地解决方案 (c#.net),现在我们正在尝试迁移到云 (azure) 以利用自动缩放功能。

我们遇到了一些问题,其中之一是后台任务监控。

我们创建一个新的长时间运行的任务,如下所示:

1- Write the C# code that will be run on background
2- Run it using our own JobFramework in another thread and storing some handle for the running task
3- Keep checking the progress of the task using the handle

现在假设我们在扩展后有 2 个实例,第一个运行一些任务。

如果用户使用句柄检查任务的状态并且请求转到第二台机器,我们将得到意想不到的结果,因为它在第一台机器的某个线程上运行。

有解决这个问题的建议吗?

【问题讨论】:

    标签: c# multithreading cloud background-process scaling


    【解决方案1】:

    不知道具体情况;我来了。

    这是一个典型的纵向扩展问题(负载均衡器后面的多个实例等)。基本上对于任何依赖于其他运行状态的请求等,您需要同步它们。这与多个实例与同一个数据库通信的问题相同,因此要处理锁定等。

    我会通过在实例之外的公共位置保持状态来处理这个问题。事实上,您甚至可以使用通用数据库或缓存端点来维护状态并模拟您自己的锁等。

    另一种方法是在实例之外维护像 SQS 这样的消息队列,并且实例需要巧妙地接手工作,但这可能是一个重大变化,因此可能不容易实现。

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多