金桔
金币
威望
贡献
回帖0
精华
在线时间 小时
|
其实CAP可以用一句非常简单的话来描述:
在分布式系统中,一致性和可用性不可兼得。
所以根本就不存在所谓的CA,除非不是分布式系统。P的含义是,系统中的所有节点可以出现非连通图而系统不受影响。
所以说P在分布式系统中是不可被排除的(是必选的),所以A和C只能二选一,这就是上面那句话。
选择C,就是强一致性,如果不连通,那么系统就不可用。
选择A,就是UUID生成算法,不需要系统之间时刻连通。在不能连通之时,理论上存在不一致的可能。
当然很多人根本无法理解什么叫做理论上存在不一致的可能。他们通常认为什么设备ID的唯一性就可以保证UUID的唯一性。但是仔细想想就知道,设备ID的唯一性也是一致性。如果我们的设备在两个不能通信的宇宙生产的,那么设备ID同样不具备理论上的唯一性。
但很多时候,我们的非连通性是短暂的,可恢复的。所以,其实CAP理论除了装逼之外并没有什么实际的指导意义。它只是告诉那些读书少而又想太多的人。无论如何在分布式系统中你不能同时(在同一时刻)满足A和C,这是理论上的不可能,不是什么奇思妙想能解决的。
事实上CAP可以用于非常多的场景。比如说比特币。根据CAP我们可以知道,如果比特币在任意时刻都可以完成交易(A),那么理论上就存在交易数据不一致的问题(C)。反之要交易数据全球唯一,那么比特币就不是在任何时刻都能交易成功。
美国总统大选也是一样,如果选民可以在任何时候投票成功,那么就不能保证任意时刻都能准确的统计出选票。所以投票必须有截止时间,截止时间之后的投票作废,这样才能统计得票数。除非你让所有投票的人都到国会门口去投票。 |
|