4 ms·
The author of CAP himself said that the CAP theorem gained undue popularity. It is an interesting theorem only because it models what partition implies in terms
by shin_lao 12y ago
The author of CAP himself said that the CAP theorem gained undue popularity. It is an interesting theorem only because it models what partition implies in terms of trade-off when they happen.
But partitions are rare. And when partitions happen, generally you can't access the partitioned area so a lot of problems disappear.
Availability isn't an on/off switch, there is a wide range of how "available" you can be and what you can do. For example you can allow reads but disallow rights.
Last but not least, the most important is what happens after the partition is over and what level of guarantees you offer regarding coherence.
- ryanobjc 12y agoAlso partition in the system definition can be as little as 'single node failure'. But I've seen plenty of systems that handle single node failure, but really get fucked when you have a network split where 50% of the nodes can talk to each other but not the other 50%. CAP theorem doesn't help you build a system that doesn't do very bad things when this happens.
- yummyfajitas 12y agoPartitions are not rare. A partition simply means that one node is not available to another, which does not have to be caused by a network failure. For example, a stop the world GC is equivalent to a network failure - the node is unreacheable at this time. So is a deployment with downtime (e.g. a 10 second restart per-node). Also, while you can't access the partitioned area, you might have nodes outside that area. The question is whether the non-partitioned nodes become useless to you or not. http://kellabyte.com/2013/11/04/the-network-partitions-are-rare-fallacy/ http://kellabyte.com/2013/11/04/the-network-partitions-are-r... https://webcache.googleusercontent.com/search?q=cache:D3htezwrrNIJ:kellabyte.com/2013/11/04/the-network-partitions-are-rare-fallacy/+&cd=1&hl=en&ct=clnk&gl=us https://webcache.googleusercontent.com/search?q=cache:D3htez...
- shin_lao 12y agoPartitions are rare relative to other events, and I was quoting Eric Brewer, the author of the CAP theorem. If you have one partition per day (which is very often) but do 100,000 request per seconds: partitions are rare. 10 seconds is hardly a partition as it is below the default TCP timeout (one minute). Also, while you can't access the partitioned area, you might have nodes outside that area. So these nodes can't access the partition and you don't have any conflict.
- _benedict 12y agoThe TCP timeout is kind of irrelevant if your application defined timeout is lower. Cassandra's default timeout is 10s, but in practice most users expect their responses in less than a second.
- yummyfajitas 12y ago10 seconds/day breaks 3 9's. The fact that this might be below the TCP timeout is irrelevant, that's almost certainly NOT the timeout that will be considered as unavailability. E.g., suppose you are delivering an advertising tag. Unavailable means > 200ms. So these nodes can't access the partition and you don't have any conflict. Conflict comes when you reconnect.