有人告诉我,我不得不放弃大型分布式系统中的交易担保,因为CAP theorem说我不能拥有它。

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

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

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

    更正?评论?火焰?

    参考:
  • 有关CAP定理的概述,请参见Julian Browne的这篇文章。here
  • wikipedia
  • CAP定理

    最佳答案

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

    你的假设不好。是的,您可以在分布式系统上进行事务处理,但随后必须等待所有事务处理。那就是您遭受可用性困扰的时候。因此,您可以具有一致性和部分容忍度,但没有可用性。

    在另一种情况下,您可以具有可用性和部分容忍度,但是没有一致性,例如MongoDB或Cassandra(已配置最终一致性)。在这种情况下,您可以有多个数据库服务器,但是您的数据将无法立即在所有服务器上使用。您遭受一致性的困扰,但是却获得了可用性和部分容忍度。

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

    关于您的观点:



    无缝可靠。



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

    其他两点确实没有太大意义。

    还有其他一些教授声称CAP不完整,并且还有很多,例如延迟。但是CAP定理是完全合理的。

    还有一个“BASE”定理(基本可用,软状态和最终一致性)。许多NoSQL数据库都赞成该定理。

    CAP theoremNoSQL上查看我的博客。

    关于distributed-computing - CAP定理是红色鲱鱼吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7969874/

  • 10-15 09:23