In my last post I discussed the theoretical proof of the CAP theorem. Both the theorem and the proof have a limitation that might very well render them not-so-universal as assumed.
The limitation of the CAP proof
The limitation of the CAP proof (as formulated by Lynch et al) is the following: it assumes that - for the purpose of availability - requests are to be served even when there is a partition in the cluster.
A way around the limitation
There is a way around this limitation - although it may sound exotic: just make sure that there are no partitions when requests are served.
How? By simply doing the following:
- Queue requests (e.g., in JMS).
- Only process requests when there is no partition problem.
- Send responses asynchronously, for instance via email.
Since no partition (hopefully) lasts forever, this solution does not lead to livelock.
Also, note that quorum solutions exist to avoid that the complete cluster has to be up at the same time.
Is this the capitulation of CAP? Who knows…