问题标签 [cap-theorem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
397 浏览

immutability - 不可变数据如何使最终的一致性变得微不足道?

我一直在阅读 Nathan Marz关于如何使用 Lambda 架构击败 CAP 定理的文章,但我不明白不可变数据如何降低最终一致性的复杂性。

以下段落摘自文章:

关键是数据是不可变的。不可变数据意味着没有更新之类的东西,因此一条数据的不同副本不可能变得不一致。这意味着没有分歧值、矢量时钟或读取修复。从查询的角度来看,一条数据要么存在,要么不存在。该数据上只有数据和功能。您无需执行任何操作来强制执行最终一致性,并且最终一致性不会妨碍对系统进行推理。

想象一下下面的例子:我有一个分布式的仅插入数据库,有两个节点 A 和 B 并且都保存记录[timestamp=1; id=1; value=10]。然后同时,对节点 A 进行插入,导致[timestamp=2; id=1; value=20]对节点 B 进行读取以获取记录id=1

与具有更新可能性的数据库相比,该示例解决最终一致性问题的复杂性如何?

0 投票
1 回答
1707 浏览

distributed-system - CAP 定理中可用性的一致性

In the wikipedia article on CAP Theorem( https://en.wikipedia.org/wiki/CAP_theorem ), it states (bold emphasis mine) "When choosing consistency over availability, the system will return an error or a time-out if particular由于网络分区,无法保证信息是最新的。”

如果是这样,选择一致性而不是可用性是否意味着我们也失去了分区容忍度?系统可能已启动,但如果它对我的所有数据访问都返回错误,那有什么好处?或者,“网络分区”是否也意味着数据分区?换句话说,如果还隐含了数据分区,则至少部分数据已知是最新的,并且可以在满足一致性要求的同时返回。

0 投票
1 回答
424 浏览

cassandra - Cassandra:地理冗余和一致性

考虑跨两个数据中心部署以实现异地冗余的 Cassandra 实例。

是否可以将此集群配置为具有一致性级别,以便我们获得地理冗余(即使整个数据中心之一停机并且实例继续与一个数据中心一起运行)和完全一致的读写。这个问题是否违反了 CAP 定理?

0 投票
1 回答
37 浏览

distributed-transactions - 在分布式事务系统中使用事务历史而不是余额

前言

CAP 定理指出,我们不能拥有严格一致且可用的分布式系统。对于交易系统(例如某些支付系统),一致性通常比可用性更受欢迎,因为我们不能容忍货币被“创造”或“销毁”的情况。

例子

A 和 B 都想将 10 美元转给 C。C 的初始余额为 15 美元。如果 A 和 B 同时读取 C 的当前余额并添加 $10,则 C 将是 $25,但应该是 $35 (15+10+10)

问题

使用交易历史记录和计算当前余额而不是存储余额是一种好习惯吗?这种方法的优缺点是什么?

我正在阅读\观看有关一致性和分布式系统的几个来源,但我没有找到任何关于此的内容。

想法

优点:

  1. “创造”/“摧毁”金钱是不可能的。
  2. 无需与其他节点同步即可提交事务。

缺点:

  1. 透支是可能的。
  2. 为了显示平衡,可能需要更多的计算。虽然它可以通过缓存过去某个时间点的平衡来缓解。

所以在我看来,这样的系统将是一致性和可用性之间的一种中间点......

0 投票
1 回答
1577 浏览

database - 根据 CAP 定理,memcached 属于哪一类?

我打算使用 memcached 数据库。根据我的要求高性能(速度)和可用性是最高优先级。(一致性可以在一定程度上进行交易)请建议使用适当的数据库。

我正在遵循CAP 定理

按类别,我的意思是 CA 或 CP 或 AP,如下图所示?

在此处输入图像描述

0 投票
2 回答
3657 浏览

cap-theorem - 根据 Cap Theorem 的 CA 分布式系统如何存在

分布式系统如何保持一致和可用 - CA。因为当分区发生时,CA 是不可能的。如果我们说不会发生分区,那么只有它们是CA,那么所有CP或AP的系统也将是CA,以防分区不会发生?

0 投票
1 回答
787 浏览

sql - CAP 理论适用于复制还是分片?

我通过了CAP。经过它之后,我的理解是 CAP 仅在复制的上下文中有意义(其中写入发生在一个节点上,即主节点,然后跨从节点复制)不适用于分片/水平扩展(其中数据基于某个键进行分区。所以不同的数据位于不同的节点上)。

理想情况下,数据在分片(主要是 NoSql DB)中将始终保持一致/可用,因为单个节点包含所需的数据,并且无需将相同的数据写入其他节点。因此,在 NoSql 中,不需要分区容忍,因为节点之间存在通信节点,除非需要复制。那么为什么 CAP 定理会出现在使用分片而不是复制的 NoSql DB 中。

对我来说,选择黑白 C 和 A 应该是有意义的,我们使用复制而不是分片,这主要发生在 SQL DB 中而不是 NOSql DB 中,但阅读谷歌上的文章主要是关于 CAP 方面的 NoSql DB

我知道我错过了 CAP 定理,但不确定它是什么?

0 投票
1 回答
320 浏览

sql - SQL DB 在 CAP 中提供 CA?

在阅读了谷歌上的几篇文章后,我看到 SQL DB 是为 CA 设计的(在 CAP 中)。

这是我的问题:-

像 oracle 这样的 SQL 数据库如何在不容忍分区的情况下提供 CA?假设我们有两个节点,一个是主节点(用于写入),另一个从节点用于读取。b/w master 和 slave 都存在网络故障,那么 RDBMS db 怎么会同时提供 CA 呢?

0 投票
4 回答
2527 浏览

mongodb - CAP 中的 Mongo 和 Cassandra?

在阅读了谷歌上的几篇文章后,我看到像 Mongo 这样的 NoSql DB 是为 CP 设计的(在 CAP 中),而 cassandra 是为 AP 设计的(在 CAP 中)

这是我的问题:-

Mongo 不能配置为提供 AP 而不是 CP 还是为 CP 严格设计的?卡桑德拉也是如此吗?

0 投票
1 回答
2063 浏览

apache-kafka - Apache Kafka 在 PACELC-Theorem 中的位置

我开始了解 Apache Kafka。这篇https://engineering.linkedin.com/kafka/intra-cluster-replication-apache-kafka文章指出 Kafka 是 CAP 定理中的 CA 系统。因此,它关注副本之间的一致性以及整体可用性。

我最近听说了一个名为 PACELC 的 CAP 定理的扩展(https://en.wikipedia.org/wiki/PACELC_theorem)。这个定理可以这样形象化:

在此处输入图像描述

我的问题是如何在 PACELC 中描述 Apache Kafka。我认为 Kafka 在发生分区时关注一致性,但如果没有发生分区怎么办?关注的是低延迟还是强一致性?

谢谢!