distributed-computing - CAP 定理是转移注意力吗?

标签 distributed-computing

我被告知我必须放弃大型分布式系统中的事务保证,因为 CAP theorem说我不能拥有它。

我认为这是错误的,原因如下:

  • 互联网路由非常可靠。
  • CAP 定理仅适用于两组事件机器无法通信的网络分区。
  • 几乎所有真实的网络分区都包含灾难性故障或其中一个分区非常小而另一个分区非常大而小的可以关闭的情况。
  • 机器故障本身不构成网络分区。

因此,我可以假设出于实际目的,我可以拥有事务行为,前提是我尝试保证小分区检测到它们已断开连接并关闭或以某种降级模式运行,直到连接被修复。

更正?评论?火焰?


引用资料:

  • 有关 CAP 定理的概述,请参阅 Julian Browne 的这篇文章 here
  • 关于 wikipedia 的 CAP 定理

最佳答案

Nancy Lynch 等人证明了 CAP 定理。在麻省理工学院实验室。

你的假设不好。是的,您可以在分布式系统中进行交易,但是您必须等待所有交易。那就是您遭受可用性困扰的时候。因此,您可以拥有一致性和部分容忍度,但不能拥有可用性。

另一种情况,你可以有可用性和部分容错性,但没有一致性,比如MongoDB或Cassandra(配置了最终一致性)。在这种情况下,您可以拥有多个数据库服务器,但您的数据不会立即在所有服务器上可用。您会因一致性而受苦,但会因可用性和部分容忍度而受益。

最后一种情况是最简单的一种:您具有一致性和可用性,但没有部分容忍度。想象一个单一的数据库服务器。

关于您的观点:

  • Internet routing is amazingly reliable.

无缝可靠。

  • The CAP theorem only applies to network partitions where two groups of live machines can't communicate.

CAP 定理适用于任何分布式系统。

其他两点真的没有太大意义。

还有其他一些教授声称 CAP 是不完整的,而且还有更多问题,例如延迟。但是 CAP 定理非常有意义。

还有“BASE”定理(Basically Available, Soft state, and Eventual consistency)。许多 NoSQL 数据库都支持这个定理。

CAP theorem 上查看我的博客和 NoSQL .

关于distributed-computing - CAP 定理是转移注意力吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7969874/

相关文章:

java - MPI 应用程序在使用大量库的集群配置中卡住

computer-science - 分布式系统中的逻辑顺序和全序示例

java - 计算每个重叠间隔数的最佳 MapReduce 算法

performance - 分析分布式系统

java - 如何在java中实现一个简单的心跳传感器,当另一个应用程序关闭时做出响应

hadoop - 如何在Map Reduce范式中进行减法

java - 可变速率消费者的负载平衡队列

distributed-computing - 每个微服务的客户端 vs 通用客户端 |谁负责微服务客户端?

java - 大型集群上的 Ehcache 性能