CAP是架构设计理论中比较有名的一套。这里分享一下我对这个理论的浅薄理解。
C: 一致性,同一个客户端写入存储系统数据后。
如果能够立即读取到刚刚写入的数据,这个叫强一致性即所有节点同一时间看到是相同的数据;
如果不能立即而是要等一段时间则是弱一致性。
A:可用性,如果一个节点失效了,不管客户端的请求是否是否完全执行成功,能够确保每一个请求都能接收到响应。也就是不会返回error,内存溢出等报错。写入失败,就返回失败,读取最新数据失败,就返回旧有数据,这两种情况都算可用。
P:当分布式系统的部分节点和其他节点网络不通时,出现网络分区。这时网络通畅的节点仍然能够提供读写一致性和可用性
A和P的区别:A强调节点挂掉,P强调网络不通。
看了阿里的那边《大规模分布式存储原理解析与架构实战》后,感觉自己写的一套分布式系统,只有用zk实现一个读写锁,节点拆分多个可以并行,服务可扩展而已,这么简单,很多工作一两年的人都想得到。自己还沾沾自喜。
我的理解,真正的分布式系统应该首先是高性能并且可扩展,其次高可用或者强一致二者取其一。
要满足这个目标,要有大量的逻辑来实现故障检测,副本同步,分布式协调,可扩展。
spark应该算是AP架构,
HDFS算AP架构,
msyql主从集群算AP架构,
arangodb,mongodb当副本同步使用默认的异步方式时,就是AP架构,否则是CP架构