gpt4 book ai didi

azure - 在这些情况下,如何检测意外的辅助角色故障并重新处理数据?

转载 作者:行者123 更新时间:2023-12-02 09:02:12 26 4
gpt4 key购买 nike

我想创建一个在 Windows Azure 中托管的 Web 服务。客户端将上传文件进行处理,云端将处理这些文件,生成结果文件,客户端将下载它们。

我想我将使用 Web 角色来处理 HTTP 请求,使用辅助角色来进行实际处理,并使用 Azure 队列或 Azure 表存储等来跟踪请求。让我们假设它是 Azure 表存储 - 每个用户上传的文件一个“请求”记录。

一个主要的设计问题是处理单个文件可能需要一秒到十个小时不等的时间。

因此,我预计会出现以下情况:启动辅助角色,访问 Azure 表存储,找到标记为“准备处理”的请求,将其标记为“正在处理”,开始实际处理。通常它会处理文件并将请求标记为“已处理”,但是如果它意外终止怎么办?

除非我处理它,否则请求将永远保持在“正在处理”状态。

如何跟踪标记为“正在处理”但已放弃的请求? Windows Azure 中的哪种机制对此最方便?

最佳答案

您遇到的主要问题是队列目前无法设置大于 2 小时的可见性超时。因此,您需要另一种机制来指示事件工作正在进行中。我建议您进行集体租赁。对于您处理的每个文件,您要么租用 blob 本身,要么租用 0 字节标记 blob。您的工作人员扫描可用的 blob 并尝试租用它们。如果他们获得租约,则意味着该租约尚未得到处理,他们会继续处理。如果他们未能履行租约,则必须由另一名 worker 积极处理。

工作进程完成文件处理后,它只需将文件复制到 Blob 存储中的另一个容器中(或者根据需要将其删除),这样就不会再次扫描该文件。

在队列消息可以更新之前,租约实际上是您唯一的答案。

编辑:我应该澄清一下,租约在这里起作用的原因是租约必须每 30 秒左右主动维护一次,因此您有一个非常小的窗口,您可以在其中知道是否有人拥有已去世或仍在研究中。

关于azure - 在这些情况下,如何检测意外的辅助角色故障并重新处理数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6068957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com