繁体   English   中英

我可以从 Azure Cosmos DB 读取/加载文档并同时获取对它的写锁吗?

[英]Can I read/load a document from Azure Cosmos DB and acquire a writing lock on it at the same time?

基本上我想知道只有一方会更改文档。 我想避免出现 2 个不同的工作者角色或不同的工作者角色实例将读取文档的相同状态,然后每个都会编写自己的修改,可能不同的情况。 顺序写入可能很容易一个接一个地进行,但这不是我想要的。

如果由于某种原因不会发生写入,则此写入锁应在一段时间后自动过期。

我听到一些谣言说这是可能的,但我在文档中找不到。

AFAIK,至少在撰写此答案时,Cosmos DB 不支持您要查找的内容(获取写锁)。 今天支持的是Optimistic Concurrency using ETags适合顺序写入的Optimistic Concurrency using ETags ,但这不是您要找的。

仔细想想,您可以利用 Blob 存储中可用的Lease功能,并将其与 Cosmos DB 写入操作结合使用。

基本上会发生的是您的工作进程将尝试在特定持续时间(15-60 秒)内获取 blob 的租约。 只有一名工人将能够获得租约。 该工作人员将有机会在获取锁定期间更新 Cosmos DB 中的文档。 另一个工作进程必须等到租约到期或第一个工作人员明确违反租约。

这有点类似于此处描述的Leader Election Patternhttps : //docs.microsoft.com/en-us/azure/architecture/patterns/leader-election

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM