【问题标题】:Pessimistic in CosmosDBCosmosDB 中的悲观情绪
【发布时间】:2020-03-07 03:52:51
【问题描述】:

我关心在多用户系统面临并发更新的情况下如何表现。基本上我们使用存储过程来实现我们的逻辑。我知道 ETag 有一个内置的乐观并发控制,并使用HTTP 412 响应状态码来了解系统面临先决条件故障(我们可以将其视为并发更新)。

但是在我阅读更多关于msdn docs之后,我没有看到任何内置的悲观并发,我注意到有HTTP 449(retry with)状态码,但我不知道它是否是让应用程序的标志知道有并发更新吗?

我是在单主 - 单写的背景下谈论的。我们正计划将我们的预订系统从本地迁移到云端,并使用 CosmosDB 作为数据库,但在旧版本(本地)中,我们在存储过程中使用带有序列化模式的 SQL Server 来限制数据的不一致状态。

请建议或给我一些信息以在 CosmosDB 或基本上在云中实现悲观并发。

【问题讨论】:

    标签: sql azure azure-cosmosdb optimistic-locking pessimistic-locking


    【解决方案1】:

    449 表示您需要重试请求。如果您在 SDK 客户端中恢复,请重新读取,然后重试。

    对于像 Cosmos DB 这样的数据库,您需要实现分布式锁。 Martin Kleppmann 有一篇文章 How to do distributed locking 可能会有所帮助。

    但是,需要注意的是,这会极大地影响您的吞吐量。这就是 Cosmos 本身不提供悲观锁定的原因。

    希望这有帮助。

    【讨论】:

    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多