什么是 Azure 租赁 Blob?

What is Azure Lease Blob?

什么是 Azure Lease Blob? 它只是一种为 blob 存储提供独占锁的机制吗? 它有什么特别之处?我可以在哪里使用它?我尝试阅读 Azure 文档,但我还不清楚。

What is Azure Lease Blob? Is it just a mechanism which provides an exclusive lock to the blob storage?

您的理解是正确的。当您租用一个 blob 时,您将获得对该 blob 的独占锁。只要 blob 被租用,除了租户之外,没有人可以修改或删除 blob。您可以获取一个 temporary lease,其持续时间可以在 15 到 60 秒之间的任何地方,或者一个 infinite lease.

Where can I use it?

此功能最常由 Azure 虚拟机使用。如您所知,Azure VM 由 Azure 页面 Blob 提供支持。因此,当创建 VM 时,会在包含该 Azure VM 的 VHD 的 blob 上获得无限租约,这样其他进程就无法修改或删除该 blob。

还有一个你想使用租约 blob 功能的地方是当你想实现 Leader Election 模式时。

例如,考虑这样一个场景:您希望通过后台辅助角色处理存储在 blob 存储中的文件。进一步假设该工作者角色 运行 有多个实例,其中每个实例在 30 秒后醒来并检查容器中的 blob,如果发现任何 blob,则该实例将对其进行处理。

由于 Azure 辅助角色本质上是无状态的,如果不锁定该 blob,每个实例都会处理该 blob(这不是您想要的)。为避免这种情况,您可以让每个实例尝试获取该 blob 的租约。只有一个实例会成功(并因此被选为领导者)。其他实例将无法获取该 blob 上的锁。领导实例将处理 blob。

另一个示例是您希望在 Competing Consumers 中分配工作的地方。在我们的一个产品中,我们将这种模式与 Leader Election 模式结合使用。通过 blob 租约功能,我们找到一个领导者(能够获得 blob 租约的消费者),然后这个领导者将工作分配给其他消费者。