DynamoDB 是不是仍然遵循 CAP 定理及其“强一致性”承诺?

Posted

技术标签:

【中文标题】DynamoDB 是不是仍然遵循 CAP 定理及其“强一致性”承诺?【英文标题】:Is DynamoDB still following CAP theorem with its "Strong Consistency" promises?DynamoDB 是否仍然遵循 CAP 定理及其“强一致性”承诺? 【发布时间】:2015-12-02 07:12:59 【问题描述】:

以前,DynamoDB 仅提供“最终一致性”,遵守 CAP 定理的“可用性”和“分区容限”部分。

但是现在,DynamoDB 提供了“最终一致性”之外的“强一致性”选项。这是否意味着 DynamoDB 没有遵循 CAP 定理?

【问题讨论】:

您对 Dynamo 论文感到困惑,该论文放弃了可用性的一致性。但 DynamoDB 是与 Dynamo 完全不同的服务。它天生具有很强的一致性。 如果您认为reading from Dynamo takes a longer time 是一种不可用的形式,那么它并不违反 CAP。 availability 是 CAP 中最难定义的概念,经常被误解。 【参考方案1】:

DynamoDB,处于强一致性模式,trades against availability:

当您发出高度一致的读取请求时,DynamoDB 会返回包含最新数据的响应,这些数据反映了 DynamoDB 向其返回成功响应的所有先前相关写入操作的更新。 在网络延迟或中断的情况下,强一致性读取可能不太可用。 对于 GetItem、Query 或 Scan 操作,您可以通过在请求中指定可选参数来请求强一致性读取结果。

因此,它不违反任何理论约束。

【讨论】:

也可以将来自服务的 ProvisionedThroughputExceeded(限制)和 InternalServerError(服务端复制动态、网络问题等)响应视为不可用。

以上是关于DynamoDB 是不是仍然遵循 CAP 定理及其“强一致性”承诺?的主要内容,如果未能解决你的问题,请参考以下文章

分布式基础理论之CAP 和BASE

正确理解CAP定理

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?

分布式之CAP定理和BASE理论

CAP原则(CAP定理)

分布式系统如何自己设计一个类似 Dubbo 的 RPC 框架?什么是 CAP 定理?分区容错性?