Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How CA distributed system according to Cap Theorem can exist

Tags:

cap-theorem

How can a distributed system be consistent and available - CA. Because when partition happens CA is not possible. And if we say partition wont happen then only they are CA, then all systems which are CP or AP will also be CA in case partition wont happen?

like image 794
pvjhs Avatar asked Nov 28 '17 19:11

pvjhs


2 Answers

It can't.

As often mentioned, the CAP theorem in its original form is a little misleading. It can be restated as

in the presence of the network partition, a distributed system is either available or consistent

so you are right. Generally, systems cannot be classified as CA, CP or AP only, since partition tolerance is a property of the system, which describes what to choose in case of a network partition. So it is possible that a system can behave according to AP sometimes, and CP other times (however it is not common).

Another interesting part is that RDBMS databases are often at the CA side of the triangle. This is only the case in a single node setup. Even with master (write) - slave (read) setup, the system is not CA (or if it is termed "CA" for some reason, and cannot recover from network partitions, then a split-bran scenario may happen, a new master is elected for the partition, and chaos ensues, possibly breaking the consistency of the system).

Useful read: https://codahale.com/you-cant-sacrifice-partition-tolerance/.

like image 199
David Szalai Avatar answered Oct 22 '22 22:10

David Szalai


Dr. Stonebraker says: The guidance from the CAP theorem is that you must choose either A or C, when a network partition is present. As is obvious in the real world, it is possible to achieve both C and A in this failure mode.

See this for thoughts on why CA can exist:

CA is a specification of the operating range: you specify that the system does not work well under partition or, more precisely, that partitions are outside the operating range of the system.

My background is far from these theoretical considerations and I must say it is highly confusing. I am researching distributed Blockchain systems and I don't see why those "generalized" definitions of C, A, P must always apply. If let's say 5% of nodes fail or are otherwise partitioned, the consensus still functions. If an end user is connected to a partitioned node, the node could let the user know it lost connection. I don't even see how any major Blockchain network is CP without defining conditions such as "if a certain amount of nodes fail or get partitioned, the consensus halts".

like image 24
Marcellvs Avatar answered Oct 22 '22 22:10

Marcellvs